diff tests/test_matrix.nim @ 477:f226c99b5043

add: matrix multiplications, tests
author Sam <sam@basx.dev>
date Fri, 30 Dec 2022 15:56:17 +0700
parents d4750f2e0760
children 9edca5dc4e93
line wrap: on
line diff
--- a/tests/test_matrix.nim	Wed Dec 28 20:33:15 2022 +0700
+++ b/tests/test_matrix.nim	Fri Dec 30 15:56:17 2022 +0700
@@ -32,144 +32,6 @@
 proc randVec4F(): auto = newVec4(rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01)
 
 
-proc testVector() =
-  echoInfo(randVec2I())
-  echoInfo(randVec2F())
-  echoInfo(randVec3I())
-  echoInfo(randVec3F())
-  echoInfo(randVec4I())
-  echoInfo(randVec4F())
-
-  # test math operations vector-vector
-  echoAdd(randVec2I(), randVec2I())
-  echoAdd(randVec2F(), randVec2F())
-  echoAdd(randVec3I(), randVec3I())
-  echoAdd(randVec3F(), randVec3F())
-  echoAdd(randVec4I(), randVec4I())
-  echoAdd(randVec4F(), randVec4F())
-  echoSub(randVec2I(), randVec2I())
-  echoSub(randVec2F(), randVec2F())
-  echoSub(randVec3I(), randVec3I())
-  echoSub(randVec3F(), randVec3F())
-  echoSub(randVec4I(), randVec4I())
-  echoSub(randVec4F(), randVec4F())
-  echoMul(randVec2I(), randVec2I())
-  echoMul(randVec2F(), randVec2F())
-  echoMul(randVec3I(), randVec3I())
-  echoMul(randVec3F(), randVec3F())
-  echoMul(randVec4I(), randVec4I())
-  echoMul(randVec4F(), randVec4F())
-  echoDiv(randVec2I(), randVec2I())
-  echoDiv(randVec2F(), randVec2F())
-  echoDiv(randVec3I(), randVec3I())
-  echoDiv(randVec3F(), randVec3F())
-  echoDiv(randVec4I(), randVec4I())
-  echoDiv(randVec4F(), randVec4F())
-  echoDot(randVec2I(), randVec2I())
-  echoDot(randVec2F(), randVec2F())
-  echoDot(randVec3I(), randVec3I())
-  echoDot(randVec3F(), randVec3F())
-  echoDot(randVec4I(), randVec4I())
-  echoDot(randVec4F(), randVec4F())
-  echoCross(randVec3I(), randVec3I())
-  echoCross(randVec3F(), randVec3F())
-
-
-  # test math operations vector-scalar
-  echoAdd(randVec2I(), rand(1 .. 10))
-  echoAdd(randVec2F(), rand(10'f))
-  echoAdd(randVec3I(), rand(1 .. 10))
-  echoAdd(randVec3F(), rand(10'f))
-  echoAdd(randVec4I(), rand(1 .. 10))
-  echoAdd(randVec4F(), rand(10'f))
-  echoSub(randVec2I(), rand(1 .. 10))
-  echoSub(randVec2F(), rand(10'f))
-  echoSub(randVec3I(), rand(1 .. 10))
-  echoSub(randVec3F(), rand(10'f))
-  echoSub(randVec4I(), rand(1 .. 10))
-  echoSub(randVec4F(), rand(10'f))
-  echoMul(randVec2I(), rand(1 .. 10))
-  echoMul(randVec2F(), rand(10'f))
-  echoMul(randVec3I(), rand(1 .. 10))
-  echoMul(randVec3F(), rand(10'f))
-  echoMul(randVec4I(), rand(1 .. 10))
-  echoMul(randVec4F(), rand(10'f))
-  echoDiv(randVec2I(), rand(1 .. 10))
-  echoDiv(randVec2F(), rand(10'f))
-  echoDiv(randVec3I(), rand(1 .. 10))
-  echoDiv(randVec3F(), rand(10'f))
-  echoDiv(randVec4I(), rand(1 .. 10))
-  echoDiv(randVec4F(), rand(10'f))
-
-  # test math operations scalar-vector
-  echoAdd(rand(1 .. 10), randVec2I())
-  echoAdd(rand(10'f), randVec2F())
-  echoAdd(rand(1 .. 10), randVec3I())
-  echoAdd(rand(10'f), randVec3F())
-  echoAdd(rand(1 .. 10), randVec4I())
-  echoAdd(rand(10'f), randVec4F())
-  echoSub(rand(1 .. 10), randVec2I())
-  echoSub(rand(10'f), randVec2F())
-  echoSub(rand(1 .. 10), randVec3I())
-  echoSub(rand(10'f), randVec3F())
-  echoSub(rand(1 .. 10), randVec4I())
-  echoSub(rand(10'f), randVec4F())
-  echoMul(rand(1 .. 10), randVec2I())
-  echoMul(rand(10'f), randVec2F())
-  echoMul(rand(1 .. 10), randVec3I())
-  echoMul(rand(10'f), randVec3F())
-  echoMul(rand(1 .. 10), randVec4I())
-  echoMul(rand(10'f), randVec4F())
-  echoDiv(rand(1 .. 10), randVec2I())
-  echoDiv(rand(10'f), randVec2F())
-  echoDiv(rand(1 .. 10), randVec3I())
-  echoDiv(rand(10'f), randVec3F())
-  echoDiv(rand(1 .. 10), randVec4I())
-  echoDiv(rand(10'f), randVec4F())
-
-  # test attribute syntax sugar
-  echo "float2int ", to[int](randVec2F())
-  echo "int2float ", to[float](randVec2I())
-  echo "float2int ", to[int](randVec3F())
-  echo "int2float ", to[float](randVec3I())
-  echo "float2int ", to[int](randVec3F())
-  echo "int2float ", to[float](randVec3I())
-
-  echo "V2I.xx: ", randVec2I().xx
-  echo "V2I.yx: ", randVec2I().xy
-  echo "V2F.xx: ", randVec2F().xx
-  echo "V2F.yx: ", randVec2F().yx
-  echo "V2I.rr: ", randVec2I().rr
-  echo "V2I.gr: ", randVec2I().gr
-  echo "V2F.rr: ", randVec2F().rr
-  echo "V2F.gr: ", randVec2F().gr
-
-  echo "V3I.yyy: ", randVec3I().yyy
-  echo "V3I.yxz: ", randVec3I().xyz
-  echo "V3F.yyy: ", randVec3F().yyy
-  echo "V3F.yxz: ", randVec3F().yxz
-  echo "V3I.ggg: ", randVec3I().ggg
-  echo "V3I.grb: ", randVec3I().grb
-  echo "V3F.ggg: ", randVec3F().ggg
-  echo "V3F.grb: ", randVec3F().grb
-
-  echo "V4I.zzzz: ", randVec4I().zzzz
-  echo "V4I.yxzw: ", randVec4I().xyzw
-  echo "V4F.zzzz: ", randVec4F().zzzz
-  echo "V4F.yxzw: ", randVec4F().yxzw
-  echo "V4I.bbbb: ", randVec4I().bbbb
-  echo "V4I.grba: ", randVec4I().grba
-  echo "V4F.bbbb: ", randVec4F().bbbb
-  echo "V4F.grba: ", randVec4F().grba
-
-  echo "X: ", X
-  echo "Y: ", Y
-  echo "Z: ", Z
-  echo "X: ", Xi
-  echo "Y: ", Yi
-  echo "Z: ", Zi
-
-
 template withAllIntegerMats(stuff: untyped) =
   stuff(Mat22[int32])
   stuff(Mat23[int32])
@@ -227,20 +89,20 @@
   echo "testAssignI: ", t
   var m = t()
   for i in 0 ..< t.data.len:
-    m[rand(0 ..< m.rowCount), rand(0 ..< m.columnCount)] = rand(0'i32 .. 100'i32)
+    m[rand(0 ..< t.rowCount), rand(0 ..< t.columnCount)] = rand(0'i32 .. 100'i32)
 
 template testAssignF(t: typedesc) =
   echo "testAssignF: ", t
   var m = t()
   for i in 0 ..< t.data.len:
-    m[rand(0 ..< m.rowCount), rand(0 ..< m.columnCount)] = rand(100'f)
+    m[rand(0 ..< t.rowCount), rand(0 ..< t.columnCount)] = rand(100'f)
 
 template testRowCols(t: typedesc) =
   echo "testRowCols: ", t
   var m = t().randomized()
-  for i in 0 ..< m.rowCount:
+  for i in 0 ..< t.rowCount:
     echo m.row(i)
-  for i in 0 ..< m.columnCount:
+  for i in 0 ..< t.columnCount:
     echo m.col(i)
 
 
@@ -250,6 +112,30 @@
   withAllFloatMats(testAssignF)
   withAllMats(testRowCols)
 
+  echo Unit22
+  echo Unit22i
+  echo Unit22i8
+  echo Unit22i16
+  echo Unit22i32
+  echo Unit22i64
+
+  echo Unit33
+  echo Unit33i
+  echo Unit33i8
+  echo Unit33i16
+  echo Unit33i32
+  echo Unit33i64
+
+  echo Unit44
+  echo Unit44i
+  echo Unit44i8
+  echo Unit44i16
+  echo Unit44i32
+  echo Unit44i64
+
+  echo Mat22[float]().randomized() * One2.randomized()
+  echo Mat33[float]().randomized() * One3.randomized()
+  echo Mat44[float]().randomized() * One4.randomized()
+
 randomize()
-testVector()
 testMatrix()