# HG changeset patch # User Chris Cannam # Date 1382602695 -3600 # Node ID 926f2986a5e00dae6cedbbc91991094956194cbc # Parent 1b879a959f84eb223946cb1d03f0f3f4d11c72a4 A bit tidier (though no faster) diff -r 1b879a959f84 -r 926f2986a5e0 .hgsubstate --- a/.hgsubstate Thu Oct 24 09:18:02 2013 +0100 +++ b/.hgsubstate Thu Oct 24 09:18:15 2013 +0100 @@ -1,1 +1,1 @@ -4b91cd40a51b64283ba6b5550709e89f6ec492db ext +0530a3093ed168e9328434d02e4be55962e546bf ext diff -r 1b879a959f84 -r 926f2986a5e0 src/may/matrix.yeti --- a/src/may/matrix.yeti Thu Oct 24 09:18:02 2013 +0100 +++ b/src/may/matrix.yeti Thu Oct 24 09:18:15 2013 +0100 @@ -47,34 +47,31 @@ load may.vector.type; load may.matrix.type; -size m = +width m = case m of DenseRows r: - major = length r; - { - rows = major, - columns = if major > 0 then vec.length r[0] else 0 fi, - }; + if not empty? r then vec.length r[0] else 0 fi; DenseCols c: - major = length c; - { - rows = if major > 0 then vec.length c[0] else 0 fi, - columns = major, - }; + length c; SparseCSR { values, indices, pointers, extent }: - { - rows = (length pointers) - 1, - columns = extent - }; + extent; SparseCSC { values, indices, pointers, extent }: - { - rows = extent, - columns = (length pointers) - 1 - }; + (length pointers) - 1; esac; -width m = (size m).columns; -height m = (size m).rows; +height m = + case m of + DenseRows r: + length r; + DenseCols c: + if not empty? c then vec.length c[0] else 0 fi; + SparseCSR { values, indices, pointers, extent }: + (length pointers) - 1; + SparseCSC { values, indices, pointers, extent }: + extent; + esac; + +size m = { rows = height m, columns = width m }; nonZeroValues m = (nz d =