comparison tests/test_matrix.nim @ 1136:71315636ba82

did: refactor naming in tons of places
author sam <sam@basx.dev>
date Tue, 04 Jun 2024 16:51:50 +0700
parents 67081fbaf636
children
comparison
equal deleted inserted replaced
1135:74957cbf589b 1136:71315636ba82
21 proc echoDot[T, U](v1: T, v2: U) = 21 proc echoDot[T, U](v1: T, v2: U) =
22 echo v1, " o ", v2, " = ", v1.dot(v2) 22 echo v1, " o ", v2, " = ", v1.dot(v2)
23 proc echoCross[T, U](v1: T, v2: U) = 23 proc echoCross[T, U](v1: T, v2: U) =
24 echo v1, " x ", v2, " = ", v1.cross(v2) 24 echo v1, " x ", v2, " = ", v1.cross(v2)
25 25
26 proc randVec2I(): auto = newVec2(rand(1 .. 10), rand(1 .. 10)) 26 proc randVec2I(): auto = NewVec2(rand(1 .. 10), rand(1 .. 10))
27 proc randVec2F(): auto = newVec2(rand(10'f) + 0.01, rand(10'f) + 0.01) 27 proc randVec2F(): auto = NewVec2(rand(10'f) + 0.01, rand(10'f) + 0.01)
28 proc randVec3I(): auto = newVec3(rand(1 .. 10), rand(1 .. 10), rand(1 .. 10)) 28 proc randVec3I(): auto = NewVec3(rand(1 .. 10), rand(1 .. 10), rand(1 .. 10))
29 proc randVec3F(): auto = newVec3(rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01) 29 proc randVec3F(): auto = NewVec3(rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01)
30 proc randVec4I(): auto = newVec4(rand(1 .. 10), rand(1 .. 10), rand(1 .. 10), rand(1 .. 10)) 30 proc randVec4I(): auto = NewVec4(rand(1 .. 10), rand(1 .. 10), rand(1 .. 10), rand(1 .. 10))
31 proc randVec4F(): auto = newVec4(rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01) 31 proc randVec4F(): auto = NewVec4(rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01, rand(10'f) + 0.01)
32 32
33 33
34 template withAllIntegerMats(stuff: untyped) = 34 template withAllIntegerMats(stuff: untyped) =
35 stuff(TMat2[int32]) 35 stuff(TMat2[int32])
36 stuff(TMat23[int32]) 36 stuff(TMat23[int32])
79 stuff(TMat43[float]) 79 stuff(TMat43[float])
80 stuff(TMat4[float]) 80 stuff(TMat4[float])
81 81
82 template testTranspose(t: typedesc) = 82 template testTranspose(t: typedesc) =
83 echo "testTranspose: ", t 83 echo "testTranspose: ", t
84 let m = t().randomized() 84 let m = t().Randomized()
85 assert m == m.transposed().transposed() 85 assert m == m.Transposed().Transposed()
86
87 template testInversed(t: typedesc) =
88 echo "testTranspose: ", t
89 let m = t().Randomized()
90 var unit = t()
91 for i in unit.RowCount:
92 unit[i][i] = 1
93 assert m.Transposed() * m == unit
86 94
87 template testAssignI(t: typedesc) = 95 template testAssignI(t: typedesc) =
88 echo "testAssignI: ", t 96 echo "testAssignI: ", t
89 var m = t() 97 var m = t()
90 for i in 0 ..< t.data.len: 98 for i in 0 ..< t.data.len:
91 m[rand(0 ..< t.rowCount), rand(0 ..< t.columnCount)] = rand(0'i32 .. 100'i32) 99 m[rand(0 ..< t.RowCount), rand(0 ..< t.ColumnCount)] = rand(0'i32 .. 100'i32)
92 100
93 template testAssignF(t: typedesc) = 101 template testAssignF(t: typedesc) =
94 echo "testAssignF: ", t 102 echo "testAssignF: ", t
95 var m = t() 103 var m = t()
96 for i in 0 ..< t.data.len: 104 for i in 0 ..< t.data.len:
97 m[rand(0 ..< t.rowCount), rand(0 ..< t.columnCount)] = rand(100'f) 105 m[rand(0 ..< t.RowCount), rand(0 ..< t.ColumnCount)] = rand(100'f)
98 106
99 template testRowCols(t: typedesc) = 107 template testRowCols(t: typedesc) =
100 echo "testRowCols: ", t 108 echo "testRowCols: ", t
101 var m = t().randomized() 109 var m = t().Randomized()
102 for i in 0 ..< t.rowCount: 110 for i in 0 ..< t.RowCount:
103 echo m.row(i) 111 echo m.Row(i)
104 for i in 0 ..< t.columnCount: 112 for i in 0 ..< t.ColumnCount:
105 echo m.col(i) 113 echo m.Col(i)
106 114
107 115
108 proc testMatrix() = 116 proc testMatrix() =
109 withAllMats(testTranspose) 117 withAllMats(testTranspose)
110 withAllIntegerMats(testAssignI) 118 withAllIntegerMats(testAssignI)
130 echo Unit4i8 138 echo Unit4i8
131 echo Unit4i16 139 echo Unit4i16
132 echo Unit4i32 140 echo Unit4i32
133 echo Unit4i64 141 echo Unit4i64
134 142
135 echo TMat2[float32]().randomized() * One2.randomized() 143 echo TMat2[float32]().Randomized() * One2.Randomized()
136 echo TMat3[float32]().randomized() * One3.randomized() 144 echo TMat3[float32]().Randomized() * One3.Randomized()
137 echo TMat4[float32]().randomized() * One4.randomized() 145 echo TMat4[float32]().Randomized() * One4.Randomized()
138 146
139 echo float32(rand(1'f32)) * TMat2[float32]().randomized() 147 echo float32(rand(1'f32)) * TMat2[float32]().Randomized()
140 echo TMat2[float]().randomized() * rand(1'f) 148 echo TMat2[float]().Randomized() * rand(1'f)
141 echo TMat2[float]().randomized() * rand(1'f) 149 echo TMat2[float]().Randomized() * rand(1'f)
142 echo TMat23[float]().randomized() * rand(1'f) 150 echo TMat23[float]().Randomized() * rand(1'f)
143 echo TMat23[float]().randomized() * rand(1'f) 151 echo TMat23[float]().Randomized() * rand(1'f)
144 echo TMat3[float]().randomized() * rand(1'f) 152 echo TMat3[float]().Randomized() * rand(1'f)
145 echo TMat34[float]().randomized() * rand(1'f) 153 echo TMat34[float]().Randomized() * rand(1'f)
146 echo TMat43[float]().randomized() * rand(1'f) 154 echo TMat43[float]().Randomized() * rand(1'f)
147 echo TMat4[float]().randomized() * rand(1'f) 155 echo TMat4[float]().Randomized() * rand(1'f)
148 156
149 randomize() 157 randomize()
150 testMatrix() 158 testMatrix()