math.blas.matrices: port back to new functors

modern-harvey2
Doug Coleman 2017-12-28 18:51:51 -08:00
parent 41859c47e7
commit a40fef851a
3 changed files with 208 additions and 211 deletions

View File

@ -96,10 +96,10 @@ ARTICLE: "math.blas.matrices" "BLAS interface matrix operations"
} }
"Literal syntax:" "Literal syntax:"
{ $subsections { $subsections
postpone: \smatrix{ postpone: \Smatrix{
postpone: \dmatrix{ postpone: \Dmatrix{
postpone: \cmatrix{ postpone: \Cmatrix{
postpone: \zmatrix{ postpone: \Zmatrix{
} ; } ;
@ -270,8 +270,8 @@ HELP: <empty-vector>
{ $values { "length" "The length of the new vector" } { "exemplar" blas-vector-base blas-matrix-base } { "vector" blas-vector-base } } { $values { "length" "The length of the new vector" } { "exemplar" blas-vector-base blas-matrix-base } { "vector" blas-vector-base } }
{ $description "Return a vector of zeros with the given " { $snippet "length" } " and the same element type as " { $snippet "v" } "." } ; { $description "Return a vector of zeros with the given " { $snippet "length" } " and the same element type as " { $snippet "v" } "." } ;
HELP: \smatrix{ HELP: \Smatrix{
{ $syntax "smatrix{ { $syntax "Smatrix{
{ 1.0 0.0 0.0 1.0 } { 1.0 0.0 0.0 1.0 }
{ 0.0 1.0 0.0 2.0 } { 0.0 1.0 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
@ -279,8 +279,8 @@ HELP: \smatrix{
}" } }" }
{ $description "Construct a literal " { $link float-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ; { $description "Construct a literal " { $link float-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ;
HELP: \dmatrix{ HELP: \Dmatrix{
{ $syntax "dmatrix{ { $syntax "Dmatrix{
{ 1.0 0.0 0.0 1.0 } { 1.0 0.0 0.0 1.0 }
{ 0.0 1.0 0.0 2.0 } { 0.0 1.0 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
@ -288,8 +288,8 @@ HELP: \dmatrix{
}" } }" }
{ $description "Construct a literal " { $link double-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ; { $description "Construct a literal " { $link double-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ;
HELP: \cmatrix{ HELP: \Cmatrix{
{ $syntax "cmatrix{ { $syntax "Cmatrix{
{ 1.0 0.0 0.0 1.0 } { 1.0 0.0 0.0 1.0 }
{ 0.0 C{ 0.0 1.0 } 0.0 2.0 } { 0.0 C{ 0.0 1.0 } 0.0 2.0 }
{ 0.0 0.0 -1.0 3.0 } { 0.0 0.0 -1.0 3.0 }
@ -297,8 +297,8 @@ HELP: \cmatrix{
}" } }" }
{ $description "Construct a literal " { $link complex-float-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ; { $description "Construct a literal " { $link complex-float-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ;
HELP: \zmatrix{ HELP: \Zmatrix{
{ $syntax "zmatrix{ { $syntax "Zmatrix{
{ 1.0 0.0 0.0 1.0 } { 1.0 0.0 0.0 1.0 }
{ 0.0 C{ 0.0 1.0 } 0.0 2.0 } { 0.0 C{ 0.0 1.0 } 0.0 2.0 }
{ 0.0 0.0 -1.0 3.0 } { 0.0 0.0 -1.0 3.0 }
@ -307,6 +307,6 @@ HELP: \zmatrix{
{ $description "Construct a literal " { $link complex-double-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ; { $description "Construct a literal " { $link complex-double-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ;
{ {
postpone: \smatrix{ postpone: \dmatrix{ postpone: \Smatrix{ postpone: \Dmatrix{
postpone: \cmatrix{ postpone: \zmatrix{ postpone: \Cmatrix{ postpone: \Zmatrix{
} related-words } related-words

View File

@ -4,76 +4,76 @@ IN: math.blas.matrices.tests
! clone ! clone
{ smatrix{ { Smatrix{
{ 1.0 2.0 3.0 } { 1.0 2.0 3.0 }
{ 4.0 5.0 6.0 } { 4.0 5.0 6.0 }
{ 7.0 8.0 9.0 } { 7.0 8.0 9.0 }
} } [ } } [
smatrix{ Smatrix{
{ 1.0 2.0 3.0 } { 1.0 2.0 3.0 }
{ 4.0 5.0 6.0 } { 4.0 5.0 6.0 }
{ 7.0 8.0 9.0 } { 7.0 8.0 9.0 }
} clone } clone
] unit-test ] unit-test
{ f } [ { f } [
smatrix{ Smatrix{
{ 1.0 2.0 3.0 } { 1.0 2.0 3.0 }
{ 4.0 5.0 6.0 } { 4.0 5.0 6.0 }
{ 7.0 8.0 9.0 } { 7.0 8.0 9.0 }
} dup clone eq? } dup clone eq?
] unit-test ] unit-test
{ dmatrix{ { Dmatrix{
{ 1.0 2.0 3.0 } { 1.0 2.0 3.0 }
{ 4.0 5.0 6.0 } { 4.0 5.0 6.0 }
{ 7.0 8.0 9.0 } { 7.0 8.0 9.0 }
} } [ } } [
dmatrix{ Dmatrix{
{ 1.0 2.0 3.0 } { 1.0 2.0 3.0 }
{ 4.0 5.0 6.0 } { 4.0 5.0 6.0 }
{ 7.0 8.0 9.0 } { 7.0 8.0 9.0 }
} clone } clone
] unit-test ] unit-test
{ f } [ { f } [
dmatrix{ Dmatrix{
{ 1.0 2.0 3.0 } { 1.0 2.0 3.0 }
{ 4.0 5.0 6.0 } { 4.0 5.0 6.0 }
{ 7.0 8.0 9.0 } { 7.0 8.0 9.0 }
} dup clone eq? } dup clone eq?
] unit-test ] unit-test
{ cmatrix{ { Cmatrix{
{ C{ 1.0 1.0 } 2.0 3.0 } { C{ 1.0 1.0 } 2.0 3.0 }
{ 4.0 C{ 5.0 2.0 } 6.0 } { 4.0 C{ 5.0 2.0 } 6.0 }
{ 7.0 8.0 C{ 9.0 3.0 } } { 7.0 8.0 C{ 9.0 3.0 } }
} } [ } } [
cmatrix{ Cmatrix{
{ C{ 1.0 1.0 } 2.0 3.0 } { C{ 1.0 1.0 } 2.0 3.0 }
{ 4.0 C{ 5.0 2.0 } 6.0 } { 4.0 C{ 5.0 2.0 } 6.0 }
{ 7.0 8.0 C{ 9.0 3.0 } } { 7.0 8.0 C{ 9.0 3.0 } }
} clone } clone
] unit-test ] unit-test
{ f } [ { f } [
cmatrix{ Cmatrix{
{ C{ 1.0 1.0 } 2.0 3.0 } { C{ 1.0 1.0 } 2.0 3.0 }
{ 4.0 C{ 5.0 2.0 } 6.0 } { 4.0 C{ 5.0 2.0 } 6.0 }
{ 7.0 8.0 C{ 9.0 3.0 } } { 7.0 8.0 C{ 9.0 3.0 } }
} dup clone eq? } dup clone eq?
] unit-test ] unit-test
{ zmatrix{ { Zmatrix{
{ C{ 1.0 1.0 } 2.0 3.0 } { C{ 1.0 1.0 } 2.0 3.0 }
{ 4.0 C{ 5.0 2.0 } 6.0 } { 4.0 C{ 5.0 2.0 } 6.0 }
{ 7.0 8.0 C{ 9.0 3.0 } } { 7.0 8.0 C{ 9.0 3.0 } }
} } [ } } [
zmatrix{ Zmatrix{
{ C{ 1.0 1.0 } 2.0 3.0 } { C{ 1.0 1.0 } 2.0 3.0 }
{ 4.0 C{ 5.0 2.0 } 6.0 } { 4.0 C{ 5.0 2.0 } 6.0 }
{ 7.0 8.0 C{ 9.0 3.0 } } { 7.0 8.0 C{ 9.0 3.0 } }
} clone } clone
] unit-test ] unit-test
{ f } [ { f } [
zmatrix{ Zmatrix{
{ C{ 1.0 1.0 } 2.0 3.0 } { C{ 1.0 1.0 } 2.0 3.0 }
{ 4.0 C{ 5.0 2.0 } 6.0 } { 4.0 C{ 5.0 2.0 } 6.0 }
{ 7.0 8.0 C{ 9.0 3.0 } } { 7.0 8.0 C{ 9.0 3.0 } }
@ -82,148 +82,148 @@ IN: math.blas.matrices.tests
! M.V ! M.V
{ svector{ 3.0 1.0 6.0 } } [ { Svector{ 3.0 1.0 6.0 } } [
smatrix{ Smatrix{
{ 0.0 1.0 0.0 1.0 } { 0.0 1.0 0.0 1.0 }
{ -1.0 0.0 0.0 2.0 } { -1.0 0.0 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
} }
svector{ 1.0 2.0 3.0 1.0 } Svector{ 1.0 2.0 3.0 1.0 }
M.V M.V
] unit-test ] unit-test
{ svector{ -2.0 1.0 3.0 14.0 } } [ { Svector{ -2.0 1.0 3.0 14.0 } } [
smatrix{ Smatrix{
{ 0.0 1.0 0.0 1.0 } { 0.0 1.0 0.0 1.0 }
{ -1.0 0.0 0.0 2.0 } { -1.0 0.0 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
} Mtranspose } Mtranspose
svector{ 1.0 2.0 3.0 } Svector{ 1.0 2.0 3.0 }
M.V M.V
] unit-test ] unit-test
{ dvector{ 3.0 1.0 6.0 } } [ { Dvector{ 3.0 1.0 6.0 } } [
dmatrix{ Dmatrix{
{ 0.0 1.0 0.0 1.0 } { 0.0 1.0 0.0 1.0 }
{ -1.0 0.0 0.0 2.0 } { -1.0 0.0 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
} }
dvector{ 1.0 2.0 3.0 1.0 } Dvector{ 1.0 2.0 3.0 1.0 }
M.V M.V
] unit-test ] unit-test
{ dvector{ -2.0 1.0 3.0 14.0 } } [ { Dvector{ -2.0 1.0 3.0 14.0 } } [
dmatrix{ Dmatrix{
{ 0.0 1.0 0.0 1.0 } { 0.0 1.0 0.0 1.0 }
{ -1.0 0.0 0.0 2.0 } { -1.0 0.0 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
} Mtranspose } Mtranspose
dvector{ 1.0 2.0 3.0 } Dvector{ 1.0 2.0 3.0 }
M.V M.V
] unit-test ] unit-test
{ cvector{ 3.0 C{ 1.0 2.0 } 6.0 } } [ { Cvector{ 3.0 C{ 1.0 2.0 } 6.0 } } [
cmatrix{ Cmatrix{
{ 0.0 1.0 0.0 1.0 } { 0.0 1.0 0.0 1.0 }
{ -1.0 C{ 0.0 1.0 } 0.0 2.0 } { -1.0 C{ 0.0 1.0 } 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
} }
cvector{ 1.0 2.0 3.0 1.0 } Cvector{ 1.0 2.0 3.0 1.0 }
M.V M.V
] unit-test ] unit-test
{ cvector{ -2.0 C{ 1.0 2.0 } 3.0 14.0 } } [ { Cvector{ -2.0 C{ 1.0 2.0 } 3.0 14.0 } } [
cmatrix{ Cmatrix{
{ 0.0 1.0 0.0 1.0 } { 0.0 1.0 0.0 1.0 }
{ -1.0 C{ 0.0 1.0 } 0.0 2.0 } { -1.0 C{ 0.0 1.0 } 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
} Mtranspose } Mtranspose
cvector{ 1.0 2.0 3.0 } Cvector{ 1.0 2.0 3.0 }
M.V M.V
] unit-test ] unit-test
{ zvector{ 3.0 C{ 1.0 2.0 } 6.0 } } [ { Zvector{ 3.0 C{ 1.0 2.0 } 6.0 } } [
zmatrix{ Zmatrix{
{ 0.0 1.0 0.0 1.0 } { 0.0 1.0 0.0 1.0 }
{ -1.0 C{ 0.0 1.0 } 0.0 2.0 } { -1.0 C{ 0.0 1.0 } 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
} }
zvector{ 1.0 2.0 3.0 1.0 } Zvector{ 1.0 2.0 3.0 1.0 }
M.V M.V
] unit-test ] unit-test
{ zvector{ -2.0 C{ 1.0 2.0 } 3.0 14.0 } } [ { Zvector{ -2.0 C{ 1.0 2.0 } 3.0 14.0 } } [
zmatrix{ Zmatrix{
{ 0.0 1.0 0.0 1.0 } { 0.0 1.0 0.0 1.0 }
{ -1.0 C{ 0.0 1.0 } 0.0 2.0 } { -1.0 C{ 0.0 1.0 } 0.0 2.0 }
{ 0.0 0.0 1.0 3.0 } { 0.0 0.0 1.0 3.0 }
} Mtranspose } Mtranspose
zvector{ 1.0 2.0 3.0 } Zvector{ 1.0 2.0 3.0 }
M.V M.V
] unit-test ] unit-test
! V(*) ! V(*)
{ smatrix{ { Smatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 4.0 6.0 8.0 } { 2.0 4.0 6.0 8.0 }
{ 3.0 6.0 9.0 12.0 } { 3.0 6.0 9.0 12.0 }
} } [ } } [
svector{ 1.0 2.0 3.0 } svector{ 1.0 2.0 3.0 4.0 } V(*) Svector{ 1.0 2.0 3.0 } Svector{ 1.0 2.0 3.0 4.0 } V(*)
] unit-test ] unit-test
{ dmatrix{ { Dmatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 4.0 6.0 8.0 } { 2.0 4.0 6.0 8.0 }
{ 3.0 6.0 9.0 12.0 } { 3.0 6.0 9.0 12.0 }
} } [ } } [
dvector{ 1.0 2.0 3.0 } dvector{ 1.0 2.0 3.0 4.0 } V(*) Dvector{ 1.0 2.0 3.0 } Dvector{ 1.0 2.0 3.0 4.0 } V(*)
] unit-test ] unit-test
{ cmatrix{ { Cmatrix{
{ 1.0 2.0 C{ 3.0 -3.0 } 4.0 } { 1.0 2.0 C{ 3.0 -3.0 } 4.0 }
{ 2.0 4.0 C{ 6.0 -6.0 } 8.0 } { 2.0 4.0 C{ 6.0 -6.0 } 8.0 }
{ C{ 3.0 3.0 } C{ 6.0 6.0 } 18.0 C{ 12.0 12.0 } } { C{ 3.0 3.0 } C{ 6.0 6.0 } 18.0 C{ 12.0 12.0 } }
} } [ } } [
cvector{ 1.0 2.0 C{ 3.0 3.0 } } cvector{ 1.0 2.0 C{ 3.0 -3.0 } 4.0 } V(*) Cvector{ 1.0 2.0 C{ 3.0 3.0 } } Cvector{ 1.0 2.0 C{ 3.0 -3.0 } 4.0 } V(*)
] unit-test ] unit-test
{ zmatrix{ { Zmatrix{
{ 1.0 2.0 C{ 3.0 -3.0 } 4.0 } { 1.0 2.0 C{ 3.0 -3.0 } 4.0 }
{ 2.0 4.0 C{ 6.0 -6.0 } 8.0 } { 2.0 4.0 C{ 6.0 -6.0 } 8.0 }
{ C{ 3.0 3.0 } C{ 6.0 6.0 } 18.0 C{ 12.0 12.0 } } { C{ 3.0 3.0 } C{ 6.0 6.0 } 18.0 C{ 12.0 12.0 } }
} } [ } } [
zvector{ 1.0 2.0 C{ 3.0 3.0 } } zvector{ 1.0 2.0 C{ 3.0 -3.0 } 4.0 } V(*) Zvector{ 1.0 2.0 C{ 3.0 3.0 } } Zvector{ 1.0 2.0 C{ 3.0 -3.0 } 4.0 } V(*)
] unit-test ] unit-test
! M. ! M.
{ smatrix{ { Smatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 0.0 -3.0 0.0 0.0 } { 0.0 0.0 -3.0 0.0 0.0 }
{ 0.0 4.0 0.0 0.0 10.0 } { 0.0 4.0 0.0 0.0 10.0 }
{ 0.0 0.0 0.0 0.0 0.0 } { 0.0 0.0 0.0 0.0 0.0 }
} } [ } } [
smatrix{ Smatrix{
{ 1.0 0.0 0.0 } { 1.0 0.0 0.0 }
{ 0.0 0.0 -1.0 } { 0.0 0.0 -1.0 }
{ 0.0 2.0 0.0 } { 0.0 2.0 0.0 }
{ 0.0 0.0 0.0 } { 0.0 0.0 0.0 }
} smatrix{ } Smatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 2.0 0.0 0.0 5.0 } { 0.0 2.0 0.0 0.0 5.0 }
{ 0.0 0.0 3.0 0.0 0.0 } { 0.0 0.0 3.0 0.0 0.0 }
} M. } M.
] unit-test ] unit-test
{ smatrix{ { Smatrix{
{ 1.0 0.0 0.0 0.0 } { 1.0 0.0 0.0 0.0 }
{ 0.0 0.0 4.0 0.0 } { 0.0 0.0 4.0 0.0 }
{ 0.0 -3.0 0.0 0.0 } { 0.0 -3.0 0.0 0.0 }
{ 4.0 0.0 0.0 0.0 } { 4.0 0.0 0.0 0.0 }
{ 0.0 0.0 10.0 0.0 } { 0.0 0.0 10.0 0.0 }
} } [ } } [
smatrix{ Smatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 2.0 0.0 0.0 5.0 } { 0.0 2.0 0.0 0.0 5.0 }
{ 0.0 0.0 3.0 0.0 0.0 } { 0.0 0.0 3.0 0.0 0.0 }
} Mtranspose smatrix{ } Mtranspose Smatrix{
{ 1.0 0.0 0.0 } { 1.0 0.0 0.0 }
{ 0.0 0.0 -1.0 } { 0.0 0.0 -1.0 }
{ 0.0 2.0 0.0 } { 0.0 2.0 0.0 }
@ -231,36 +231,36 @@ IN: math.blas.matrices.tests
} Mtranspose M. } Mtranspose M.
] unit-test ] unit-test
{ dmatrix{ { Dmatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 0.0 -3.0 0.0 0.0 } { 0.0 0.0 -3.0 0.0 0.0 }
{ 0.0 4.0 0.0 0.0 10.0 } { 0.0 4.0 0.0 0.0 10.0 }
{ 0.0 0.0 0.0 0.0 0.0 } { 0.0 0.0 0.0 0.0 0.0 }
} } [ } } [
dmatrix{ Dmatrix{
{ 1.0 0.0 0.0 } { 1.0 0.0 0.0 }
{ 0.0 0.0 -1.0 } { 0.0 0.0 -1.0 }
{ 0.0 2.0 0.0 } { 0.0 2.0 0.0 }
{ 0.0 0.0 0.0 } { 0.0 0.0 0.0 }
} dmatrix{ } Dmatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 2.0 0.0 0.0 5.0 } { 0.0 2.0 0.0 0.0 5.0 }
{ 0.0 0.0 3.0 0.0 0.0 } { 0.0 0.0 3.0 0.0 0.0 }
} M. } M.
] unit-test ] unit-test
{ dmatrix{ { Dmatrix{
{ 1.0 0.0 0.0 0.0 } { 1.0 0.0 0.0 0.0 }
{ 0.0 0.0 4.0 0.0 } { 0.0 0.0 4.0 0.0 }
{ 0.0 -3.0 0.0 0.0 } { 0.0 -3.0 0.0 0.0 }
{ 4.0 0.0 0.0 0.0 } { 4.0 0.0 0.0 0.0 }
{ 0.0 0.0 10.0 0.0 } { 0.0 0.0 10.0 0.0 }
} } [ } } [
dmatrix{ Dmatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 2.0 0.0 0.0 5.0 } { 0.0 2.0 0.0 0.0 5.0 }
{ 0.0 0.0 3.0 0.0 0.0 } { 0.0 0.0 3.0 0.0 0.0 }
} Mtranspose dmatrix{ } Mtranspose Dmatrix{
{ 1.0 0.0 0.0 } { 1.0 0.0 0.0 }
{ 0.0 0.0 -1.0 } { 0.0 0.0 -1.0 }
{ 0.0 2.0 0.0 } { 0.0 2.0 0.0 }
@ -268,36 +268,36 @@ IN: math.blas.matrices.tests
} Mtranspose M. } Mtranspose M.
] unit-test ] unit-test
{ cmatrix{ { Cmatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 0.0 -3.0 0.0 0.0 } { 0.0 0.0 -3.0 0.0 0.0 }
{ 0.0 C{ 4.0 -4.0 } 0.0 0.0 10.0 } { 0.0 C{ 4.0 -4.0 } 0.0 0.0 10.0 }
{ 0.0 0.0 0.0 0.0 0.0 } { 0.0 0.0 0.0 0.0 0.0 }
} } [ } } [
cmatrix{ Cmatrix{
{ 1.0 0.0 0.0 } { 1.0 0.0 0.0 }
{ 0.0 0.0 -1.0 } { 0.0 0.0 -1.0 }
{ 0.0 2.0 0.0 } { 0.0 2.0 0.0 }
{ 0.0 0.0 0.0 } { 0.0 0.0 0.0 }
} cmatrix{ } Cmatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 } { 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 }
{ 0.0 0.0 3.0 0.0 0.0 } { 0.0 0.0 3.0 0.0 0.0 }
} M. } M.
] unit-test ] unit-test
{ cmatrix{ { Cmatrix{
{ 1.0 0.0 0.0 0.0 } { 1.0 0.0 0.0 0.0 }
{ 0.0 0.0 C{ 4.0 -4.0 } 0.0 } { 0.0 0.0 C{ 4.0 -4.0 } 0.0 }
{ 0.0 -3.0 0.0 0.0 } { 0.0 -3.0 0.0 0.0 }
{ 4.0 0.0 0.0 0.0 } { 4.0 0.0 0.0 0.0 }
{ 0.0 0.0 10.0 0.0 } { 0.0 0.0 10.0 0.0 }
} } [ } } [
cmatrix{ Cmatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 } { 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 }
{ 0.0 0.0 3.0 0.0 0.0 } { 0.0 0.0 3.0 0.0 0.0 }
} Mtranspose cmatrix{ } Mtranspose Cmatrix{
{ 1.0 0.0 0.0 } { 1.0 0.0 0.0 }
{ 0.0 0.0 -1.0 } { 0.0 0.0 -1.0 }
{ 0.0 2.0 0.0 } { 0.0 2.0 0.0 }
@ -305,36 +305,36 @@ IN: math.blas.matrices.tests
} Mtranspose M. } Mtranspose M.
] unit-test ] unit-test
{ zmatrix{ { Zmatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 0.0 -3.0 0.0 0.0 } { 0.0 0.0 -3.0 0.0 0.0 }
{ 0.0 C{ 4.0 -4.0 } 0.0 0.0 10.0 } { 0.0 C{ 4.0 -4.0 } 0.0 0.0 10.0 }
{ 0.0 0.0 0.0 0.0 0.0 } { 0.0 0.0 0.0 0.0 0.0 }
} } [ } } [
zmatrix{ Zmatrix{
{ 1.0 0.0 0.0 } { 1.0 0.0 0.0 }
{ 0.0 0.0 -1.0 } { 0.0 0.0 -1.0 }
{ 0.0 2.0 0.0 } { 0.0 2.0 0.0 }
{ 0.0 0.0 0.0 } { 0.0 0.0 0.0 }
} zmatrix{ } Zmatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 } { 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 }
{ 0.0 0.0 3.0 0.0 0.0 } { 0.0 0.0 3.0 0.0 0.0 }
} M. } M.
] unit-test ] unit-test
{ zmatrix{ { Zmatrix{
{ 1.0 0.0 0.0 0.0 } { 1.0 0.0 0.0 0.0 }
{ 0.0 0.0 C{ 4.0 -4.0 } 0.0 } { 0.0 0.0 C{ 4.0 -4.0 } 0.0 }
{ 0.0 -3.0 0.0 0.0 } { 0.0 -3.0 0.0 0.0 }
{ 4.0 0.0 0.0 0.0 } { 4.0 0.0 0.0 0.0 }
{ 0.0 0.0 10.0 0.0 } { 0.0 0.0 10.0 0.0 }
} } [ } } [
zmatrix{ Zmatrix{
{ 1.0 0.0 0.0 4.0 0.0 } { 1.0 0.0 0.0 4.0 0.0 }
{ 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 } { 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 }
{ 0.0 0.0 3.0 0.0 0.0 } { 0.0 0.0 3.0 0.0 0.0 }
} Mtranspose zmatrix{ } Mtranspose Zmatrix{
{ 1.0 0.0 0.0 } { 1.0 0.0 0.0 }
{ 0.0 0.0 -1.0 } { 0.0 0.0 -1.0 }
{ 0.0 2.0 0.0 } { 0.0 2.0 0.0 }
@ -344,41 +344,41 @@ IN: math.blas.matrices.tests
! n*M ! n*M
{ smatrix{ { Smatrix{
{ 2.0 0.0 } { 2.0 0.0 }
{ 0.0 2.0 } { 0.0 2.0 }
} } [ } } [
2.0 smatrix{ 2.0 Smatrix{
{ 1.0 0.0 } { 1.0 0.0 }
{ 0.0 1.0 } { 0.0 1.0 }
} n*M } n*M
] unit-test ] unit-test
{ dmatrix{ { Dmatrix{
{ 2.0 0.0 } { 2.0 0.0 }
{ 0.0 2.0 } { 0.0 2.0 }
} } [ } } [
2.0 dmatrix{ 2.0 Dmatrix{
{ 1.0 0.0 } { 1.0 0.0 }
{ 0.0 1.0 } { 0.0 1.0 }
} n*M } n*M
] unit-test ] unit-test
{ cmatrix{ { Cmatrix{
{ C{ 2.0 1.0 } 0.0 } { C{ 2.0 1.0 } 0.0 }
{ 0.0 C{ -1.0 2.0 } } { 0.0 C{ -1.0 2.0 } }
} } [ } } [
C{ 2.0 1.0 } cmatrix{ C{ 2.0 1.0 } Cmatrix{
{ 1.0 0.0 } { 1.0 0.0 }
{ 0.0 C{ 0.0 1.0 } } { 0.0 C{ 0.0 1.0 } }
} n*M } n*M
] unit-test ] unit-test
{ zmatrix{ { Zmatrix{
{ C{ 2.0 1.0 } 0.0 } { C{ 2.0 1.0 } 0.0 }
{ 0.0 C{ -1.0 2.0 } } { 0.0 C{ -1.0 2.0 } }
} } [ } } [
C{ 2.0 1.0 } zmatrix{ C{ 2.0 1.0 } Zmatrix{
{ 1.0 0.0 } { 1.0 0.0 }
{ 0.0 C{ 0.0 1.0 } } { 0.0 C{ 0.0 1.0 } }
} n*M } n*M
@ -386,228 +386,228 @@ IN: math.blas.matrices.tests
! Mrows, Mcols ! Mrows, Mcols
{ svector{ 3.0 3.0 3.0 } } [ { Svector{ 3.0 3.0 3.0 } } [
2 smatrix{ 2 Smatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mcols nth } Mcols nth
] unit-test ] unit-test
{ svector{ 3.0 2.0 3.0 4.0 } } [ { Svector{ 3.0 2.0 3.0 4.0 } } [
2 smatrix{ 2 Smatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mrows nth } Mrows nth
] unit-test ] unit-test
{ 3 } [ { 3 } [
smatrix{ Smatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mrows length } Mrows length
] unit-test ] unit-test
{ 4 } [ { 4 } [
smatrix{ Smatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mcols length } Mcols length
] unit-test ] unit-test
{ svector{ 3.0 3.0 3.0 } } [ { Svector{ 3.0 3.0 3.0 } } [
2 smatrix{ 2 Smatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mtranspose Mrows nth } Mtranspose Mrows nth
] unit-test ] unit-test
{ svector{ 3.0 2.0 3.0 4.0 } } [ { Svector{ 3.0 2.0 3.0 4.0 } } [
2 smatrix{ 2 Smatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mtranspose Mcols nth } Mtranspose Mcols nth
] unit-test ] unit-test
{ 3 } [ { 3 } [
smatrix{ Smatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mtranspose Mcols length } Mtranspose Mcols length
] unit-test ] unit-test
{ 4 } [ { 4 } [
smatrix{ Smatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mtranspose Mrows length } Mtranspose Mrows length
] unit-test ] unit-test
{ dvector{ 3.0 3.0 3.0 } } [ { Dvector{ 3.0 3.0 3.0 } } [
2 dmatrix{ 2 Dmatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mcols nth } Mcols nth
] unit-test ] unit-test
{ dvector{ 3.0 2.0 3.0 4.0 } } [ { Dvector{ 3.0 2.0 3.0 4.0 } } [
2 dmatrix{ 2 Dmatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mrows nth } Mrows nth
] unit-test ] unit-test
{ 3 } [ { 3 } [
dmatrix{ Dmatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mrows length } Mrows length
] unit-test ] unit-test
{ 4 } [ { 4 } [
dmatrix{ Dmatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mcols length } Mcols length
] unit-test ] unit-test
{ dvector{ 3.0 3.0 3.0 } } [ { Dvector{ 3.0 3.0 3.0 } } [
2 dmatrix{ 2 Dmatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mtranspose Mrows nth } Mtranspose Mrows nth
] unit-test ] unit-test
{ dvector{ 3.0 2.0 3.0 4.0 } } [ { Dvector{ 3.0 2.0 3.0 4.0 } } [
2 dmatrix{ 2 Dmatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mtranspose Mcols nth } Mtranspose Mcols nth
] unit-test ] unit-test
{ 3 } [ { 3 } [
dmatrix{ Dmatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mtranspose Mcols length } Mtranspose Mcols length
] unit-test ] unit-test
{ 4 } [ { 4 } [
dmatrix{ Dmatrix{
{ 1.0 2.0 3.0 4.0 } { 1.0 2.0 3.0 4.0 }
{ 2.0 2.0 3.0 4.0 } { 2.0 2.0 3.0 4.0 }
{ 3.0 2.0 3.0 4.0 } { 3.0 2.0 3.0 4.0 }
} Mtranspose Mrows length } Mtranspose Mrows length
] unit-test ] unit-test
{ cvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } } [ { Cvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } } [
2 cmatrix{ 2 Cmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mcols nth } Mcols nth
] unit-test ] unit-test
{ cvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } } [ { Cvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } } [
2 cmatrix{ 2 Cmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mrows nth } Mrows nth
] unit-test ] unit-test
{ 3 } [ { 3 } [
cmatrix{ Cmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mrows length } Mrows length
] unit-test ] unit-test
{ 4 } [ { 4 } [
cmatrix{ Cmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mcols length } Mcols length
] unit-test ] unit-test
{ cvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } } [ { Cvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } } [
2 cmatrix{ 2 Cmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mtranspose Mrows nth } Mtranspose Mrows nth
] unit-test ] unit-test
{ cvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } } [ { Cvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } } [
2 cmatrix{ 2 Cmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mtranspose Mcols nth } Mtranspose Mcols nth
] unit-test ] unit-test
{ 3 } [ { 3 } [
cmatrix{ Cmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mtranspose Mcols length } Mtranspose Mcols length
] unit-test ] unit-test
{ 4 } [ { 4 } [
cmatrix{ Cmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mtranspose Mrows length } Mtranspose Mrows length
] unit-test ] unit-test
{ zvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } } [ { Zvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } } [
2 zmatrix{ 2 Zmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mcols nth } Mcols nth
] unit-test ] unit-test
{ zvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } } [ { Zvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } } [
2 zmatrix{ 2 Zmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mrows nth } Mrows nth
] unit-test ] unit-test
{ 3 } [ { 3 } [
zmatrix{ Zmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mrows length } Mrows length
] unit-test ] unit-test
{ 4 } [ { 4 } [
zmatrix{ Zmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mcols length } Mcols length
] unit-test ] unit-test
{ zvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } } [ { Zvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } } [
2 zmatrix{ 2 Zmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mtranspose Mrows nth } Mtranspose Mrows nth
] unit-test ] unit-test
{ zvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } } [ { Zvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } } [
2 zmatrix{ 2 Zmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mtranspose Mcols nth } Mtranspose Mcols nth
] unit-test ] unit-test
{ 3 } [ { 3 } [
zmatrix{ Zmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
} Mtranspose Mcols length } Mtranspose Mcols length
] unit-test ] unit-test
{ 4 } [ { 4 } [
zmatrix{ Zmatrix{
{ C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } }
{ C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } }
{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } }
@ -616,92 +616,92 @@ IN: math.blas.matrices.tests
! Msub ! Msub
{ smatrix{ { Smatrix{
{ 3.0 2.0 1.0 } { 3.0 2.0 1.0 }
{ 0.0 1.0 0.0 } { 0.0 1.0 0.0 }
} } [ } } [
smatrix{ Smatrix{
{ 0.0 1.0 2.0 3.0 2.0 } { 0.0 1.0 2.0 3.0 2.0 }
{ 1.0 0.0 3.0 2.0 1.0 } { 1.0 0.0 3.0 2.0 1.0 }
{ 2.0 3.0 0.0 1.0 0.0 } { 2.0 3.0 0.0 1.0 0.0 }
} 1 2 2 3 Msub } 1 2 2 3 Msub
] unit-test ] unit-test
{ smatrix{ { Smatrix{
{ 3.0 0.0 } { 3.0 0.0 }
{ 2.0 1.0 } { 2.0 1.0 }
{ 1.0 0.0 } { 1.0 0.0 }
} } [ } } [
smatrix{ Smatrix{
{ 0.0 1.0 2.0 3.0 2.0 } { 0.0 1.0 2.0 3.0 2.0 }
{ 1.0 0.0 3.0 2.0 1.0 } { 1.0 0.0 3.0 2.0 1.0 }
{ 2.0 3.0 0.0 1.0 0.0 } { 2.0 3.0 0.0 1.0 0.0 }
} Mtranspose 2 1 3 2 Msub } Mtranspose 2 1 3 2 Msub
] unit-test ] unit-test
{ dmatrix{ { Dmatrix{
{ 3.0 2.0 1.0 } { 3.0 2.0 1.0 }
{ 0.0 1.0 0.0 } { 0.0 1.0 0.0 }
} } [ } } [
dmatrix{ Dmatrix{
{ 0.0 1.0 2.0 3.0 2.0 } { 0.0 1.0 2.0 3.0 2.0 }
{ 1.0 0.0 3.0 2.0 1.0 } { 1.0 0.0 3.0 2.0 1.0 }
{ 2.0 3.0 0.0 1.0 0.0 } { 2.0 3.0 0.0 1.0 0.0 }
} 1 2 2 3 Msub } 1 2 2 3 Msub
] unit-test ] unit-test
{ dmatrix{ { Dmatrix{
{ 3.0 0.0 } { 3.0 0.0 }
{ 2.0 1.0 } { 2.0 1.0 }
{ 1.0 0.0 } { 1.0 0.0 }
} } [ } } [
dmatrix{ Dmatrix{
{ 0.0 1.0 2.0 3.0 2.0 } { 0.0 1.0 2.0 3.0 2.0 }
{ 1.0 0.0 3.0 2.0 1.0 } { 1.0 0.0 3.0 2.0 1.0 }
{ 2.0 3.0 0.0 1.0 0.0 } { 2.0 3.0 0.0 1.0 0.0 }
} Mtranspose 2 1 3 2 Msub } Mtranspose 2 1 3 2 Msub
] unit-test ] unit-test
{ cmatrix{ { Cmatrix{
{ C{ 3.0 3.0 } 2.0 1.0 } { C{ 3.0 3.0 } 2.0 1.0 }
{ 0.0 1.0 0.0 } { 0.0 1.0 0.0 }
} } [ } } [
cmatrix{ Cmatrix{
{ 0.0 1.0 2.0 3.0 2.0 } { 0.0 1.0 2.0 3.0 2.0 }
{ 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 } { 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 }
{ 2.0 3.0 0.0 1.0 0.0 } { 2.0 3.0 0.0 1.0 0.0 }
} 1 2 2 3 Msub } 1 2 2 3 Msub
] unit-test ] unit-test
{ cmatrix{ { Cmatrix{
{ C{ 3.0 3.0 } 0.0 } { C{ 3.0 3.0 } 0.0 }
{ 2.0 1.0 } { 2.0 1.0 }
{ 1.0 0.0 } { 1.0 0.0 }
} } [ } } [
cmatrix{ Cmatrix{
{ 0.0 1.0 2.0 3.0 2.0 } { 0.0 1.0 2.0 3.0 2.0 }
{ 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 } { 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 }
{ 2.0 3.0 0.0 1.0 0.0 } { 2.0 3.0 0.0 1.0 0.0 }
} Mtranspose 2 1 3 2 Msub } Mtranspose 2 1 3 2 Msub
] unit-test ] unit-test
{ zmatrix{ { Zmatrix{
{ C{ 3.0 3.0 } 2.0 1.0 } { C{ 3.0 3.0 } 2.0 1.0 }
{ 0.0 1.0 0.0 } { 0.0 1.0 0.0 }
} } [ } } [
zmatrix{ Zmatrix{
{ 0.0 1.0 2.0 3.0 2.0 } { 0.0 1.0 2.0 3.0 2.0 }
{ 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 } { 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 }
{ 2.0 3.0 0.0 1.0 0.0 } { 2.0 3.0 0.0 1.0 0.0 }
} 1 2 2 3 Msub } 1 2 2 3 Msub
] unit-test ] unit-test
{ zmatrix{ { Zmatrix{
{ C{ 3.0 3.0 } 0.0 } { C{ 3.0 3.0 } 0.0 }
{ 2.0 1.0 } { 2.0 1.0 }
{ 1.0 0.0 } { 1.0 0.0 }
} } [ } } [
zmatrix{ Zmatrix{
{ 0.0 1.0 2.0 3.0 2.0 } { 0.0 1.0 2.0 3.0 2.0 }
{ 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 } { 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 }
{ 2.0 3.0 0.0 1.0 0.0 } { 2.0 3.0 0.0 1.0 0.0 }

View File

@ -5,7 +5,7 @@ math.blas.ffi math.blas.vectors math.blas.vectors.private
math.complex math.functions math.order functors words math.complex math.functions math.order functors words
sequences sequences.merged sequences.private shuffle sequences sequences.merged sequences.private shuffle
parser prettyprint.backend prettyprint.custom ascii parser prettyprint.backend prettyprint.custom ascii
specialized-arrays ; specialized-arrays functors2 strings ;
FROM: alien.c-types => float ; FROM: alien.c-types => float ;
SPECIALIZED-ARRAY: float SPECIALIZED-ARRAY: float
SPECIALIZED-ARRAY: double SPECIALIZED-ARRAY: double
@ -246,70 +246,67 @@ M: blas-matrix-base equal?
} 2&& ; } 2&& ;
<< <<
INLINE-FUNCTOR: blas-matrix ( type: name t: string u: string c: string -- ) [[
! VECTOR IS ${TYPE}-blas-vector
! <VECTOR> IS <${TYPE}-blas-vector>
! XGEMV IS ${T}GEMV
! XGEMM IS ${T}GEMM
! XGERU IS ${T}GER${U}
! XGERC IS ${T}GER${C}
<FUNCTOR: (define-blas-matrix) ( TYPE T U C -- ) ! MATRIX DEFINES-CLASS ${TYPE}-blas-matrix
! <MATRIX> DEFINES <${TYPE}-blas-matrix>
! >MATRIX DEFINES >${TYPE}-blas-matrix
VECTOR IS ${TYPE}-blas-vector ! t [ T >lower ]
<VECTOR> IS <${TYPE}-blas-vector>
XGEMV IS ${T}GEMV
XGEMM IS ${T}GEMM
XGERU IS ${T}GER${U}
XGERC IS ${T}GER${C}
MATRIX DEFINES-CLASS ${TYPE}-blas-matrix ! XMATRIX{ DEFINES ${t}matrix{
<MATRIX> DEFINES <${TYPE}-blas-matrix>
>MATRIX DEFINES >${TYPE}-blas-matrix
t [ T >lower ] TUPLE: ${type}-blas-matrix < blas-matrix-base ;
: <${type}-blas-matrix> ( underlying ld rows cols transpose -- matrix )
${type}-blas-matrix boa ; inline
: >${type}-blas-matrix ( arrays -- matrix )
[ ${type} >c-array underlying>> ] (>matrix) <${type}-blas-matrix> ;
SYNTAX: ${t}matrix{ \ } [ >${type}-blas-matrix ] parse-literal ;
XMATRIX{ DEFINES ${t}matrix{ M: ${type}-blas-matrix element-type
drop ${type} ;
M: ${type}-blas-matrix (blas-matrix-like)
drop <${type}-blas-matrix> ;
M: ${type}-blas-vector (blas-matrix-like)
drop <${type}-blas-matrix> ;
M: ${type}-blas-matrix (blas-vector-like)
drop <${type}-blas-vector> ;
WHERE M: ${type}-blas-vector n*M.V+n*V!
(prepare-gemv) [ ${t}GEMV ] dip ;
TUPLE: MATRIX < blas-matrix-base ; M: ${type}-blas-matrix n*M.M+n*M!
: <MATRIX> ( underlying ld rows cols transpose -- matrix ) (prepare-gemm) [ ${t}GEMM ] dip ;
MATRIX boa ; inline M: ${type}-blas-matrix n*V(*)V+M!
(prepare-ger) [ ${t}GER${u} ] dip ;
M: MATRIX element-type M: ${type}-blas-matrix n*V(*)Vconj+M!
drop TYPE ; (prepare-ger) [ ${t}GER${c} ] dip ;
M: MATRIX (blas-matrix-like)
drop <MATRIX> ;
M: VECTOR (blas-matrix-like)
drop <MATRIX> ;
M: MATRIX (blas-vector-like)
drop <VECTOR> ;
: >MATRIX ( arrays -- matrix )
[ TYPE >c-array underlying>> ] (>matrix) <MATRIX> ;
M: VECTOR n*M.V+n*V!
(prepare-gemv) [ XGEMV ] dip ;
M: MATRIX n*M.M+n*M!
(prepare-gemm) [ XGEMM ] dip ;
M: MATRIX n*V(*)V+M!
(prepare-ger) [ XGERU ] dip ;
M: MATRIX n*V(*)Vconj+M!
(prepare-ger) [ XGERC ] dip ;
SYNTAX: XMATRIX{ \ } [ >MATRIX ] parse-literal ;
M: MATRIX pprint-delims
drop \ XMATRIX{ \ } ;
;FUNCTOR>
: define-real-blas-matrix ( TYPE T -- )
"" "" (define-blas-matrix) ;
: define-complex-blas-matrix ( TYPE T -- )
"U" "C" (define-blas-matrix) ;
float "S" define-real-blas-matrix
double "D" define-real-blas-matrix
complex-float "C" define-complex-blas-matrix
complex-double "Z" define-complex-blas-matrix
M: ${type}-blas-matrix pprint-delims
drop \ ${t}matrix{ \ } ;
]]
>> >>
! : define-real-blas-matrix ( TYPE T -- )
! "" "" (define-blas-matrix) ;
! : define-complex-blas-matrix ( TYPE T -- )
! "U" "C" (define-blas-matrix) ;
! float "S" define-real-blas-matrix
! double "D" define-real-blas-matrix
! complex-float "C" define-complex-blas-matrix
! complex-double "Z" define-complex-blas-matrix
BLAS-MATRIX: float "S" "" ""
BLAS-MATRIX: double "D" "" ""
BLAS-MATRIX: complex-float "C" "U" "C"
BLAS-MATRIX: complex-double "Z" "U" "C"
M: blas-matrix-base >pprint-sequence Mrows ; M: blas-matrix-base >pprint-sequence Mrows ;
M: blas-matrix-base pprint* pprint-object ; M: blas-matrix-base pprint* pprint-object ;