Mercurial > hg > may
diff yetilab/matrix/matrix.yeti @ 163:3fbaa25aad89
Make newMatrix/newRowVector/newColumnVector take block rather than list<number> args. Makes some uses simpler, some more complex, but most faster (sometimes by a lot).
author | Chris Cannam |
---|---|
date | Wed, 01 May 2013 21:42:03 +0100 |
parents | 38938ca5db0c |
children | df2383f6b99b |
line wrap: on
line diff
--- a/yetilab/matrix/matrix.yeti Wed May 01 16:20:07 2013 +0100 +++ b/yetilab/matrix/matrix.yeti Wed May 01 21:42:03 2013 +0100 @@ -125,18 +125,18 @@ ColM d: ColM (copyOfData d); esac)); -newMatrix type data is RowMajor () | ColumnMajor () -> list?<list?<number>> -> 'a = +newMatrix type data = //!!! NB does not copy data (tagger = case type of RowMajor (): RowM; ColumnMajor (): ColM esac; - if empty? data or empty? (head data) + if empty? data or block.empty? (head data) then zeroMatrix { rows = 0, columns = 0 } - else make (tagger (array (map vec.vector data))) + else make (tagger (array (map block.data data))) fi); -newRowVector data = - newMatrix (RowMajor ()) [data]; +newRowVector data = //!!! NB does not copy data + make (RowM (array [block.data data])); -newColumnVector data = - newMatrix (ColumnMajor ()) [data]; +newColumnVector data = //!!! NB does not copy data + make (ColM (array [block.data data])); scaled factor m = generate do row col: factor * m.getAt row col done m.size;