# HG changeset patch # User Chris Cannam # Date 1383062806 0 # Node ID 8e39fa8a6a1f41ce93df29ccfcd3ac140bf297e9 # Parent de6e80e228859098ad4f64f3ea81c7736eed5c30 Add asRows, asColumns diff -r de6e80e22885 -r 8e39fa8a6a1f src/may/matrix/complex.yeti --- a/src/may/matrix/complex.yeti Tue Oct 29 11:33:38 2013 +0000 +++ b/src/may/matrix/complex.yeti Tue Oct 29 16:06:46 2013 +0000 @@ -59,7 +59,23 @@ joff = if k > 0 then k else 0 fi; n = min (cm.size.columns - joff) (cm.size.rows - ioff); pget = maybe' \(vec.zeros n) (mat.getDiagonal k); - array (map2 cpx.complex (pget cm.real) (pget cm.imaginary))); + cpx.complexArray (pget cm.real) (pget cm.imaginary)); + +asRows cm = + (partAsRows p = + case p of + Some m: mat.asRows m; + none: map \(vec.zeros cm.size.columns) [1..cm.size.rows]; + esac; + map2 cpx.complexArray (partAsRows cm.real) (partAsRows cm.imaginary)); + +asColumns cm = + (partAsColumns p = + case p of + Some m: mat.asColumns m; + none: map \(vec.zeros cm.size.rows) [1..cm.size.columns]; + esac; + map2 cpx.complexArray (partAsColumns cm.real) (partAsColumns cm.imaginary)); generate f size = //!!! doc: inefficient if function is not fast as it's called @@ -280,6 +296,8 @@ getColumn, getRow, getDiagonal, + asRows, + asColumns, generate, constMatrix, zeroMatrix, @@ -314,6 +332,8 @@ getColumn is number -> complexmatrix -> array, getRow is number -> complexmatrix -> array, getDiagonal is number -> complexmatrix -> array, + asRows is complexmatrix -> list>, + asColumns is complexmatrix -> list>, generate is (number -> number -> cplx) -> { .rows is number, .columns is number } -> complexmatrix, constMatrix is cplx -> { .rows is number, .columns is number } -> complexmatrix, zeroMatrix is { .rows is number, .columns is number } -> complexmatrix,