[ { { 4181 6765 } { 6765 10946 } } ]
[ { { 0 1 } { 1 1 } } 20 m^n ] unit-test
+[ { { 0 1 } { 1 1 } } -20 m^n ] [ negative-power-matrix? ] must-fail-with
{
{ { 0 5 0 10 } { 6 7 12 14 } { 0 15 0 20 } { 18 21 24 28 } }
: norm-gram-schmidt ( seq -- orthonormal )
gram-schmidt [ normalize ] map ;
-: m^n ( m n -- n )
+ERROR: negative-power-matrix m n ;
+
+: (m^n) ( m n -- n )
make-bits over first length identity-matrix
[ [ dupd m. ] when [ dup m. ] dip ] reduce nip ;
+: m^n ( m n -- n )
+ dup 0 >= [ (m^n) ] [ negative-power-matrix ] if ;
+
: stitch ( m -- m' )
[ ] [ [ append ] 2map ] map-reduce ;