Packages

Elixir Linear Algebra (ELA for short) contains functionality for working with both vectors and matrices.

Current section

Files

Jump to
ela test vector_test.exs
Raw

test/vector_test.exs

defmodule VectorTest do
use ExUnit.Case, async: true
doctest ELA.Vector
alias ELA.Vector, as: Vector
test "create vector" do
assert Vector.new(3) === [0, 0, 0]
end
test "create vectors with non-number elements" do
assert_raise ArgumentError, fn() -> Vector.new('b') end
end
test "multiplication with scalar" do
v = [2, 2, 2]
assert Vector.scalar(v, 2) == [4, 4, 4]
end
test "Dot product" do
u = [1, 2, 1]
v = [2, 2, 2]
assert Vector.dot(u, v) == 8
end
test "multiply vectors with different size" do
u = [1, 2, 1]
v = [2, 2]
assert_raise ArgumentError, fn() -> Vector.dot(u, v) end
end
test "multiply empty vectors" do
u = []
v = []
assert Vector.dot(u , v ) === 0
end
test "add vectors" do
u = [1, 2, 1]
v = [2, 2, 2]
assert Vector.add(u , v) === [3, 4, 3]
end
test "add vectors with different size" do
u = [1, 2, 1]
v = [2, 2]
assert_raise ArgumentError, fn() -> Vector.add(u, v) end
end
test "adding empty vectors" do
u = []
v = []
assert Vector.add(u, v) === []
end
test "subtracting vectors" do
u = [1, 2, 1]
v = [2, 2, 2]
assert Vector.sub(u , v) == [-1, 0, -1]
end
test "subtracting vectors with different size" do
u = [1, 2, 1]
v = [2, 2]
assert_raise ArgumentError, fn() -> Vector.sub(u, v) end
end
test "subtracting empty vectors" do
u = []
v = []
assert Vector.sub(u, v) === []
end
test "cross product" do
u = [1, 2, 1]
v = [2, 2, 2]
assert Vector.cross(u, v) === [2, 0, -2]
end
test "cross product with vectors not having three elements" do
u = [1, 2]
v = [2, 2]
assert_raise ArgumentError, fn() -> Vector.cross(u, v) end
end
test "hadmard product" do
u = [1, 2]
v = [2, 2]
assert Vector.hadmard(u, v) === [2, 4]
end
test "hadmard product for vectors with different size" do
u = [1]
v = [2, 2]
assert_raise ArgumentError, fn() -> Vector.hadmard(u, v) end
end
test "transpose vector" do
v = [1, 1, 1]
u = Vector.transp(Vector.transp(v))
assert u === v
end
test "norm of vector" do
v = [3, 4]
assert Vector.norm(v) === 5.0
end
end