[pure-lang-svn] SF.net SVN: pure-lang:[888] pure/trunk/test
Status: Beta
Brought to you by:
agraef
From: <ag...@us...> - 2008-09-28 06:35:37
|
Revision: 888 http://pure-lang.svn.sourceforge.net/pure-lang/?rev=888&view=rev Author: agraef Date: 2008-09-28 06:35:33 +0000 (Sun, 28 Sep 2008) Log Message: ----------- Add matrix tests. Added Paths: ----------- pure/trunk/test/test025.log pure/trunk/test/test025.pure Added: pure/trunk/test/test025.log =================================================================== --- pure/trunk/test/test025.log (rev 0) +++ pure/trunk/test/test025.log 2008-09-28 06:35:33 UTC (rev 888) @@ -0,0 +1,475 @@ +let x = {1,2,3;4,5,6}; +x; +{1,2,3;4,5,6} +x'; +{1,4;2,5;3,6} +reverse x; +{6,5,4;3,2,1} +#x; +6 +dim x; +2,3 +redim (3,2) x; +{1,2;3,4;5,6} +x!(1,1); +5 +x!!(0,0..2); +{1,2,3} +x!!(0..1,0..1); +{1,2;4,5} +diag x; +{1,5} +supdiag x 1; +{2} +subdiag x 1; +{4} +supdiag x 1===subdiag x (-1); +1 +let x = {1.0,2.0,3.0;4.0,5.0,6.0}; +x; +{1.0,2.0,3.0;4.0,5.0,6.0} +x'; +{1.0,4.0;2.0,5.0;3.0,6.0} +reverse x; +{6.0,5.0,4.0;3.0,2.0,1.0} +#x; +6 +dim x; +2,3 +redim (3,2) x; +{1.0,2.0;3.0,4.0;5.0,6.0} +x!(1,1); +5.0 +x!!(0,0..2); +{1.0,2.0,3.0} +x!!(0..1,0..1); +{1.0,2.0;4.0,5.0} +diag x; +{1.0,5.0} +supdiag x 1; +{2.0} +subdiag x 1; +{4.0} +supdiag x 1===subdiag x (-1); +1 +let x = {1.0+:-2.0,2.0+:-4.0,3.0+:-6.0;4.0+:1.0,5.0+:2.0,6.0+:3.0}; +x; +{1.0+:-2.0,2.0+:-4.0,3.0+:-6.0;4.0+:1.0,5.0+:2.0,6.0+:3.0} +x'; +{1.0+:-2.0,4.0+:1.0;2.0+:-4.0,5.0+:2.0;3.0+:-6.0,6.0+:3.0} +reverse x; +{6.0+:3.0,5.0+:2.0,4.0+:1.0;3.0+:-6.0,2.0+:-4.0,1.0+:-2.0} +#x; +6 +dim x; +2,3 +redim (3,2) x; +{1.0+:-2.0,2.0+:-4.0;3.0+:-6.0,4.0+:1.0;5.0+:2.0,6.0+:3.0} +x!(1,1); +5.0+:2.0 +x!!(0,0..2); +{1.0+:-2.0,2.0+:-4.0,3.0+:-6.0} +x!!(0..1,0..1); +{1.0+:-2.0,2.0+:-4.0;4.0+:1.0,5.0+:2.0} +diag x; +{1.0+:-2.0,5.0+:2.0} +supdiag x 1; +{2.0+:-4.0} +subdiag x 1; +{4.0+:1.0} +supdiag x 1===subdiag x (-1); +1 +let x = {1,2,3;4,5,6}; +{ + rule #0: y = dmatrix x + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = dmatrix x; +{ + rule #0: z = cmatrix y + state 0: #0 + <var> state 1 + state 1: #0 +} +let z = cmatrix y; +x; +{1,2,3;4,5,6} +y; +{1.0,2.0,3.0;4.0,5.0,6.0} +z; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +imatrix x===x; +1 +dmatrix y===y; +1 +cmatrix z===z; +1 +imatrix y===x; +1 +re z===y; +1 +im z===dmatrix (dim x); +1 +imatrix z; +{1,0,2,0,3,0;4,0,5,0,6,0} +dmatrix z; +{1.0,0.0,2.0,0.0,3.0,0.0;4.0,0.0,5.0,0.0,6.0,0.0} +let x = {1,2,3;4,5,6}; +{ + rule #0: y = int_matrix_view (3,2) (pointer x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = int_matrix_view (3,2) (pointer x); +x; +{1,2,3;4,5,6} +y; +{1,2;3,4;5,6} +list x==list y; +1 +dim x==reverse (dim y); +1 +{ + rule #0: y = double_matrix (2,3) (double_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = double_matrix (2,3) (double_pointer #<pointer 0> x); +x; +{1,2,3;4,5,6} +y; +{1.0,2.0,3.0;4.0,5.0,6.0} +x==y; +1 +{ + rule #0: y = float_matrix (2,3) (float_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = float_matrix (2,3) (float_pointer #<pointer 0> x); +x; +{1,2,3;4,5,6} +y; +{1.0,2.0,3.0;4.0,5.0,6.0} +x==y; +1 +{ + rule #0: y = complex_matrix (2,3) (complex_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = complex_matrix (2,3) (complex_pointer #<pointer 0> x); +x; +{1,2,3;4,5,6} +y; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +x==y; +1 +{ + rule #0: y = complex_float_matrix (2,3) (complex_float_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = complex_float_matrix (2,3) (complex_float_pointer #<pointer 0> x); +x; +{1,2,3;4,5,6} +y; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +x==y; +1 +{ + rule #0: y = int_matrix (2,3) (int_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = int_matrix (2,3) (int_pointer #<pointer 0> x); +x; +{1,2,3;4,5,6} +y; +{1,2,3;4,5,6} +x==y; +1 +{ + rule #0: y = short_matrix (2,3) (short_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = short_matrix (2,3) (short_pointer #<pointer 0> x); +x; +{1,2,3;4,5,6} +y; +{1,2,3;4,5,6} +x==y; +1 +{ + rule #0: y = byte_matrix (2,3) (byte_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = byte_matrix (2,3) (byte_pointer #<pointer 0> x); +x; +{1,2,3;4,5,6} +y; +{1,2,3;4,5,6} +x==y; +1 +{ + rule #0: x = dmatrix {1,2,3;4,5,6} + state 0: #0 + <var> state 1 + state 1: #0 +} +let x = dmatrix {1,2,3;4,5,6}; +{ + rule #0: y = double_matrix_view (3,2) (pointer x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = double_matrix_view (3,2) (pointer x); +x; +{1.0,2.0,3.0;4.0,5.0,6.0} +y; +{1.0,2.0;3.0,4.0;5.0,6.0} +list x==list y; +1 +dim x==reverse (dim y); +1 +{ + rule #0: y = double_matrix (2,3) (double_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = double_matrix (2,3) (double_pointer #<pointer 0> x); +x; +{1.0,2.0,3.0;4.0,5.0,6.0} +y; +{1.0,2.0,3.0;4.0,5.0,6.0} +x==y; +1 +{ + rule #0: y = float_matrix (2,3) (float_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = float_matrix (2,3) (float_pointer #<pointer 0> x); +x; +{1.0,2.0,3.0;4.0,5.0,6.0} +y; +{1.0,2.0,3.0;4.0,5.0,6.0} +x==y; +1 +{ + rule #0: y = complex_matrix (2,3) (complex_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = complex_matrix (2,3) (complex_pointer #<pointer 0> x); +x; +{1.0,2.0,3.0;4.0,5.0,6.0} +y; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +x==y; +1 +{ + rule #0: y = complex_float_matrix (2,3) (complex_float_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = complex_float_matrix (2,3) (complex_float_pointer #<pointer 0> x); +x; +{1.0,2.0,3.0;4.0,5.0,6.0} +y; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +x==y; +1 +{ + rule #0: y = int_matrix (2,3) (int_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = int_matrix (2,3) (int_pointer #<pointer 0> x); +x; +{1.0,2.0,3.0;4.0,5.0,6.0} +y; +{1,2,3;4,5,6} +x==y; +1 +{ + rule #0: y = short_matrix (2,3) (short_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = short_matrix (2,3) (short_pointer #<pointer 0> x); +x; +{1.0,2.0,3.0;4.0,5.0,6.0} +y; +{1,2,3;4,5,6} +x==y; +1 +{ + rule #0: y = byte_matrix (2,3) (byte_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = byte_matrix (2,3) (byte_pointer #<pointer 0> x); +x; +{1.0,2.0,3.0;4.0,5.0,6.0} +y; +{1,2,3;4,5,6} +x==y; +1 +{ + rule #0: x = cmatrix {1,2,3;4,5,6} + state 0: #0 + <var> state 1 + state 1: #0 +} +let x = cmatrix {1,2,3;4,5,6}; +{ + rule #0: y = complex_matrix_view (3,2) (pointer x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = complex_matrix_view (3,2) (pointer x); +x; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +y; +{1.0+:0.0,2.0+:0.0;3.0+:0.0,4.0+:0.0;5.0+:0.0,6.0+:0.0} +list x==list y; +1 +dim x==reverse (dim y); +1 +{ + rule #0: z = double_matrix_view (2,6) (pointer x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let z = double_matrix_view (2,6) (pointer x); +z; +{1.0,0.0,2.0,0.0,3.0,0.0;4.0,0.0,5.0,0.0,6.0,0.0} +cat (catmap (\(a/*0:01*/+:b/*0:1*/) -> [[a/*0:01*/,b/*0:1*/]] { + rule #0: a+:b = [[a,b]] + state 0: #0 + <app> state 1 + state 1: #0 + <app> state 2 + state 2: #0 + +: state 3 + state 3: #0 + <var> state 4 + state 4: #0 + <var> state 5 + state 5: #0 +}) x)==list z; +1 +{ + rule #0: y = double_matrix (2,6) (double_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = double_matrix (2,6) (double_pointer #<pointer 0> x); +x; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +y; +{1.0,0.0,2.0,0.0,3.0,0.0;4.0,0.0,5.0,0.0,6.0,0.0} +y==z; +1 +{ + rule #0: y = float_matrix (2,6) (float_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = float_matrix (2,6) (float_pointer #<pointer 0> x); +x; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +y; +{1.0,0.0,2.0,0.0,3.0,0.0;4.0,0.0,5.0,0.0,6.0,0.0} +y==z; +1 +{ + rule #0: y = complex_matrix (2,3) (complex_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = complex_matrix (2,3) (complex_pointer #<pointer 0> x); +x; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +y; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +x==y; +1 +{ + rule #0: y = complex_float_matrix (2,3) (complex_float_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = complex_float_matrix (2,3) (complex_float_pointer #<pointer 0> x); +x; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +y; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +x==y; +1 +{ + rule #0: y = int_matrix (2,6) (int_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = int_matrix (2,6) (int_pointer #<pointer 0> x); +x; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +y; +{1,0,2,0,3,0;4,0,5,0,6,0} +y==z; +1 +{ + rule #0: y = short_matrix (2,6) (short_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = short_matrix (2,6) (short_pointer #<pointer 0> x); +x; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +y; +{1,0,2,0,3,0;4,0,5,0,6,0} +y==z; +1 +{ + rule #0: y = byte_matrix (2,6) (byte_pointer #<pointer 0> x) + state 0: #0 + <var> state 1 + state 1: #0 +} +let y = byte_matrix (2,6) (byte_pointer #<pointer 0> x); +x; +{1.0+:0.0,2.0+:0.0,3.0+:0.0;4.0+:0.0,5.0+:0.0,6.0+:0.0} +y; +{1,0,2,0,3,0;4,0,5,0,6,0} +y==z; +1 Added: pure/trunk/test/test025.pure =================================================================== --- pure/trunk/test/test025.pure (rev 0) +++ pure/trunk/test/test025.pure 2008-09-28 06:35:33 UTC (rev 888) @@ -0,0 +1,129 @@ + +// matrix stuff + +// NOTE: This test will fail if Pure was built without GSL support. + +using math; + +// Basic matrix ops. + +// int matrix +let x = {1,2,3;4,5,6}; + +x; x'; reverse x; +#x; dim x; redim (3,2) x; +x!(1,1); x!!(0,0..2); x!!(0..1,0..1); +diag x; supdiag x 1; subdiag x 1; supdiag x 1===subdiag x (-1); + +// double matrix +let x = {1.0,2.0,3.0;4.0,5.0,6.0}; + +x; x'; reverse x; +#x; dim x; redim (3,2) x; +x!(1,1); x!!(0,0..2); x!!(0..1,0..1); +diag x; supdiag x 1; subdiag x 1; supdiag x 1===subdiag x (-1); + +// complex matrix +let x = {1.0+:-2.0,2.0+:-4.0,3.0+:-6.0;4.0+:1.0,5.0+:2.0,6.0+:3.0}; + +x; x'; reverse x; +#x; dim x; redim (3,2) x; +x!(1,1); x!!(0,0..2); x!!(0..1,0..1); +diag x; supdiag x 1; subdiag x 1; supdiag x 1===subdiag x (-1); + +// Numeric matrix conversions. + +let x = {1,2,3;4,5,6}; +let y = dmatrix x; +let z = cmatrix y; + +x;y;z; + +imatrix x===x; dmatrix y===y; cmatrix z===z; + +imatrix y===x; re z===y; im z===dmatrix (dim x); + +imatrix z; dmatrix z; + +// Matrix-pointer conversions. + +// int matrix +let x = {1,2,3;4,5,6}; +let y = int_matrix_view (3,2) (pointer x); +x; y; list x==list y; dim x == reverse (dim y); + +let y = double_matrix (2,3) (double_pointer NULL x); +x; y; x==y; + +let y = float_matrix (2,3) (float_pointer NULL x); +x; y; x==y; + +let y = complex_matrix (2,3) (complex_pointer NULL x); +x; y; x==y; + +let y = complex_float_matrix (2,3) (complex_float_pointer NULL x); +x; y; x==y; + +let y = int_matrix (2,3) (int_pointer NULL x); +x; y; x==y; + +let y = short_matrix (2,3) (short_pointer NULL x); +x; y; x==y; + +let y = byte_matrix (2,3) (byte_pointer NULL x); +x; y; x==y; + +// double matrix +let x = dmatrix {1,2,3;4,5,6}; +let y = double_matrix_view (3,2) (pointer x); +x; y; list x==list y; dim x == reverse (dim y); + +let y = double_matrix (2,3) (double_pointer NULL x); +x; y; x==y; + +let y = float_matrix (2,3) (float_pointer NULL x); +x; y; x==y; + +let y = complex_matrix (2,3) (complex_pointer NULL x); +x; y; x==y; + +let y = complex_float_matrix (2,3) (complex_float_pointer NULL x); +x; y; x==y; + +let y = int_matrix (2,3) (int_pointer NULL x); +x; y; x==y; + +let y = short_matrix (2,3) (short_pointer NULL x); +x; y; x==y; + +let y = byte_matrix (2,3) (byte_pointer NULL x); +x; y; x==y; + +// complex matrix +let x = cmatrix {1,2,3;4,5,6}; +let y = complex_matrix_view (3,2) (pointer x); +x; y; list x==list y; dim x == reverse (dim y); + +let z = double_matrix_view (2,6) (pointer x); +z; cat [[a,b]|a+:b=x]==list z; + +let y = double_matrix (2,6) (double_pointer NULL x); +x; y; y==z; + +let y = float_matrix (2,6) (float_pointer NULL x); +x; y; y==z; + +let y = complex_matrix (2,3) (complex_pointer NULL x); +x; y; x==y; + +let y = complex_float_matrix (2,3) (complex_float_pointer NULL x); +x; y; x==y; + +let y = int_matrix (2,6) (int_pointer NULL x); +x; y; y==z; + +let y = short_matrix (2,6) (short_pointer NULL x); +x; y; y==z; + +let y = byte_matrix (2,6) (byte_pointer NULL x); +x; y; y==z; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |