Mercurial > hg > may
diff yetilab/matrix/test/test_matrix.yeti @ 241:e777a713027b sparse
Fix comparator for sparse matrices; sprinkle some zeros in test data to exercise sparsity
author | Chris Cannam |
---|---|
date | Mon, 20 May 2013 16:01:43 +0100 |
parents | f22ae9bfe49f |
children | 0ac8672d12b2 |
line wrap: on
line diff
--- a/yetilab/matrix/test/test_matrix.yeti Mon May 20 15:08:14 2013 +0100 +++ b/yetilab/matrix/test/test_matrix.yeti Mon May 20 16:01:43 2013 +0100 @@ -90,11 +90,11 @@ ), "equal-\(name)": \( - m = newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]; + m = newMatrix (ColumnMajor ()) [[1,4],[0,5],[3,6]]; n = m; - p = newMatrix (RowMajor ()) [[1,2,3],[4,5,6]]; - q = newMatrix (ColumnMajor ()) [[1,2,3],[4,5,6]]; - r = newMatrix (ColumnMajor ()) [[1,4],[2,5]]; + p = newMatrix (RowMajor ()) [[1,0,3],[4,5,6]]; + q = newMatrix (ColumnMajor ()) [[1,0,3],[4,5,6]]; + r = newMatrix (ColumnMajor ()) [[1,4],[0,5]]; compareMatrices m n and compareMatrices m p and compareMatrices n p and @@ -106,8 +106,8 @@ p = newMatrix (ColumnMajor ()) [[1,2,3],[4,5,6]]; q = newMatrix (ColumnMajor ()) [[1,2,3],[4,5,6]]; r = newMatrix (ColumnMajor ()) [[4,3,1],[3,1,2]]; - s = newMatrix (ColumnMajor ()) [[1,2,5],[6,7,8]]; - t = newMatrix (ColumnMajor ()) [[1,2,5],[6,7,9]]; + s = newMatrix (ColumnMajor ()) [[1,4,5],[6,7,8]]; + t = newMatrix (ColumnMajor ()) [[1,4,5],[6,7,9]]; mat.equalUnder (==) p p and mat.equalUnder (==) p q and mat.equalUnder (!=) p r and @@ -123,30 +123,7 @@ (map do col: mat.getAt row col m == generator row col done [0..2]) done [0..1]) ), -/*!!! -"setAt-\(name)": \( - generator row col = row * 10 + col; - m = generate generator { rows = 2, columns = 3 }; - mat.setAt 1 2 16 m; - compare (mat.getAt 1 2 m) 16 and - compare (mat.getAt 1 1 m) 11 and - compare (mat.getAt 0 2 m) 2 -), -"copyOfEqual-\(name)": \( - m = constMatrix 2 { rows = 3, columns = 4 }; - m'' = mat.copyOf m; - compareMatrices m'' m -), - -"copyOfAlias-\(name)": \( - m = constMatrix 2 { rows = 3, columns = 4 }; - m' = m; - m'' = mat.copyOf m; - mat.setAt 0 0 6 m; - compareMatrices m' m and not mat.equal m m''; -), -*/ "transposedEmpty-\(name)": \( compare (mat.size (mat.transposed (constMatrix 2 { rows = 0, columns = 0 }))) { columns = 0, rows = 0 } and compare (mat.size (mat.transposed (constMatrix 2 { rows = 0, columns = 4 }))) { columns = 0, rows = 0 } and @@ -175,14 +152,14 @@ ), "flipped-\(name)": \( - m = newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]; + m = newMatrix (ColumnMajor ()) [[1,4],[0,5],[3,6]]; m' = mat.flipped m; - m'' = newMatrix (RowMajor ()) [[1,2,3],[4,5,6]]; + m'' = newMatrix (RowMajor ()) [[1,0,3],[4,5,6]]; compareMatrices m m' and compareMatrices m m'' and compareMatrices m' m''; ), "flipped-back-\(name)": \( - m = newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]; + m = newMatrix (ColumnMajor ()) [[1,4],[0,5],[3,6]]; compareMatrices m (mat.flipped (mat.flipped m)); ), @@ -192,18 +169,18 @@ ), "toRowMajor-\(name)": \( - m = newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]; + m = newMatrix (ColumnMajor ()) [[1,4],[0,5],[3,6]]; m' = mat.toRowMajor m; - m'' = newMatrix (RowMajor ()) [[1,2,3],[4,5,6]]; + m'' = newMatrix (RowMajor ()) [[1,0,3],[4,5,6]]; m''' = mat.toRowMajor m''; compareMatrices m m' and compareMatrices m m'' and compareMatrices m' m'' and compareMatrices m m'''; ), "toColumnMajor-\(name)": \( - m = newMatrix (RowMajor ()) [[1,4],[2,5],[3,6]]; + m = newMatrix (RowMajor ()) [[1,4],[0,5],[3,6]]; m' = mat.toColumnMajor m; - m'' = newMatrix (ColumnMajor ()) [[1,2,3],[4,5,6]]; + m'' = newMatrix (ColumnMajor ()) [[1,0,3],[4,5,6]]; m''' = mat.toColumnMajor m''; compareMatrices m m' and compareMatrices m m'' and compareMatrices m' m'' and compareMatrices m m'''; @@ -310,29 +287,29 @@ "asRows-\(name)": \( compare (map vec.list - (mat.asRows (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]))) - [[1,2,3],[4,5,6]]; + (mat.asRows (newMatrix (ColumnMajor ()) [[1,4],[0,5],[3,6]]))) + [[1,0,3],[4,5,6]]; ), "asColumns-\(name)": \( compare (map vec.list - (mat.asColumns (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]))) - [[1,4],[2,5],[3,6]]; + (mat.asColumns (newMatrix (ColumnMajor ()) [[1,4],[0,5],[3,6]]))) + [[1,4],[0,5],[3,6]]; ), "concat-horiz-\(name)": \( compareMatrices (mat.concat (Horizontal ()) - [(newMatrix (ColumnMajor ()) [[1,4],[2,5]]), + [(newMatrix (ColumnMajor ()) [[1,4],[0,5]]), (newMatrix (RowMajor ()) [[3],[6]])]) - (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]) + (newMatrix (ColumnMajor ()) [[1,4],[0,5],[3,6]]) ), "concatFail-horiz-\(name)": \( try \() (mat.concat (Horizontal ()) - [(newMatrix (ColumnMajor ()) [[1,4],[2,5]]), + [(newMatrix (ColumnMajor ()) [[1,4],[0,5]]), (newMatrix (ColumnMajor ()) [[3],[6]])]); false catch FailureException e: @@ -343,15 +320,15 @@ "concat-vert-\(name)": \( compareMatrices (mat.concat (Vertical ()) - [(newMatrix (ColumnMajor ()) [[1,4],[2,5]]), + [(newMatrix (ColumnMajor ()) [[1,4],[0,5]]), (newMatrix (RowMajor ()) [[3,6]])]) - (newMatrix (ColumnMajor ()) [[1,4,3],[2,5,6]]) + (newMatrix (ColumnMajor ()) [[1,4,3],[0,5,6]]) ), "concatFail-vert-\(name)": \( try \() (mat.concat (Vertical ()) - [(newMatrix (ColumnMajor ()) [[1,4],[2,5]]), + [(newMatrix (ColumnMajor ()) [[1,4],[0,5]]), (newMatrix (RowMajor ()) [[3],[6]])]); false catch FailureException e: @@ -361,14 +338,14 @@ "rowSlice-\(name)": \( compareMatrices - (mat.rowSlice 1 2 (newMatrix (RowMajor ()) [[1,2],[3,4],[5,6],[7,8]])) - (newMatrix (RowMajor ()) [[3,4],[5,6]]) + (mat.rowSlice 1 2 (newMatrix (RowMajor ()) [[1,0],[3,4],[0,6],[7,8]])) + (newMatrix (RowMajor ()) [[3,4],[0,6]]) ), "columnSlice-\(name)": \( compareMatrices - (mat.columnSlice 1 2 (newMatrix (RowMajor ()) [[1,2,3,4],[5,6,7,8]])) - (newMatrix (RowMajor ()) [[2,3],[6,7]]) + (mat.columnSlice 1 2 (newMatrix (RowMajor ()) [[1,0,3,4],[0,6,7,8]])) + (newMatrix (RowMajor ()) [[0,3],[6,7]]) ), ]); @@ -376,11 +353,14 @@ colhash = makeTests "column-dense" id; rowhash = makeTests "row-dense" mat.flipped; sparsecolhash = makeTests "column-sparse" (mat.toSparse 0); -sparserowhash = makeTests "row-sparse" ((mat.toSparse 0) . (mat.flipped)); -sparserowhash2 = makeTests "row-sparse2" ((mat.flipped) . (mat.toSparse 0)); + +// there are two possible orders for constructing a sparse row-major +// matrix from a dense col-major one, so test them both: +sparserowhash1 = makeTests "row-sparse-a" ((mat.toSparse 0) . (mat.flipped)); +sparserowhash2 = makeTests "row-sparse-b" ((mat.flipped) . (mat.toSparse 0)); all = [:]; -for [ colhash, rowhash, sparsecolhash, sparserowhash, sparserowhash2 ] do h: +for [ colhash, rowhash, sparsecolhash, sparserowhash1, sparserowhash2 ] do h: for (keys h) do k: all[k] := h[k] done; done;