Mercurial > hg > may
changeset 473:8e39fa8a6a1f
Add asRows, asColumns
author | Chris Cannam |
---|---|
date | Tue, 29 Oct 2013 16:06:46 +0000 |
parents | de6e80e22885 |
children | 0541d0d722df |
files | src/may/matrix/complex.yeti |
diffstat | 1 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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<cplx>, getRow is number -> complexmatrix -> array<cplx>, getDiagonal is number -> complexmatrix -> array<cplx>, + asRows is complexmatrix -> list<array<cplx>>, + asColumns is complexmatrix -> list<array<cplx>>, 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,