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,