annotate fmatrix.yeti @ 16:e8d404787c35

Start on tests
author Chris Cannam
date Sat, 15 Dec 2012 23:50:58 +0000
parents 0ddc2aa8885d
children 12c6f103ba8e
rev   line source
Chris@10 1 module fmatrix;
Chris@5 2
Chris@10 3 vec = load fvector;
Chris@9 4
Chris@10 5 zeroMatrix rows cols = array (map \(vec.zeros cols) [1..rows]);
Chris@5 6
Chris@5 7 generateMatrix f rows cols =
Chris@5 8 (m = zeroMatrix rows cols;
Chris@5 9 for [0..rows-1] do row:
Chris@5 10 for [0..cols-1] do col:
Chris@9 11 m[row][col] := f row col;
Chris@5 12 done;
Chris@5 13 done;
Chris@5 14 m);
Chris@5 15
Chris@5 16 constMatrix n = generateMatrix do row col: n done;
Chris@5 17 randomMatrix = generateMatrix do row col: Math#random() done;
Chris@5 18 identityMatrix = constMatrix 1;
Chris@5 19
Chris@10 20 width m = if length m > 0 then vec.vectorLength m[0] else 0 fi;
Chris@6 21 cols = width;
Chris@6 22
Chris@5 23 height m = length m;
Chris@6 24 rows = height;
Chris@6 25
Chris@5 26 dimensions m = { cols = width m, rows = height m };
Chris@5 27
Chris@10 28 copyOfMatrix m = array (map vec.copyOfVector m);
Chris@9 29
Chris@6 30 transposed m is array<~double[]> -> array<~double[]> =
Chris@6 31 generateMatrix do row col: m[col][row] done (cols m) (rows m);
Chris@8 32
Chris@5 33 {
Chris@5 34 generateMatrix, constMatrix, randomMatrix, zeroMatrix, identityMatrix,
Chris@6 35 width, cols, height, rows, dimensions,
Chris@10 36 copyOfMatrix,
Chris@15 37 transposed,
Chris@5 38 }
Chris@5 39