[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.
|