Chris@97
|
1
|
Chris@97
|
2 module yetilab.matrix.test.test_matrix;
|
Chris@97
|
3
|
Chris@97
|
4 mat = load yetilab.matrix.matrix;
|
Chris@222
|
5 vec = load yetilab.vector.vector;
|
Chris@97
|
6
|
Chris@222
|
7 load yetilab.vector.vectortype;
|
Chris@220
|
8 load yetilab.matrix.matrixtype;
|
Chris@220
|
9
|
Chris@98
|
10 import yeti.lang: FailureException;
|
Chris@98
|
11
|
Chris@158
|
12 { compare, compareUsing } = load yetilab.test.test;
|
Chris@97
|
13
|
Chris@158
|
14 compareMatrices = compareUsing mat.equal;
|
Chris@99
|
15
|
Chris@99
|
16 makeTests name flipper =
|
Chris@99
|
17 (constMatrix n s = flipper (mat.constMatrix n s);
|
Chris@99
|
18 zeroMatrix s = flipper (mat.zeroMatrix s);
|
Chris@99
|
19 randomMatrix s = flipper (mat.randomMatrix s);
|
Chris@99
|
20 identityMatrix s = flipper (mat.identityMatrix s);
|
Chris@99
|
21 generate f s = flipper (mat.generate f s);
|
Chris@218
|
22 newMatrix t d = flipper (mat.newMatrix t (map vec.fromList d));
|
Chris@97
|
23 [
|
Chris@97
|
24
|
Chris@99
|
25 "constMatrixEmpty-\(name)": \(
|
Chris@99
|
26 m = constMatrix 2 { rows = 0, columns = 0 };
|
Chris@210
|
27 compare (mat.size m) { columns = 0, rows = 0 }
|
Chris@97
|
28 ),
|
Chris@97
|
29
|
Chris@99
|
30 "constMatrixEmpty2-\(name)": \(
|
Chris@210
|
31 compare (mat.size (constMatrix 2 { rows = 0, columns = 4 })) { columns = 0, rows = 0 } and
|
Chris@210
|
32 compare (mat.size (constMatrix 2 { rows = 4, columns = 0 })) { columns = 0, rows = 0 }
|
Chris@97
|
33 ),
|
Chris@97
|
34
|
Chris@99
|
35 "constMatrix-\(name)": \(
|
Chris@99
|
36 m = constMatrix 2 { rows = 3, columns = 4 };
|
Chris@210
|
37 compare (mat.size m) { columns = 4, rows = 3 } and
|
Chris@218
|
38 all id (map do row: compare (vec.list (mat.getRow row m)) [2,2,2,2] done [0..2]) and
|
Chris@218
|
39 all id (map do col: compare (vec.list (mat.getColumn col m)) [2,2,2] done [0..3])
|
Chris@97
|
40 ),
|
Chris@97
|
41
|
Chris@99
|
42 "randomMatrixEmpty-\(name)": \(
|
Chris@99
|
43 m = randomMatrix { rows = 0, columns = 0 };
|
Chris@210
|
44 compare (mat.size m) { columns = 0, rows = 0 }
|
Chris@97
|
45 ),
|
Chris@97
|
46
|
Chris@99
|
47 "randomMatrix-\(name)": \(
|
Chris@99
|
48 m = randomMatrix { rows = 3, columns = 4 };
|
Chris@210
|
49 compare (mat.size m) { columns = 4, rows = 3 }
|
Chris@97
|
50 ),
|
Chris@97
|
51
|
Chris@99
|
52 "zeroMatrixEmpty-\(name)": \(
|
Chris@99
|
53 m = zeroMatrix { rows = 0, columns = 0 };
|
Chris@210
|
54 compare (mat.size m) { columns = 0, rows = 0 }
|
Chris@97
|
55 ),
|
Chris@97
|
56
|
Chris@99
|
57 "zeroMatrix-\(name)": \(
|
Chris@99
|
58 m = zeroMatrix { rows = 3, columns = 4 };
|
Chris@210
|
59 compare (mat.size m) { columns = 4, rows = 3 } and
|
Chris@218
|
60 all id (map do row: compare (vec.list (mat.getRow row m)) [0,0,0,0] done [0..2]) and
|
Chris@218
|
61 all id (map do col: compare (vec.list (mat.getColumn col m)) [0,0,0] done [0..3])
|
Chris@97
|
62 ),
|
Chris@97
|
63
|
Chris@99
|
64 "identityMatrixEmpty-\(name)": \(
|
Chris@99
|
65 m = identityMatrix { rows = 0, columns = 0 };
|
Chris@210
|
66 compare (mat.size m) { columns = 0, rows = 0 }
|
Chris@97
|
67 ),
|
Chris@97
|
68
|
Chris@99
|
69 "identityMatrix-\(name)": \(
|
Chris@99
|
70 m = identityMatrix { rows = 3, columns = 4 };
|
Chris@210
|
71 compare (mat.size m) { columns = 4, rows = 3 } and
|
Chris@218
|
72 all id (map do row: compare (vec.list (mat.getRow row m)) [1,1,1,1] done [0..2]) and
|
Chris@218
|
73 all id (map do col: compare (vec.list (mat.getColumn col m)) [1,1,1] done [0..3])
|
Chris@97
|
74 ),
|
Chris@97
|
75
|
Chris@99
|
76 "generateEmpty-\(name)": \(
|
Chris@99
|
77 m = generate do row col: 0 done { rows = 0, columns = 0 };
|
Chris@210
|
78 compare (mat.size m) { columns = 0, rows = 0 }
|
Chris@97
|
79 ),
|
Chris@97
|
80
|
Chris@99
|
81 "generate-\(name)": \(
|
Chris@99
|
82 m = generate do row col: row * 10 + col done { rows = 2, columns = 3 };
|
Chris@218
|
83 compare (vec.list (mat.getRow 0 m)) [0,1,2] and
|
Chris@218
|
84 compare (vec.list (mat.getRow 1 m)) [10,11,12]
|
Chris@97
|
85 ),
|
Chris@97
|
86
|
Chris@99
|
87 "widthAndHeight-\(name)": \(
|
Chris@99
|
88 m = constMatrix 2 { rows = 3, columns = 4 };
|
Chris@210
|
89 compare (mat.size m) { columns = mat.width m, rows = mat.height m }
|
Chris@97
|
90 ),
|
Chris@97
|
91
|
Chris@99
|
92 "equal-\(name)": \(
|
Chris@100
|
93 m = newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]];
|
Chris@100
|
94 n = m;
|
Chris@100
|
95 p = newMatrix (RowMajor ()) [[1,2,3],[4,5,6]];
|
Chris@100
|
96 q = newMatrix (ColumnMajor ()) [[1,2,3],[4,5,6]];
|
Chris@159
|
97 r = newMatrix (ColumnMajor ()) [[1,4],[2,5]];
|
Chris@100
|
98 compareMatrices m n and
|
Chris@100
|
99 compareMatrices m p and
|
Chris@100
|
100 compareMatrices n p and
|
Chris@159
|
101 not mat.equal m q and
|
Chris@159
|
102 not mat.equal m r
|
Chris@97
|
103 ),
|
Chris@97
|
104
|
Chris@229
|
105 "equalUnder-\(name)": \(
|
Chris@229
|
106 p = newMatrix (ColumnMajor ()) [[1,2,3],[4,5,6]];
|
Chris@229
|
107 q = newMatrix (ColumnMajor ()) [[1,2,3],[4,5,6]];
|
Chris@229
|
108 r = newMatrix (ColumnMajor ()) [[4,3,1],[3,1,2]];
|
Chris@229
|
109 s = newMatrix (ColumnMajor ()) [[1,2,5],[6,7,8]];
|
Chris@229
|
110 t = newMatrix (ColumnMajor ()) [[1,2,5],[6,7,9]];
|
Chris@229
|
111 mat.equalUnder (==) p p and
|
Chris@229
|
112 mat.equalUnder (==) p q and
|
Chris@229
|
113 mat.equalUnder (!=) p r and
|
Chris@229
|
114 mat.equalUnder do a b: a % 2 == b % 2 done p s and
|
Chris@229
|
115 not mat.equalUnder do a b: a % 2 == b % 2 done p t
|
Chris@229
|
116 ),
|
Chris@229
|
117
|
Chris@99
|
118 "getAt-\(name)": \(
|
Chris@97
|
119 generator row col = row * 10 + col;
|
Chris@99
|
120 m = generate generator { rows = 2, columns = 3 };
|
Chris@97
|
121 all id
|
Chris@97
|
122 (map do row: all id
|
Chris@210
|
123 (map do col: mat.getAt row col m == generator row col done [0..2])
|
Chris@97
|
124 done [0..1])
|
Chris@97
|
125 ),
|
Chris@220
|
126 /*!!!
|
Chris@99
|
127 "setAt-\(name)": \(
|
Chris@97
|
128 generator row col = row * 10 + col;
|
Chris@99
|
129 m = generate generator { rows = 2, columns = 3 };
|
Chris@210
|
130 mat.setAt 1 2 16 m;
|
Chris@210
|
131 compare (mat.getAt 1 2 m) 16 and
|
Chris@210
|
132 compare (mat.getAt 1 1 m) 11 and
|
Chris@210
|
133 compare (mat.getAt 0 2 m) 2
|
Chris@97
|
134 ),
|
Chris@97
|
135
|
Chris@99
|
136 "copyOfEqual-\(name)": \(
|
Chris@99
|
137 m = constMatrix 2 { rows = 3, columns = 4 };
|
Chris@97
|
138 m'' = mat.copyOf m;
|
Chris@99
|
139 compareMatrices m'' m
|
Chris@97
|
140 ),
|
Chris@97
|
141
|
Chris@99
|
142 "copyOfAlias-\(name)": \(
|
Chris@99
|
143 m = constMatrix 2 { rows = 3, columns = 4 };
|
Chris@97
|
144 m' = m;
|
Chris@97
|
145 m'' = mat.copyOf m;
|
Chris@210
|
146 mat.setAt 0 0 6 m;
|
Chris@99
|
147 compareMatrices m' m and not mat.equal m m'';
|
Chris@97
|
148 ),
|
Chris@220
|
149 */
|
Chris@99
|
150 "transposedEmpty-\(name)": \(
|
Chris@210
|
151 compare (mat.size (mat.transposed (constMatrix 2 { rows = 0, columns = 0 }))) { columns = 0, rows = 0 } and
|
Chris@210
|
152 compare (mat.size (mat.transposed (constMatrix 2 { rows = 0, columns = 4 }))) { columns = 0, rows = 0 } and
|
Chris@210
|
153 compare (mat.size (mat.transposed (constMatrix 2 { rows = 4, columns = 0 }))) { columns = 0, rows = 0 }
|
Chris@97
|
154 ),
|
Chris@97
|
155
|
Chris@99
|
156 "transposedSize-\(name)": \(
|
Chris@210
|
157 compare (mat.size (mat.transposed (constMatrix 2 { rows = 3, columns = 4 }))) { columns = 3, rows = 4 }
|
Chris@97
|
158 ),
|
Chris@97
|
159
|
Chris@99
|
160 "transposed-\(name)": \(
|
Chris@97
|
161 generator row col = row * 10 + col;
|
Chris@99
|
162 m = generate generator { rows = 2, columns = 3 };
|
Chris@97
|
163 m' = mat.transposed m;
|
Chris@97
|
164 all id
|
Chris@97
|
165 (map do row: all id
|
Chris@97
|
166 // like getAt test, but with col/row flipped
|
Chris@210
|
167 (map do col: mat.getAt col row m' == generator row col done [0..2])
|
Chris@97
|
168 done [0..1])
|
Chris@97
|
169 ),
|
Chris@97
|
170
|
Chris@100
|
171 "transposed-back-\(name)": \(
|
Chris@100
|
172 m = newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]];
|
Chris@100
|
173 compareMatrices m (mat.transposed (mat.transposed m)) and
|
Chris@100
|
174 not mat.equal m (mat.transposed m);
|
Chris@100
|
175 ),
|
Chris@100
|
176
|
Chris@100
|
177 "flipped-\(name)": \(
|
Chris@99
|
178 m = newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]];
|
Chris@99
|
179 m' = mat.flipped m;
|
Chris@99
|
180 m'' = newMatrix (RowMajor ()) [[1,2,3],[4,5,6]];
|
Chris@100
|
181 compareMatrices m m' and compareMatrices m m'' and compareMatrices m' m'';
|
Chris@98
|
182 ),
|
Chris@98
|
183
|
Chris@100
|
184 "flipped-back-\(name)": \(
|
Chris@100
|
185 m = newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]];
|
Chris@100
|
186 compareMatrices m (mat.flipped (mat.flipped m));
|
Chris@100
|
187 ),
|
Chris@100
|
188
|
Chris@100
|
189 "flipped-empty-\(name)": \(
|
Chris@99
|
190 m = constMatrix 2 { rows = 0, columns = 4 };
|
Chris@99
|
191 compareMatrices (mat.flipped m) (mat.flipped (constMatrix 0 { rows = 0, columns = 0 }));
|
Chris@98
|
192 ),
|
Chris@98
|
193
|
Chris@161
|
194 "toRowMajor-\(name)": \(
|
Chris@161
|
195 m = newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]];
|
Chris@161
|
196 m' = mat.toRowMajor m;
|
Chris@161
|
197 m'' = newMatrix (RowMajor ()) [[1,2,3],[4,5,6]];
|
Chris@161
|
198 m''' = mat.toRowMajor m'';
|
Chris@161
|
199 compareMatrices m m' and compareMatrices m m'' and compareMatrices m' m''
|
Chris@161
|
200 and compareMatrices m m''';
|
Chris@161
|
201 ),
|
Chris@161
|
202
|
Chris@161
|
203 "toColumnMajor-\(name)": \(
|
Chris@161
|
204 m = newMatrix (RowMajor ()) [[1,4],[2,5],[3,6]];
|
Chris@161
|
205 m' = mat.toColumnMajor m;
|
Chris@161
|
206 m'' = newMatrix (ColumnMajor ()) [[1,2,3],[4,5,6]];
|
Chris@161
|
207 m''' = mat.toColumnMajor m'';
|
Chris@161
|
208 compareMatrices m m' and compareMatrices m m'' and compareMatrices m' m''
|
Chris@161
|
209 and compareMatrices m m''';
|
Chris@161
|
210 ),
|
Chris@161
|
211
|
Chris@99
|
212 "scaled-\(name)": \(
|
Chris@99
|
213 compareMatrices
|
Chris@99
|
214 (mat.scaled 0.5 (constMatrix 2 { rows = 3, columns = 4 }))
|
Chris@99
|
215 (constMatrix 1 { rows = 3, columns = 4 }) and
|
Chris@99
|
216 compareMatrices
|
Chris@99
|
217 (mat.scaled 0.5 (constMatrix (-3) { rows = 3, columns = 4 }))
|
Chris@99
|
218 (constMatrix (-1.5) { rows = 3, columns = 4 }) and
|
Chris@99
|
219 compareMatrices
|
Chris@99
|
220 (mat.scaled 0.5 (constMatrix 2 { rows = 0, columns = 2 }))
|
Chris@99
|
221 (constMatrix 5 { rows = 0, columns = 0 })
|
Chris@99
|
222 ),
|
Chris@99
|
223
|
Chris@99
|
224 "sum-\(name)": \(
|
Chris@99
|
225 compareMatrices
|
Chris@99
|
226 (mat.sum (constMatrix 2 { rows = 3, columns = 4 })
|
Chris@99
|
227 (constMatrix 1 { rows = 3, columns = 4 }))
|
Chris@99
|
228 (constMatrix 3 { rows = 3, columns = 4 })
|
Chris@99
|
229 ),
|
Chris@99
|
230
|
Chris@99
|
231 "sumFail-\(name)": \(
|
Chris@98
|
232 try
|
Chris@99
|
233 \() (mat.sum (constMatrix 2 { rows = 3, columns = 4 })
|
Chris@99
|
234 (constMatrix 1 { rows = 3, columns = 5 }));
|
Chris@98
|
235 false;
|
Chris@98
|
236 catch FailureException e:
|
Chris@98
|
237 true
|
Chris@98
|
238 yrt
|
Chris@98
|
239 ),
|
Chris@98
|
240
|
Chris@229
|
241 "difference-\(name)": \(
|
Chris@229
|
242 compareMatrices
|
Chris@229
|
243 (mat.difference (constMatrix 2 { rows = 3, columns = 4 })
|
Chris@229
|
244 (constMatrix 1 { rows = 3, columns = 4 }))
|
Chris@229
|
245 (constMatrix 1 { rows = 3, columns = 4 })
|
Chris@229
|
246 ),
|
Chris@229
|
247
|
Chris@229
|
248 "differenceFail-\(name)": \(
|
Chris@229
|
249 try
|
Chris@229
|
250 \() (mat.difference (constMatrix 2 { rows = 3, columns = 4 })
|
Chris@229
|
251 (constMatrix 1 { rows = 3, columns = 5 }));
|
Chris@229
|
252 false;
|
Chris@229
|
253 catch FailureException e:
|
Chris@229
|
254 true
|
Chris@229
|
255 yrt
|
Chris@229
|
256 ),
|
Chris@229
|
257
|
Chris@229
|
258 "abs-\(name)": \(
|
Chris@229
|
259 compareMatrices
|
Chris@229
|
260 (mat.abs (newMatrix (ColumnMajor ()) [[-1,4],[2,-5],[-3,0]]))
|
Chris@229
|
261 (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,0]])
|
Chris@229
|
262 ),
|
Chris@229
|
263
|
Chris@99
|
264 "product-\(name)": \(
|
Chris@99
|
265 compareMatrices
|
Chris@99
|
266 (mat.product (constMatrix 2 { rows = 4, columns = 2 })
|
Chris@99
|
267 (constMatrix 3 { rows = 2, columns = 3 }))
|
Chris@99
|
268 (constMatrix 12 { rows = 4, columns = 3 }) and
|
Chris@99
|
269 compareMatrices
|
Chris@99
|
270 (mat.product (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]])
|
Chris@99
|
271 (newMatrix (ColumnMajor ()) [[7,9,11],[8,10,12]]))
|
Chris@99
|
272 (newMatrix (ColumnMajor ()) [[58,139],[64,154]])
|
Chris@98
|
273 ),
|
Chris@98
|
274
|
Chris@99
|
275 "productFail-\(name)": \(
|
Chris@99
|
276 try
|
Chris@99
|
277 \() (mat.product (constMatrix 2 { rows = 4, columns = 2 })
|
Chris@99
|
278 (constMatrix 3 { rows = 3, columns = 2 }));
|
Chris@99
|
279 false;
|
Chris@99
|
280 catch FailureException e:
|
Chris@99
|
281 true
|
Chris@99
|
282 yrt
|
Chris@99
|
283 ),
|
Chris@97
|
284
|
Chris@158
|
285 "resizedTo-\(name)": \(
|
Chris@158
|
286 compareMatrices
|
Chris@158
|
287 (mat.resizedTo { rows = 2, columns = 2 }
|
Chris@158
|
288 (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]))
|
Chris@159
|
289 (newMatrix (ColumnMajor ()) [[1,4],[2,5]]) and
|
Chris@158
|
290 compareMatrices
|
Chris@158
|
291 (mat.resizedTo { rows = 3, columns = 4 }
|
Chris@158
|
292 (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]))
|
Chris@158
|
293 (newMatrix (ColumnMajor ()) [[1,4,0],[2,5,0],[3,6,0],[0,0,0]]) and
|
Chris@158
|
294 compareMatrices
|
Chris@158
|
295 (mat.resizedTo { rows = 1, columns = 1 }
|
Chris@158
|
296 (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]))
|
Chris@202
|
297 (newMatrix (RowMajor ()) [[1]]) and
|
Chris@202
|
298 compareMatrices
|
Chris@202
|
299 (mat.resizedTo { rows = 2, columns = 3 }
|
Chris@202
|
300 (mat.zeroSizeMatrix ()))
|
Chris@202
|
301 (newMatrix (RowMajor ()) [[0,0,0],[0,0,0]])
|
Chris@158
|
302 ),
|
Chris@158
|
303
|
Chris@158
|
304 "zeroSizeMatrix-\(name)": \(
|
Chris@158
|
305 compareMatrices
|
Chris@158
|
306 (mat.zeroSizeMatrix ())
|
Chris@158
|
307 (newMatrix (ColumnMajor ()) [])
|
Chris@158
|
308 ),
|
Chris@158
|
309
|
Chris@161
|
310 "asRows-\(name)": \(
|
Chris@161
|
311 compare
|
Chris@218
|
312 (map vec.list
|
Chris@171
|
313 (mat.asRows (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]])))
|
Chris@161
|
314 [[1,2,3],[4,5,6]];
|
Chris@161
|
315 ),
|
Chris@161
|
316
|
Chris@161
|
317 "asColumns-\(name)": \(
|
Chris@161
|
318 compare
|
Chris@218
|
319 (map vec.list
|
Chris@171
|
320 (mat.asColumns (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]])))
|
Chris@161
|
321 [[1,4],[2,5],[3,6]];
|
Chris@161
|
322 ),
|
Chris@161
|
323
|
Chris@178
|
324 "concat-horiz-\(name)": \(
|
Chris@177
|
325 compareMatrices
|
Chris@177
|
326 (mat.concat (Horizontal ())
|
Chris@177
|
327 [(newMatrix (ColumnMajor ()) [[1,4],[2,5]]),
|
Chris@177
|
328 (newMatrix (RowMajor ()) [[3],[6]])])
|
Chris@177
|
329 (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]])
|
Chris@177
|
330 ),
|
Chris@177
|
331
|
Chris@178
|
332 "concatFail-horiz-\(name)": \(
|
Chris@178
|
333 try
|
Chris@178
|
334 \() (mat.concat (Horizontal ())
|
Chris@178
|
335 [(newMatrix (ColumnMajor ()) [[1,4],[2,5]]),
|
Chris@178
|
336 (newMatrix (ColumnMajor ()) [[3],[6]])]);
|
Chris@178
|
337 false
|
Chris@178
|
338 catch FailureException e:
|
Chris@178
|
339 true
|
Chris@178
|
340 yrt
|
Chris@178
|
341 ),
|
Chris@178
|
342
|
Chris@178
|
343 "concat-vert-\(name)": \(
|
Chris@178
|
344 compareMatrices
|
Chris@178
|
345 (mat.concat (Vertical ())
|
Chris@178
|
346 [(newMatrix (ColumnMajor ()) [[1,4],[2,5]]),
|
Chris@178
|
347 (newMatrix (RowMajor ()) [[3,6]])])
|
Chris@178
|
348 (newMatrix (ColumnMajor ()) [[1,4,3],[2,5,6]])
|
Chris@178
|
349 ),
|
Chris@178
|
350
|
Chris@178
|
351 "concatFail-vert-\(name)": \(
|
Chris@178
|
352 try
|
Chris@178
|
353 \() (mat.concat (Vertical ())
|
Chris@178
|
354 [(newMatrix (ColumnMajor ()) [[1,4],[2,5]]),
|
Chris@178
|
355 (newMatrix (RowMajor ()) [[3],[6]])]);
|
Chris@178
|
356 false
|
Chris@178
|
357 catch FailureException e:
|
Chris@178
|
358 true
|
Chris@178
|
359 yrt
|
Chris@178
|
360 ),
|
Chris@178
|
361
|
Chris@187
|
362 "rowSlice-\(name)": \(
|
Chris@187
|
363 compareMatrices
|
Chris@187
|
364 (mat.rowSlice 1 2 (newMatrix (RowMajor ()) [[1,2],[3,4],[5,6],[7,8]]))
|
Chris@187
|
365 (newMatrix (RowMajor ()) [[3,4],[5,6]])
|
Chris@187
|
366 ),
|
Chris@187
|
367
|
Chris@187
|
368 "columnSlice-\(name)": \(
|
Chris@187
|
369 compareMatrices
|
Chris@187
|
370 (mat.columnSlice 1 2 (newMatrix (RowMajor ()) [[1,2,3,4],[5,6,7,8]]))
|
Chris@187
|
371 (newMatrix (RowMajor ()) [[2,3],[6,7]])
|
Chris@187
|
372 ),
|
Chris@187
|
373
|
Chris@99
|
374 ]);
|
Chris@99
|
375
|
Chris@99
|
376 colhash = makeTests "column-major" id;
|
Chris@99
|
377 rowhash = makeTests "row-major" mat.flipped;
|
Chris@99
|
378
|
Chris@99
|
379 all = [:];
|
Chris@99
|
380 for (keys colhash) do k: all[k] := colhash[k] done;
|
Chris@99
|
381 for (keys rowhash) do k: all[k] := rowhash[k] done;
|
Chris@99
|
382
|
Chris@99
|
383 all is hash<string, () -> boolean>;
|
Chris@99
|
384
|
Chris@99
|
385
|