* Bug #7916 fixed - nansum([]) returned %nan. 23/13323/8
Adeline CARNIS [Thu, 5 Dec 2013 15:57:38 +0000 (16:57 +0100)]
Change-Id: Ib1932e5545d27097b5354eb6f95a72ab5d2d4dee

14 files changed:
scilab/CHANGES_5.5.X
scilab/modules/core/tests/unit_tests/matelm.dia.ref
scilab/modules/core/tests/unit_tests/matelm.tst
scilab/modules/elementary_functions/tests/unit_tests/prod.dia.ref
scilab/modules/elementary_functions/tests/unit_tests/prod.tst
scilab/modules/elementary_functions/tests/unit_tests/sum.dia.ref
scilab/modules/elementary_functions/tests/unit_tests/sum.tst
scilab/modules/integer/tests/nonreg_tests/bug_3842.dia.ref
scilab/modules/statistics/help/en_US/data_missing_values/nansum.xml
scilab/modules/statistics/macros/nansum.sci
scilab/modules/statistics/tests/nonreg_tests/bug_7916.dia.ref [new file with mode: 0644]
scilab/modules/statistics/tests/nonreg_tests/bug_7916.tst [new file with mode: 0644]
scilab/modules/statistics/tests/unit_tests/nansum.dia.ref [new file with mode: 0644]
scilab/modules/statistics/tests/unit_tests/nansum.tst [new file with mode: 0644]

index df687f3..70797d4 100644 (file)
@@ -88,6 +88,8 @@ Scilab Bug Fixes
 
 * Bug #7879 fixed - string now accepts plist type, and printing a plist displays that string.
 
+* Bug #7916 fixed - nansum([]) returned Nan value while this function must ignore it.
+
 * Bug #8031 fixed - cdfgam error message fixed.
 
 * Bug #8060 fixed - Display of a list improved in the variable browser.
index 2622aab..340b83c 100644 (file)
@@ -1,6 +1,7 @@
 // =============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) ????-2008 - INRIA
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 //test of matelm functions
 //size
 a=[1 2;3 4];
-if or(size(a)<>[2 2]) then bugmes();quit;end
-if or(size(a+0)<>[2 2]) then bugmes();quit;end
-if size(a,'*')<>4 then bugmes();quit;end
-if size(a+0,'*')<>4 then bugmes();quit;end
-[m,n]=size(a);if or([m,n]<>[2 2]) then bugmes();quit;end
+assert_checkequal(size(a), [2 2]);
+assert_checkequal(size(a+0), [2 2]);
+assert_checkequal(size(a, "*"), 4);
+assert_checkequal(size(a+0, "*"), 4);
+[m,n]=size(a); assert_checkequal([m,n], [2 2]);
 a=[1;2];
-if size(a,1)<>2 then bugmes();quit;end
-if size(a+0,1)<>2 then bugmes();quit;end
-if size(a,'r')<>2 then bugmes();quit;end
-if size(a+0,'r')<>2 then bugmes();quit;end
-if size(a,2)<>1 then bugmes();quit;end
-if size(a+0,2)<>1 then bugmes();quit;end
-if size(a,'c')<>1 then bugmes();quit;end
-if size(a+0,'c')<>1 then bugmes();quit;end
-[m,n]=size(a);if or([m,n]<>[2 1]) then bugmes();quit;end
+assert_checkequal(size(a, 1), 2);
+assert_checkequal(size(a+0, 1), 2);
+assert_checkequal(size(a, "r"), 2);
+assert_checkequal(size(a+0, "r"), 2);
+assert_checkequal(size(a, 2), 1);
+assert_checkequal(size(a+0, 2), 1);
+assert_checkequal(size(a, "c"), 1);
+assert_checkequal(size(a+0, "c"), 1);
+[m,n]=size(a); assert_checkequal([m,n], [2 1]);
 a=string([1 2;3 4]);
-if or(size(a)<>[2 2]) then bugmes();quit;end
-if or(size(a+a)<>[2 2]) then bugmes();quit;end
-if size(a,'*')<>4 then bugmes();quit;end
-if size(a+a,'*')<>4 then bugmes();quit;end
-[m,n]=size(a);if or([m,n]<>[2 2]) then bugmes();quit;end
+assert_checkequal(size(a), [2 2]);
+assert_checkequal(size(a+a), [2 2]);
+assert_checkequal(size(a, "*"), 4);
+assert_checkequal(size(a+a, "*"), 4);
+[m,n]=size(a); assert_checkequal([m,n], [2 2]);
 a=string([1;2]);
-if size(a,1)<>2 then bugmes();quit;end
-if size(a+a,1)<>2 then bugmes();quit;end
-if size(a,'r')<>2 then bugmes();quit;end
-if size(a+a,'r')<>2 then bugmes();quit;end
-if size(a,2)<>1 then bugmes();quit;end
-if size(a+a,2)<>1 then bugmes();quit;end
-if size(a,'c')<>1 then bugmes();quit;end
-if size(a+a,'c')<>1 then bugmes();quit;end
-[m,n]=size(a);if or([m,n]<>[2 1]) then bugmes();quit;end
+assert_checkequal(size(a, 1), 2);
+assert_checkequal(size(a+a, 1), 2);
+assert_checkequal(size(a, "r"), 2);
+assert_checkequal(size(a+a, "r"), 2);
+assert_checkequal(size(a, 2), 1);
+assert_checkequal(size(a+a, 2), 1);
+assert_checkequal(size(a, "c"), 1);
+assert_checkequal(size(a+a, "c"), 1);
+[m,n]=size(a); assert_checkequal([m,n], [2 1]);
 a=[1 2;3 4]+%s;
-if or(size(a)<>[2 2]) then bugmes();quit;end
-if or(size(a+0)<>[2 2]) then bugmes();quit;end
-if size(a,'*')<>4 then bugmes();quit;end
-if size(a+0,'*')<>4 then bugmes();quit;end
-[m,n]=size(a);if or([m,n]<>[2 2]) then bugmes();quit;end
+assert_checkequal(size(a), [2 2]);
+assert_checkequal(size(a+0), [2 2]);
+assert_checkequal(size(a, "*"), 4);
+assert_checkequal(size(a+0, "*"), 4);
+[m,n]=size(a); assert_checkequal([m,n], [2 2]);
 a=[1;2]+%s;
-if size(a,1)<>2 then bugmes();quit;end
-if size(a+0,1)<>2 then bugmes();quit;end
-if size(a,'r')<>2 then bugmes();quit;end
-if size(a+0,'r')<>2 then bugmes();quit;end
-if size(a,2)<>1 then bugmes();quit;end
-if size(a+0,2)<>1 then bugmes();quit;end
-if size(a,'c')<>1 then bugmes();quit;end
-if size(a+0,'c')<>1 then bugmes();quit;end
-[m,n]=size(a);if or([m,n]<>[2 1]) then bugmes();quit;end
+assert_checkequal(size(a, 1), 2);
+assert_checkequal(size(a+0, 1), 2);
+assert_checkequal(size(a, "r"), 2);
+assert_checkequal(size(a+0, "r"), 2);
+assert_checkequal(size(a, 2), 1);
+assert_checkequal(size(a+0, 2), 1);
+assert_checkequal(size(a, "c"), 1);
+assert_checkequal(size(a+0, "c"), 1);
+[m,n]=size(a); assert_checkequal([m,n], [2 1]);
 a=[1 2;3 4]==1;
-if or(size(a)<>[2 2]) then bugmes();quit;end
-if or(size(a&a)<>[2 2]) then bugmes();quit;end
-if size(a,'*')<>4 then bugmes();quit;end
-if size(a|a,'*')<>4 then bugmes();quit;end
-[m,n]=size(a);if or([m,n]<>[2 2]) then bugmes();quit;end
+assert_checkequal(size(a), [2 2]);
+assert_checkequal(size(a&a), [2 2]);
+assert_checkequal(size(a, "*"), 4);
+assert_checkequal(size(a|a, "*"), 4);
+[m,n]=size(a); assert_checkequal([m,n], [2 2]);
 a=[1;2]==1;
-if size(a,1)<>2 then bugmes();quit;end
-if size(a|a,1)<>2 then bugmes();quit;end
-if size(a,'r')<>2 then bugmes();quit;end
-if size(a|a,'r')<>2 then bugmes();quit;end
-if size(a,2)<>1 then bugmes();quit;end
-if size(a|a,2)<>1 then bugmes();quit;end
-if size(a,'c')<>1 then bugmes();quit;end
-if size(a|a,'c')<>1 then bugmes();quit;end
-[m,n]=size(a);if or([m,n]<>[2 1]) then bugmes();quit;end
+assert_checkequal(size(a, 1), 2);
+assert_checkequal(size(a|a, 1), 2);
+assert_checkequal(size(a, "r"), 2);
+assert_checkequal(size(a|a, "r"), 2);
+assert_checkequal(size(a, 2), 1);
+assert_checkequal(size(a|a, 2), 1);
+assert_checkequal(size(a, "c"), 1);
+assert_checkequal(size(a|a, "c"), 1);
+[m,n]=size(a); assert_checkequal([m n], [2 1]);
 //eye
-if or(eye(2,2)<>[1 0;0 1]) then bugmes();quit;end
-if or(eye(2,1)<>[1;0]) then bugmes();quit;end
+assert_checkequal(eye(2,2), [1 0; 0 1]);
+assert_checkequal(eye(2,1), [1;0]);
 n=2;
-if or(eye(n,2)<>[1 0;0 1]) then bugmes();quit;end
-if or(eye(2,n)<>[1 0;0 1]) then bugmes();quit;end
-if or(eye(n,n)<>[1 0;0 1]) then bugmes();quit;end
-if or(size(eye())<>[-1 -1]) then bugmes();quit;end
+assert_checkequal(eye(2,n), [1 0; 0 1]);
+assert_checkequal(eye(n, 2), [1 0; 0 1]);
+assert_checkequal(eye(n,n), [1 0;0 1]);
+assert_checkequal(size(eye()), [-1 -1]);
 a=[1 2;3 4];
-if or(eye(a)<>[1 0;0 1]) then bugmes();quit;end
-if or(eye(a+0)<>[1 0;0 1]) then bugmes();quit;end
+assert_checkequal(eye(a), [1 0; 0 1]);
+assert_checkequal(eye(a+0), [1 0; 0 1]);
 a=[1 2;3 4]+%s;
-if or(eye(a)<>[1 0;0 1]) then bugmes();quit;end
-if or(eye(a+0)<>[1 0;0 1]) then bugmes();quit;end
+assert_checkequal(eye(a), [1 0;0 1]);
+assert_checkequal(eye(a+0), [1 0; 0 1]);
 a=string([1 2;3 4]);
-if or(eye(a)<>[1 0;0 1]) then bugmes();quit;end
-if or(eye(a+a)<>[1 0;0 1]) then bugmes();quit;end
+assert_checkequal(eye(a), [1 0;0 1]);
+assert_checkequal(eye(a+a), [1 0; 0 1]);
 a=[1 2;3 4]>1;
-if or(eye(a)<>[1 0;0 1]) then bugmes();quit;end
-if or(eye(a&a)<>[1 0;0 1]) then bugmes();quit;end
-if eye([])<>[] then bugmes();quit;end
+assert_checkequal(eye(a), [1 0;0 1]);
+assert_checkequal(eye(a&a), [1 0; 0 1]);
+assert_checkequal(eye([]), []);
 //ones
-if or(ones(2,2)<>[1 1;1 1]) then bugmes();quit;end
-if or(ones(2,1)<>[1;1]) then bugmes();quit;end
+assert_checkequal(ones(2, 2), [1 1; 1 1]);
+assert_checkequal(ones(2, 1), [1; 1]);
 n=2;
-if or(ones(n,2)<>[1 1;1 1]) then bugmes();quit;end
-if or(ones(2,n)<>[1 1;1 1]) then bugmes();quit;end
-if or(ones(n,n)<>[1 1;1 1]) then bugmes();quit;end
-if ones(1)<>1 then bugmes();quit;end
-if ones([])<>[] then bugmes();quit;end
+assert_checkequal(ones(n,2), [1 1; 1 1]);
+assert_checkequal(ones(2,n), [1 1; 1 1]);
+assert_checkequal(ones(n,n), [1 1; 1 1]);
+assert_checkequal(ones(1), 1);
+assert_checkequal(ones([]), []);
 a=[1 2;3 4];
-if or(ones(a)<>[1 1;1 1]) then bugmes();quit;end
-if or(ones(a+0)<>[1 1;1 1]) then bugmes();quit;end
+assert_checkequal(ones(a), [1 1; 1 1]);
+assert_checkequal(ones(a+0), [1 1; 1 1]);
 a=[1 2;3 4]+%s;
-if or(ones(a)<>[1 1;1 1]) then bugmes();quit;end
-if or(ones(a+0)<>[1 1;1 1]) then bugmes();quit;end
+assert_checkequal(ones(a), [1 1; 1 1]);
+assert_checkequal(ones(a+0), [1 1; 1 1]);
 a=string([1 2;3 4]);
-if or(ones(a)<>[1 1;1 1]) then bugmes();quit;end
-if or(ones(a+a)<>[1 1;1 1]) then bugmes();quit;end
+assert_checkequal(ones(a), [1 1; 1 1]);
+assert_checkequal(ones(a+a), [1 1; 1 1]);
 a=[1 2;3 4]>1;
-if or(ones(a)<>[1 1;1 1]) then bugmes();quit;end
-if or(ones(a&a)<>[1 1;1 1]) then bugmes();quit;end
+assert_checkequal(ones(a), [1 1; 1 1]);
+assert_checkequal(ones(a&0), [1 1; 1 1]);
 //rand
-if or(size(rand(2,2))<>[2 2]) then bugmes();quit;end
-if or(size(rand(2,1))<>[2 1]) then bugmes();quit;end
+assert_checkequal(size(rand(2,2)), [2 2]);
+assert_checkequal(size(rand(2,1)), [2 1]);
 n=2;
-if or(size(rand(n,2))<>[n 2]) then bugmes();quit;end
-if or(size(rand(2,n))<>[2 n]) then bugmes();quit;end
-if or(size(rand(n,n))<>[n n]) then bugmes();quit;end
+assert_checkequal(size(rand(n,2)), [n 2]);
+assert_checkequal(size(rand(2,n)), [2 n]);
+assert_checkequal(size(rand(n,n)), [n n]);
 //if or(size(rand())<>[1 1]) then bugmes();quit;end
-if rand([])<>[] then bugmes();quit;end
+assert_checkequal(rand([]), []);
 a=[1 2;3 4];
-if or(size(rand(a))<>size(a)) then bugmes();quit;end
-if or(size(rand(a+0))<>size(a)) then bugmes();quit;end
-//a=[1 2;3 4]+%s;
-//if or(size(rand(a))<>size(a)) then bugmes();quit;end
-//if or(size(rand(a+0))<>size(a)) then bugmes();quit;end
+assert_checkequal(size(rand(a)), size(a));
+assert_checkequal(size(rand(a+0)), size(a));
+a=[1 2;3 4]+%s;
+assert_checkequal(size(rand(a)), size(a));
+assert_checkequal(size(rand(a+0)), size(a));
 //a=string([1 2;3 4]);
 //if or(size(rand(a))<>size(a)) then bugmes();quit;end
 //if or(size(rand(a+a))<>size(a)) then bugmes();quit;end
-//a=[1 2;3 4]>1;
-//if or(size(rand(a))<>size(a)) then bugmes();quit;end
-//if or(size(rand(a+a))<>size(a)) then bugmes();quit;end
-rand('seed',1);if rand('seed')<>1 then bugmes();quit;end
-a=2;rand('seed',a);if rand('seed')<>a then bugmes();quit;end
+a=[1 2;3 4]>1;
+assert_checkequal(size(rand(a)), size(a));
+assert_checkequal(size(rand(a+a)), size(a));
+rand("seed",1); assert_checkequal(rand("seed"), 1);
+a=2;rand("seed",a); assert_checkequal(rand("seed"), a);
 //diag
-if or(diag([1 2 3])<>[1 0 0;0 2 0;0 0 3]) then bugmes();quit;end
+assert_checkequal(diag([1 2 3]), [1 0 0;0 2 0;0 0 3]);
 a=[1 2 3];
-if or(diag(a)<>[1 0 0;0 2 0;0 0 3]) then bugmes();quit;end
-if or(diag([1 %i 2])<>[1 0 0;0 %i 0;0 0 2]) then bugmes();quit;end
+assert_checkequal(diag(a), [1 0 0;0 2 0;0 0 3]);
+assert_checkequal(diag([1 %i 2]), [1 0 0;0 %i 0;0 0 2]);
 a=[1 %i 2 ];
-if or(diag(a)<>[1 0 0;0 %i 0;0 0 2]) then bugmes();quit;end
+assert_checkequal(diag(a), [1 0 0;0 %i 0;0 0 2]);
 a=[1 2 3 4;5 6 7 8];
-if or(diag(a)<>[1;6]) then bugmes();quit;end
-if or(diag(a+0)<>[1;6]) then bugmes();quit;end
-if or(diag(a,1)<>[2;7]) then bugmes();quit;end
-if or(diag(a+0,1)<>[2;7]) then bugmes();quit;end
-if or(diag(a,-1)<>[5]) then bugmes();quit;end
-if or(diag(a+0,-1)<>[5]) then bugmes();quit;end
-if diag(a,4)<>[] then bugmes();quit;end
-a(1,1)=%i
- a  =
-    i      2.    3.    4.  
-    5.     6.    7.    8.  
-if or(diag(a)<>[%i;6]) then bugmes();quit;end
-if or(diag(a+0)<>[%i;6]) then bugmes();quit;end
-if or(diag(a,1)<>[2;7]) then bugmes();quit;end
-if or(diag(a+0,1)<>[2;7]) then bugmes();quit;end
-if or(diag(a,-1)<>[5]) then bugmes();quit;end
-if or(diag(a+0,-1)<>[5]) then bugmes();quit;end
-if diag(a,4)<>[] then bugmes();quit;end
-if diag([])<>[] then bugmes();quit;end
-if diag([],1)<>[] then bugmes();quit;end
-if diag([],-1)<>[] then bugmes();quit;end
+assert_checkequal(diag(a), [1;6]);
+assert_checkequal(diag(a+0), [1;6]);
+assert_checkequal(diag(a,1), [2;7]);
+assert_checkequal(diag(a+0,1), [2;7]);
+assert_checkequal(diag(a,-1), 5);
+assert_checkequal(diag(a+0, -1), 5);
+assert_checkequal(diag(a,4), []);
+a(1,1)=%i;
+assert_checkequal(diag(a), [%i; 6]);
+assert_checkequal(diag(a+0), [%i;6]);
+assert_checkequal(diag(a, 1), [2;7]+0*%i);
+assert_checkequal(diag(a+0, 1), [2;7]+0*%i);
+assert_checkequal(diag(a, -1), 5+0*%i);
+assert_checkequal(diag(a+0, -1), 5+0*%i);
+assert_checkequal(diag(a, 4), []);
+assert_checkequal(diag([]), []);
+assert_checkequal(diag([], 1), []);
+assert_checkequal(diag([], -1), []);
 a=[];
-if diag(a)<>[] then bugmes();quit;end
-if diag(a,1)<>[] then bugmes();quit;end
-if diag(a,-1)<>[] then bugmes();quit;end
+assert_checkequal(diag(a), []);
+assert_checkequal(diag(a, 1), []);
+assert_checkequal(diag(a, -1), []);
 // triu
 a=[1 2 3 4;5 6 7 8];
-if or(triu(a)<>[1 2 3 4;0 6 7 8]) then bugmes();quit;end
-if or(triu(a+0)<>[1 2 3 4;0 6 7 8]) then bugmes();quit;end
-if or(triu(a,1)<>[0 2 3 4;0 0 7 8]) then bugmes();quit;end
-if or(triu(a+0,1)<>[0 2 3 4;0 0 7 8]) then bugmes();quit;end
-if or(triu(a,-1)<>a) then bugmes();quit;end
-if or(triu(a+0,-1)<>a) then bugmes();quit;end
-if or(triu(a,4)<>0*a) then bugmes();quit;end
+assert_checkequal(triu(a), [1 2 3 4;0 6 7 8]);
+assert_checkequal(triu(a+0), [1 2 3 4;0 6 7 8]);
+assert_checkequal(triu(a, 1), [0 2 3 4; 0 0 7 8]);
+assert_checkequal(triu(a+0, 1), [0 2 3 4; 0 0 7 8]);
+assert_checkequal(triu(a, -1), a);
+assert_checkequal(triu(a+0, -1), a);
+assert_checkequal(triu(a, 4), 0*a);
 a(1,1)=%i;
-if or(triu(a)<>[%i 2 3 4;0 6 7 8]) then bugmes();quit;end
-if or(triu(a+0)<>[%i 2 3 4;0 6 7 8]) then bugmes();quit;end
-if or(triu(a,1)<>[0 2 3 4;0 0 7 8]) then bugmes();quit;end
-if or(triu(a+0,1)<>[0 2 3 4;0 0 7 8]) then bugmes();quit;end
-if or(triu(a,-1)<>a) then bugmes();quit;end
-if or(triu(a+0,-1)<>a) then bugmes();quit;end
-if or(triu(a,4)<>0*a) then bugmes();quit;end
-if triu([])<>[] then bugmes();quit;end
-if triu([],1)<>[] then bugmes();quit;end
-if triu([],-1)<>[] then bugmes();quit;end
+assert_checkequal(triu(a), [%i 2 3 4;0 6 7 8]);
+assert_checkequal(triu(a+0), [%i 2 3 4;0 6 7 8]);
+assert_checkequal(triu(a, 1), [0 2 3 4;0 0 7 8]+0*%i);
+assert_checkequal(triu(a+0, 1), [0 2 3 4;0 0 7 8]+0*%i);
+assert_checkequal(triu(a, -1), a);
+assert_checkequal(triu(a+0, -1), a);
+assert_checkequal(triu(a,4), 0*a);
+assert_checkequal(triu([]), []);
+assert_checkequal(triu([], 1), []);
+assert_checkequal(triu([], -1), []);
 a=[];
-if triu(a)<>[] then bugmes();quit;end
-if triu(a,1)<>[] then bugmes();quit;end
-if triu(a,-1)<>[] then bugmes();quit;end
+assert_checkequal(triu(a), []);
+assert_checkequal(triu(a, 1), []);
+assert_checkequal(triu(a, -1), []);
 //tril
 a=[1 2 3 4;5 6 7 8];
-if or(tril(a)<>[1 0 0 0;5 6 0 0]) then bugmes();quit;end
-if or(tril(a+0)<>[1 0 0 0;5 6 0 0]) then bugmes();quit;end
-if or(tril(a,1)<>[1 2 0 0;5 6  7 0]) then bugmes();quit;end
-if or(tril(a+0,1)<>[1 2 0 0;5 6  7 0]) then bugmes();quit;end
-if or(tril(a,4)<>a) then bugmes();quit;end
-if or(tril(a+0,4)<>a) then bugmes();quit;end
-if or(tril(a,-3)<>0*a) then bugmes();quit;end
+assert_checkequal(tril(a), [1 0 0 0;5 6 0 0]);
+assert_checkequal(tril(a+0), [1 0 0 0;5 6 0 0]);
+assert_checkequal(tril(a, 1), [1 2 0 0;5 6  7 0]);
+assert_checkequal(tril(a+0, 1), [1 2 0 0;5 6  7 0]);
+assert_checkequal(tril(a, 4), a);
+assert_checkequal(tril(a+0, 4), a);
+assert_checkequal(tril(a, -3), 0*a);
 a(1,1)=%i;
-if or(tril(a)<>[%i 0 0 0;5 6 0 0]) then bugmes();quit;end
-if or(tril(a+0)<>[%i 0 0 0;5 6 0 0]) then bugmes();quit;end
-if or(tril(a,1)<>[%i 2 0 0;5 6  7 0]) then bugmes();quit;end
-if or(tril(a+0,1)<>[%i 2 0 0;5 6  7 0]) then bugmes();quit;end
-if or(tril(a,4)<>a) then bugmes();quit;end
-if or(tril(a+0,4)<>a) then bugmes();quit;end
-if or(tril(a,-3)<>0*a) then bugmes();quit;end
-if tril([])<>[] then bugmes();quit;end
-if tril([],1)<>[] then bugmes();quit;end
-if tril([],-1)<>[] then bugmes();quit;end
+assert_checkequal(tril(a), [%i 0 0 0; 5 6 0 0]);
+assert_checkequal(tril(a+0), [%i 0 0 0; 5 6 0 0]);
+assert_checkequal(tril(a, 1), [%i 2 0 0; 5 6 7 0]);
+assert_checkequal(tril(a+0, 1), [%i 2 0 0;5 6  7 0]);
+assert_checkequal(tril(a, 4), a);
+assert_checkequal(tril(a+0, 4), a);
+assert_checkequal(tril(a, -3), 0*a);
+assert_checkequal(tril([]), []);
+assert_checkequal(tril([], 1), []);
+assert_checkequal(tril([], -1), []);
 a=[];
-if tril(a)<>[] then bugmes();quit;end
-if tril(a,1)<>[] then bugmes();quit;end
-if tril(a,-1)<>[] then bugmes();quit;end
+assert_checkequal(tril(a), []);
+assert_checkequal(tril(a, 1), []);
+assert_checkequal(tril(a, -1), []);
 //abs
 a=[1 2;-3 4;5 -6];
-if or(abs(a)<>[1 2;3 4;5 6]) then bugmes();quit;end
-if or(abs(a+0)<>[1 2;3 4;5 6]) then bugmes();quit;end
-if abs([])<>[] then bugmes();quit;end
-a=[];if abs(a)<>[] then bugmes();quit;end
+assert_checkequal(abs(a), [1 2;3 4;5 6]);
+assert_checkequal(abs(a+0), [1 2;3 4;5 6]);
+assert_checkequal(abs([]), []);
+a=[]; assert_checkequal(abs(a), []);
 a=[1+%i 2;-3 4;5 -6];
-if or(abs(a)<>[sqrt(2) 2;3 4;5 6]) then bugmes();quit;end
-if or(abs(a+0)<>[sqrt(2) 2;3 4;5 6]) then bugmes();quit;end
+assert_checkequal(abs(a), [sqrt(2) 2;3 4;5 6]);
+assert_checkequal(abs(a+0), [sqrt(2) 2;3 4;5 6]);
 a=[1 2;-3 4;5 -6]+%s;
-if or(abs(a)<>[1 2;3 4;5 6]+%s) then bugmes();quit;end
-if or(abs(a+0)<>[1 2;3 4;5 6]+%s) then bugmes();quit;end
+assert_checkequal(abs(a), [1 2;3 4;5 6]+%s);
+assert_checkequal(abs(a+0), [1 2;3 4;5 6]+%s);
 a=[1+%i 2;-3 4;5 -6]+%s;
-if or(abs(a)<>[sqrt(2) 2;3 4;5 6]+%s) then bugmes();quit;end
-if or(abs(a+0)<>[sqrt(2) 2;3 4;5 6]+%s) then bugmes();quit;end
+assert_checkequal(abs(a), [sqrt(2) 2;3 4;5 6]+%s);
+assert_checkequal(abs(a+0), [sqrt(2) 2;3 4;5 6]+%s);
 a=sparse([1 2;-3 4;5 -6]);
-if or(full(abs(a))<>[1 2;3 4;5 6]) then bugmes();quit;end
-if or(full(abs(a+a))<>2*[1 2;3 4;5 6]) then bugmes();quit;end
+assert_checkequal(full(abs(a)), [1 2;3 4;5 6]);
+assert_checkequal(full(abs(a+a)), 2.*[1 2;3 4;5 6]);
 a=sparse([1+%i 2;-3 4;5 -6]);
-if or(full(abs(a))<>[sqrt(2) 2;3 4;5 6]) then bugmes();quit;end
-if or(full(abs(a+a))<>2*[sqrt(2) 2;3 4;5 6]) then bugmes();quit;end
+assert_checkequal(full(abs(a)), [sqrt(2) 2;3 4;5 6]);
+assert_checkequal(full(abs(a+a)), 2.*[sqrt(2) 2;3 4;5 6]);
 //real
 a=[1 2;-3 4;5 -6];
-if or(real(a)<>a) then bugmes();quit;end
-if or(real(a+0)<>a) then bugmes();quit;end
-if real([])<>[] then bugmes();quit;end
-a=[];if real(a)<>[] then bugmes();quit;end
+assert_checkequal(real(a), a);
+assert_checkequal(real(a+0), a);
+assert_checkequal(real([]), []);
+a=[]; assert_checkequal(real(a), []);
 a=[1+%i 2;-3 4;5 -6];
-if or(real(a)<>[1 2;-3 4;5 -6]) then bugmes();quit;end
-if or(real(a+0)<>[1 2;-3 4;5 -6]) then bugmes();quit;end
+assert_checkequal(real(a), [1 2;-3 4;5 -6]);
+assert_checkequal(real(a+0), [1 2;-3 4;5 -6]);
 a=[1 2;-3 4;5 -6]+%s;
-if or(real(a)<>a) then bugmes();quit;end
-if or(real(a+0)<>a) then bugmes();quit;end
+assert_checkequal(real(a), a);
+assert_checkequal(real(a+0), a);
 a=[1+%i 2;-3 4;5 -6]+%s;
-if or(real(a)<>[1 2;-3 4;5 -6]+%s) then bugmes();quit;end
-if or(real(a+0)<>[1 2;-3 4;5 -6]+%s) then bugmes();quit;end
-//a=sparse([1 2;-3 4;5 -6]);
-//if or(real(a)<>a) then bugmes();quit;end
-//if or(real(a+a)<>2*a) then bugmes();quit;end
-//a=sparse([1+%i 2;-3 4;5 -6]);
-//if or(full(real(a))<>[1 2;-3 4;5 -6]) then bugmes();quit;end
-//if or(full(real(a+a))<>2*[1 2;-3 4;5 -6]) then bugmes();quit;end
+assert_checkequal(real(a), [1 2;-3 4;5 -6]+%s);
+assert_checkequal(real(a+0), [1 2;-3 4;5 -6]+%s);
+a=sparse([1 2;-3 4;5 -6]);
+assert_checkequal(real(a), a);
+assert_checkequal(real(a+a), 2*a);
+a=sparse([1+%i 2;-3 4;5 -6]);
+assert_checkequal(full(real(a)), [1 2;-3 4;5 -6]);
+assert_checkequal(full(real(a+a)), 2.*[1 2;-3 4;5 -6]);
 //imag
 a=[1 2;-3 4;5 -6];
-if or(imag(a)<>0*a) then bugmes();quit;end
-if or(imag(a+0)<>0*a) then bugmes();quit;end
-if imag([])<>[] then bugmes();quit;end
-a=[];if imag(a)<>[] then bugmes();quit;end
+assert_checkequal(imag(a), 0*a);
+assert_checkequal(imag(a+0), 0*a);
+assert_checkequal(imag([]), []);
+a=[]; assert_checkequal(imag(a), []);
 a=[1+%i 2;-3 4;5 -6];
-if or(imag(a)<>[1 0;0 0;0 0]) then bugmes();quit;end
-if or(imag(a+0)<>[1 0;0 0;0 0]) then bugmes();quit;end
+assert_checkequal(imag(a), [1 0;0 0; 0 0]);
+assert_checkequal(imag(a+0), [1 0;0 0; 0 0]);
 a=[1 2;-3 4;5 -6]+%s;
-if or(imag(a)<>0*a) then bugmes();quit;end
-if or(imag(a+0)<>0*a) then bugmes();quit;end
+assert_checkequal(imag(a), 0*a);
+assert_checkequal(imag(a+0), 0*a);
 a=[1+%i 2;-3 4;5 -6]+%s;
-if or(imag(a)<>[poly(1,'s','c') 0;0 0;0 0]) then bugmes();quit;end
-if or(imag(a+0)<>[poly(1,'s','c') 0;0 0;0 0]) then bugmes();quit;end
-//a=sparse([1 2;-3 4;5 -6]);
-//if or(imag(a)<>0*a) then bugmes();quit;end
-//if or(imag(a+a)<>0*a) then bugmes();quit;end
-//a=sparse([1+%i 2;-3 4;5 -6]);
-//if or(full(imag(a))<>[1 0;0 0;0 0]) then bugmes();quit;end
-//if or(full(imag(a+a))<>2*[1 0;0 0;0 0]) then bugmes();quit;end
+assert_checkequal(imag(a), [poly(1,"s","c") 0;0 0;0 0]);
+assert_checkequal(imag(a+0), [poly(1,"s","c") 0;0 0;0 0]);
+a=sparse([1 2;-3 4;5 -6]);
+assert_checkequal(imag(a), 0*a);
+assert_checkequal(imag(a+a), 0*a);
+a=sparse([1+%i 2;-3 4;5 -6]);
+assert_checkequal(full(imag(a)), [1 0;0 0;0 0]);
+assert_checkequal(full(imag(a+a)), 2*[1 0;0 0;0 0]);
 //conj
 a=[1 2;-3 4;5 -6];
-if or(conj(a)<>a) then bugmes();quit;end
-if or(conj(a+0)<>a) then bugmes();quit;end
-if conj([])<>[] then bugmes();quit;end
-a=[];if conj(a)<>[] then bugmes();quit;end
+assert_checkequal(conj(a), a);
+assert_checkequal(conj(a+0), a);
+assert_checkequal(conj([]), []);
+a=[]; assert_checkequal(conj(a), []);
 a=[1+%i 2;-3 4;5 -6];
-if or(conj(a)<>[1-%i 2;-3 4;5 -6]) then bugmes();quit;end
-if or(conj(a+0)<>[1-%i 2;-3 4;5 -6]) then bugmes();quit;end
+assert_checkequal(conj(a), [1-%i 2;-3 4;5 -6]);
+assert_checkequal(conj(a+0), [1-%i 2;-3 4;5 -6]);
 a=[1 2;-3 4;5 -6]+%s;
-if or(conj(a)<>a) then bugmes();quit;end
-if or(conj(a+0)<>a) then bugmes();quit;end
+assert_checkequal(conj(a), a);
+assert_checkequal(conj(a+0), a);
 a=[1+%i 2;-3 4;5 -6]+%s;
-if or(conj(a)<>[1-%i 2;-3 4;5 -6]+%s) then bugmes();quit;end
-if or(conj(a+0)<>[1-%i 2;-3 4;5 -6]+%s) then bugmes();quit;end
-//a=sparse([1 2;-3 4;5 -6]);
-//if or(conj(a)<>a) then bugmes();quit;end
-//if or(conj(a+a)<>2*a) then bugmes();quit;end
-//a=sparse([1+%i 2;-3 4;5 -6]);
-//if or(full(conj(a))<>[1-%i 2;-3 4;5 -6]) then bugmes();quit;end
-//if or(full(conj(a+a))<>2*[1-%i 2;-3 4;5 -6]) then bugmes();quit;end
+assert_checkequal(conj(a), [1-%i 2;-3 4;5 -6]+%s);
+assert_checkequal(conj(a+0), [1-%i 2;-3 4;5 -6]+%s);
+a=sparse([1 2;-3 4;5 -6]);
+assert_checkequal(conj(a), a);
+assert_checkequal(conj(a+a), 2*a);
+a=sparse([1+%i 2;-3 4;5 -6]);
+assert_checkequal(full(conj(a)), [1-%i 2;-3 4;5 -6]);
+assert_checkequal(full(conj(a+a)), 2*[1-%i 2;-3 4;5 -6]);
 //int
 a=[1.2 2.5;-3.4 4.5;5.8 -6.2];
-if or(int(a)<>[1 2;-3 4;5 -6]) then bugmes();quit;end
-if or(int(a+0)<>[1 2;-3 4;5 -6]) then bugmes();quit;end
+assert_checkequal(int(a), [1 2;-3 4;5 -6]);
+assert_checkequal(int(a+0), [1 2;-3 4;5 -6]);
 a=[1.2+2.5*%i 2.5;-3.4 4.5;5.8 -6.2];
-if or(int(a)<>[1+2*%i 2;-3 4;5 -6]) then bugmes();quit;end
-if or(int(a+0)<>[1+2*%i 2;-3 4;5 -6]) then bugmes();quit;end
+assert_checkequal(int(a), [1+2*%i 2;-3 4;5 -6]);
+assert_checkequal(int(a+0), [1+2*%i 2;-3 4;5 -6]);
 a=[1.2 2.5;-3.4 4.5;5.8 -6.2]+1.1*%s;
-if or(int(a)<>[1 2;-3 4;5 -6]+%s) then bugmes();quit;end
-if or(int(a+0)<>[1 2;-3 4;5 -6]+%s) then bugmes();quit;end
+assert_checkequal(int(a), [1 2;-3 4;5 -6]+%s);
+assert_checkequal(int(a+0), [1 2;-3 4;5 -6]+%s);
 a=[1.2+2.5*%i 2.5;-3.4 4.5;5.8 -6.2]+1.1*%s;
-if or(int(a)<>[1+2*%i 2;-3 4;5 -6]+%s) then bugmes();quit;end
-if or(int(a+0)<>[1+2*%i 2;-3 4;5 -6]+%s) then bugmes();quit;end
-if int([])<>[] then bugmes();quit;end
-a=[];if int(a)<>[] then bugmes();quit;end
+assert_checkequal(int(a), [1+2*%i 2;-3 4;5 -6]+%s);
+assert_checkequal(int(a+0), [1+2*%i 2;-3 4;5 -6]+%s);
+assert_checkequal(int([]), []);
+a = []; assert_checkequal(int(a), []);
 //round
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if or(round(a)<>[1 3;-3 5;6 -6]) then bugmes();quit;end
-if or(round(a+0)<>[1 3;-3 5;6 -6]) then bugmes();quit;end
+assert_checkequal(round(a), [1 3;-3 5;6 -6]);
+assert_checkequal(round(a+0), [1 3;-3 5;6 -6]);
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2];
-if or(round(a)<>[1+3*%i 3;-3 5;6 -6]) then bugmes();quit;end
-if or(round(a+0)<>[1+3*%i 3;-3 5;6 -6]) then bugmes();quit;end
+assert_checkequal(round(a), [1+3*%i 3;-3 5;6 -6]);
+assert_checkequal(round(a+0), [1+3*%i 3;-3 5;6 -6]);
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(round(a)<>[1 3;-3 5;6 -6]+%s) then bugmes();quit;end
-if or(round(a+0)<>[1 3;-3 5;6 -6]+%s) then bugmes();quit;end
+assert_checkequal(round(a), [1 3;-3 5;6 -6]+%s);
+assert_checkequal(round(a+0), [1 3;-3 5;6 -6]+%s);
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(round(a)<>[1+3*%i 3;-3 5;6 -6]+%s) then bugmes();quit;end
-if or(round(a+0)<>[1+3*%i 3;-3 5;6 -6]+%s) then bugmes();quit;end
-if round([])<>[] then bugmes();quit;end
-a=[];if round(a)<>[] then bugmes();quit;end
+assert_checkequal(round(a), [1+3*%i 3;-3 5;6 -6]+%s);
+assert_checkequal(round(a+0), [1+3*%i 3;-3 5;6 -6]+%s);
+assert_checkequal(round([]), []);
+a=[]; assert_checkequal(round(a), []);
 //ceil
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if or(ceil(a)<>[2 3;-3 5;6 -6]) then bugmes();quit;end
-if or(ceil(a+0)<>[2 3;-3 5;6 -6]) then bugmes();quit;end
+assert_checkequal(ceil(a), [2 3;-3 5;6 -6]);
+assert_checkequal(ceil(a+0), [2 3;-3 5;6 -6]);
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2];
-if or(ceil(a)<>[2+3*%i 3;-3 5;6 -6]) then bugmes();quit;end
-if or(ceil(a+0)<>[2+3*%i 3;-3 5;6 -6]) then bugmes();quit;end
+assert_checkequal(ceil(a), [2+3*%i 3;-3 5;6 -6]);
+assert_checkequal(ceil(a+0), [2+3*%i 3;-3 5;6 -6]);
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(ceil(a)<>[2 3;-3 5;6 -6]+2*%s) then bugmes();quit;end
-if or(ceil(a+0)<>[2 3;-3 5;6 -6]+2*%s) then bugmes();quit;end
+assert_checkequal(ceil(a), [2 3;-3 5;6 -6]+2*%s);
+assert_checkequal(ceil(a+0), [2 3;-3 5;6 -6]+2*%s);
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(ceil(a)<>[2+3*%i 3;-3 5;6 -6]+2*%s) then bugmes();quit;end
-if or(ceil(a+0)<>[2+3*%i 3;-3 5;6 -6]+2*%s) then bugmes();quit;end
-if ceil([])<>[] then bugmes();quit;end
-a=[];if ceil(a)<>[] then bugmes();quit;end
+assert_checkequal(ceil(a), [2+3*%i 3;-3 5;6 -6]+2*%s);
+assert_checkequal(ceil(a+0), [2+3*%i 3;-3 5;6 -6]+2*%s);
+assert_checkequal(ceil([]), []);
+a=[];assert_checkequal(ceil(a), []);
 //floor
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if or(floor(a)<>[1 2;-4 4;5 -7]) then bugmes();quit;end
-if or(floor(a+0)<>[1 2;-4 4;5 -7]) then bugmes();quit;end
+assert_checkequal(floor(a), [1 2;-4 4;5 -7]);
+assert_checkequal(floor(a+0), [1 2;-4 4;5 -7]);
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2];
-if or(floor(a)<>[1+2*%i 2;-4 4;5 -7]) then bugmes();quit;end
-if or(floor(a+0)<>[1+2*%i 2;-4 4;5 -7]) then bugmes();quit;end
+assert_checkequal(floor(a), [1+2*%i 2;-4 4;5 -7]);
+assert_checkequal(floor(a+0), [1+2*%i 2;-4 4;5 -7]);
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(floor(a)<>[1 2;-4 4;5 -7]+%s) then bugmes();quit;end
-if or(floor(a+0)<>[1 2;-4 4;5 -7]+%s) then bugmes();quit;end
+assert_checkequal(floor(a), [1 2;-4 4;5 -7]+%s);
+assert_checkequal(floor(a+0), [1 2;-4 4;5 -7]+%s);
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(floor(a)<>[1+2*%i 2;-4 4;5 -7]+%s) then bugmes();quit;end
-if or(floor(a+0)<>[1+2*%i 2;-4 4;5 -7]+%s) then bugmes();quit;end
-if floor([])<>[] then bugmes();quit;end
-a=[];if floor(a)<>[] then bugmes();quit;end
+assert_checkequal(floor(a), [1+2*%i 2;-4 4;5 -7]+%s);
+assert_checkequal(floor(a+0), [1+2*%i 2;-4 4;5 -7]+%s);
+assert_checkequal(floor([]), []);
+a=[]; assert_checkequal(floor(a), []);
 //sign
-//a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-//if or(sign(a)<>[1 1;-1 1;1 -1]) then bugmes();quit;end
-//a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-//if norm(sign(a)-[sqrt(2)/2*(1+%i) 1;-1 1;1 -1])>10*%eps then bugmes();quit;end
-//if sign([])<>[] then bugmes();quit;end
-//a=[];if sign(a)<>[] then bugmes();quit;end
-//clean
+a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
+assert_checkequal(sign(a), [1 1;-1 1;1 -1]);
+a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
+assert_checkfalse(norm(sign(a)-[sqrt(2)/2*(1+%i) 1;-1 1;1 -1])>10*%eps);
+assert_checkequal(sign([]), []);
+a=[]; assert_checkequal(sign(a), []);
 //log and exp
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if norm(exp(log(a))-a)>10*%eps then bugmes();quit;end
-if norm(exp(log(a+0))-a)>10*%eps then bugmes();quit;end
-b=log(a);if norm(exp(b)-a)>10*%eps then bugmes();quit;end
+assert_checkfalse(norm(exp(log(a))-a)>10*%eps);
+assert_checkfalse(norm(exp(log(a+0))-a)>10*%eps);
+b=log(a);
+assert_checkfalse(norm(exp(b)-a)>10*%eps);
 a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-if norm(exp(log(a))-a)>10*%eps then bugmes();quit;end
-if norm(exp(log(a+0))-a)>10*%eps then bugmes();quit;end
-b=log(a);if norm(exp(b)-a)>10*%eps then bugmes();quit;end
-if exp([])<>[] then bugmes();quit;end
-a=[];if exp(a)<>[] then bugmes();quit;end
-if log([])<>[] then bugmes();quit;end
-a=[];if log(a)<>[] then bugmes();quit;end
+assert_checkfalse(norm(exp(log(a))-a)>10*%eps);
+assert_checkfalse(norm(exp(log(a+0))-a)>10*%eps);
+b=log(a);
+assert_checkfalse(norm(exp(b)-a)>10*%eps);
+assert_checkequal(exp([]), []);
+a=[]; assert_checkequal(exp(a), []);
+assert_checkequal(log([]), []);
+a=[]; assert_checkequal(log(a), []);
 //sin and cos
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if norm(sin(a).^2+cos(a).^2-1)>10*%eps then bugmes();quit;end
-if norm(sin(a+0).^2+cos(a+0).^2-1)>10*%eps then bugmes();quit;end
+assert_checkfalse(norm(sin(a).^2+cos(a).^2-1)>10*%eps);
+assert_checkfalse(norm(sin(a+0).^2+cos(a+0).^2-1)>10*%eps);
 a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-if norm(sin(a).^2+cos(a).^2-1)>10*%eps then bugmes();quit;end
-if norm(sin(a+0).^2+cos(a+0).^2-1)>10*%eps then bugmes();quit;end
-if cos([])<>[] then bugmes();quit;end
-a=[];if cos(a)<>[] then bugmes();quit;end
-if sin([])<>[] then bugmes();quit;end
-a=[];if sin(a)<>[] then bugmes();quit;end
+assert_checkfalse(norm(sin(a).^2+cos(a).^2-1)>10*%eps);
+assert_checkfalse(norm(sin(a+0).^2+cos(a+0).^2-1)>10*%eps);
+assert_checkequal(cos([]), []);
+a=[]; assert_checkequal(cos(a), []);
+assert_checkequal(sin([]), []);
+a=[]; assert_checkequal(sin(a), []);
 //tan et atan
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if norm(tan(atan(a))-a)>100*%eps then bugmes();quit;end
-if norm(tan(atan(a+0))-a)>100*%eps then bugmes();quit;end
-b=log(a);if norm(exp(b)-a)>100*%eps then bugmes();quit;end
+assert_checkfalse(norm(tan(atan(a))-a)>100*%eps);
+assert_checkfalse(norm(tan(atan(a+0))-a)>100*%eps);
+b=log(a); assert_checkfalse(norm(exp(b)-a)>100*%eps);
 a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-if norm(tan(atan(a))-a)>100*%eps then bugmes();quit;end
-if norm(tan(atan(a+0))-a)>100*%eps then bugmes();quit;end
-if atan([])<>[] then bugmes();quit;end
-a=[];if atan(a)<>[] then bugmes();quit;end
-if atan([],[])<>[] then bugmes();quit;end
-a=[];if atan(a,[])<>[] then bugmes();quit;end
-a=[];if atan(a,a)<>[] then bugmes();quit;end
-a=[];if atan([],a)<>[] then bugmes();quit;end
+assert_checkfalse(norm(tan(atan(a))-a)>100*%eps);
+assert_checkfalse(norm(tan(atan(a+0))-a)>100*%eps);
+assert_checkequal(atan([]), []);
+a=[]; assert_checkequal(atan(a), []);
+assert_checkequal(atan([], []), []);
+a=[]; assert_checkequal(atan(a, []), []);
+a=[]; assert_checkequal(atan(a,a), []);
+a=[]; assert_checkequal(atan([], a), []);
 //expm
 a=[0 2;0 0];
-if norm(expm(a)-[1 2;0 1])>10*%eps then bugmes();quit;end
+assert_checkfalse(norm(expm(a)-[1 2;0 1])>10*%eps);
 a=[0 2*%i;0 0];
-if norm(expm(a)-[1 2*%i;0 1])>10*%eps then bugmes();quit;end
-if expm([])<>[] then bugmes();quit;end
-a=[];if expm(a)<>[] then bugmes();quit;end
+assert_checkfalse(norm(expm(a)-[1 2*%i;0 1])>10*%eps);
+assert_checkequal(expm([]), []);
+a=[]; assert_checkequal(expm(a), []);
 //sqrt
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if norm(sqrt(a).^2-a)>100*%eps then bugmes();quit;end
-if norm(sqrt(a+0).^2-a)>100*%eps then bugmes();quit;end
+assert_checkfalse(norm(sqrt(a).^2-a)>100*%eps);
+assert_checkfalse(norm(sqrt(a+0).^2-a)>100*%eps);
 a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-if norm(sqrt(a).^2-a)>100*%eps then bugmes();quit;end
-if norm(sqrt(a+0).^2-a)>100*%eps then bugmes();quit;end
-if sqrt([])<>[] then bugmes();quit;end
-a=[];if sqrt(a)<>[] then bugmes();quit;end
+assert_checkfalse(norm(sqrt(a).^2-a)>100*%eps);
+assert_checkfalse(norm(sqrt(a+0).^2-a)>100*%eps);
+assert_checkequal(sqrt([]), []);
+a=[]; assert_checkequal(sqrt(a), a);
 //sum
 a=[1 2;-3 4;5 -6];
-if sum(a)<>3 then bugmes();quit;end
-if sum(a+0)<>3 then bugmes();quit;end
-if or(sum(a,1)<>[3 0]) then bugmes();quit;end
-if or(sum(a+0,1)<>[3 0]) then bugmes();quit;end
+assert_checkequal(sum(a), 3);
+assert_checkequal(sum(a+0), 3);
+assert_checkequal(sum(a, 1), [3 0]);
+assert_checkequal(sum(a+0, 1), [3 0]);
 n=1;
-if or(sum(a,n)<>[3 0]) then bugmes();quit;end
-if or(sum(a+0,n)<>[3 0]) then bugmes();quit;end
-if or(sum(a,'r')<>[3 0]) then bugmes();quit;end
-if or(sum(a+0,'r')<>[3 0]) then bugmes();quit;end
-n='r';
-if or(sum(a,n)<>[3 0]) then bugmes();quit;end
-if or(sum(a+0,n)<>[3 0]) then bugmes();quit;end
-if or(sum(a,2)<>[3;1;-1]) then bugmes();quit;end
-if or(sum(a+0,2)<>[3;1;-1]) then bugmes();quit;end
+assert_checkequal(sum(a, n), [3 0]);
+assert_checkequal(sum(a+0, n), [3 0]);
+assert_checkequal(sum(a, "r"), [3 0]);
+assert_checkequal(sum(a+0, "r"), [3 0]);
+n="r";
+assert_checkequal(sum(a, n), [3 0]);
+assert_checkequal(sum(a+0, n), [3 0]);
+assert_checkequal(sum(a, 2), [3;1;-1]);
+assert_checkequal(sum(a+0, 2), [3;1;-1]);
 n=2;
-if or(sum(a,n)<>[3;1;-1]) then bugmes();quit;end
-if or(sum(a+0,n)<>[3;1;-1]) then bugmes();quit;end
-if or(sum(a,'c')<>[3;1;-1]) then bugmes();quit;end
-if or(sum(a+0,'c')<>[3;1;-1]) then bugmes();quit;end
-n='c';
-if or(sum(a,n)<>[3;1;-1]) then bugmes();quit;end
-if or(sum(a+0,n)<>[3;1;-1]) then bugmes();quit;end
+assert_checkequal(sum(a,n), [3;1;-1]);
+assert_checkequal(sum(a+0, n), [3;1;-1]);
+assert_checkequal(sum(a, "c"), [3;1;-1]);
+assert_checkequal(sum(a+0, "c"), [3;1;-1]);
+n="c";
+assert_checkequal(sum(a, n), [3;1;-1]);
+assert_checkequal(sum(a+0, n), [3;1;-1]);
 a=[1 2;-3 4;5 -6]+0*%i;
-if or(sum(a)<>3+0*%i) then bugmes();quit;end
-if or(sum(a+0)<>3+0*%i) then bugmes();quit;end
-if or(sum(a,1)<>[3 0]+0*%i) then bugmes();quit;end
-if or(sum(a+0,1)<>[3 0]+0*%i) then bugmes();quit;end
+assert_checkequal(sum(a), 3+0*%i);
+assert_checkequal(sum(a+0), 3+0*%i);
+assert_checkequal(sum(a, 1), [3 0]+0*%i);
+assert_checkequal(sum(a+0, 1), [3 0]+0*%i);
 n=1;
-if or(sum(a,n)<>[3 0]+0*%i) then bugmes();quit;end
-if or(sum(a+0,n)<>[3 0]+0*%i) then bugmes();quit;end
-if or(sum(a,'r')<>[3 0]+0*%i) then bugmes();quit;end
-if or(sum(a+0,'r')<>[3 0]+0*%i) then bugmes();quit;end
-n='r';
-if or(sum(a,n)<>[3 0]+0*%i) then bugmes();quit;end
-if or(sum(a+0,n)<>[3 0]+0*%i) then bugmes();quit;end
-if or(sum(a,2)<>[3;1;-1]+0*%i) then bugmes();quit;end
-if or(sum(a+0,2)<>[3;1;-1]+0*%i) then bugmes();quit;end
+assert_checkequal(sum(a,n), [3 0]+0*%i);
+assert_checkequal(sum(a+0, n), [3 0]+0*%i);
+assert_checkequal(sum(a, "r"), [3 0]+0*%i);
+assert_checkequal(sum(a+0, "r"), [3 0]+0*%i);
+n="r";
+assert_checkequal(sum(a, n), [3 0]+0*%i);
+assert_checkequal(sum(a+0, n), [3 0]+0*%i);
+assert_checkequal(sum(a, 2), [3;1;-1]+0*%i);
+assert_checkequal(sum(a+0, 2), [3;1;-1]+0*%i);
 n=2;
-if or(sum(a,n)<>[3;1;-1]+0*%i) then bugmes();quit;end
-if or(sum(a+0,n)<>[3;1;-1]+0*%i) then bugmes();quit;end
-if or(sum(a,'c')<>[3;1;-1]+0*%i) then bugmes();quit;end
-if or(sum(a+0,'c')<>[3;1;-1]+0*%i) then bugmes();quit;end
-n='c';
-if or(sum(a,n)<>[3;1;-1]+0*%i) then bugmes();quit;end
-if or(sum(a+0,n)<>[3;1;-1]+0*%i) then bugmes();quit;end
-a=[]
- a  =
-     []
-if sum(a)<>0 then bugmes();quit;end
-if sum([])<>0 then bugmes();quit;end
-if sum(a,1)<>[] then bugmes();quit;end
-if sum([],1)<>[] then bugmes();quit;end
+assert_checkequal(sum(a,n), [3;1;-1]+0*%i);
+assert_checkequal(sum(a+0,n), [3;1;-1]+0*%i);
+assert_checkequal(sum(a,"c"), [3;1;-1]+0*%i);
+assert_checkequal(sum(a+0, "c"), [3;1;-1]+0*%i);
+n="c";
+assert_checkequal(sum(a, n), [3;1;-1]+0*%i);
+assert_checkequal(sum(a+0, n), [3;1;-1]+0*%i);
+a=[];
+assert_checkequal(sum(a), 0);
+assert_checkequal(sum([]), 0);
+assert_checkequal(sum(a, 1), []);
+assert_checkequal(sum([], 1), []);
 n=1;
-if sum(a,n)<>[] then bugmes();quit;end
-if sum([],n)<>[] then bugmes();quit;end
-if sum(a,'r')<>[] then bugmes();quit;end
-if sum([],'r')<>[] then bugmes();quit;end
-n='r';
-if sum(a,n)<>[] then bugmes();quit;end
-if sum([],n)<>[] then bugmes();quit;end
-if sum(a,2)<>[] then bugmes();quit;end
-if sum([],2)<>[] then bugmes();quit;end
+assert_checkequal(sum(a,n), []);
+assert_checkequal(sum([], n), []);
+assert_checkequal(sum(a, "r"), []);
+assert_checkequal(sum([], "r"), []);
+n="r";
+assert_checkequal(sum(a, n), []);
+assert_checkequal(sum([], n), []);
+assert_checkequal(sum(a, 2), []);
+assert_checkequal(sum([], 2), []);
 n=2;
-if sum(a,n)<>[] then bugmes();quit;end
-if sum([],n)<>[] then bugmes();quit;end
-if sum(a,'c')<>[] then bugmes();quit;end
-if sum([],'c')<>[] then bugmes();quit;end
-n='c';
-if sum(a,n)<>[] then bugmes();quit;end
-if sum([],n)<>[] then bugmes();quit;end
+assert_checkequal(sum(a,n), []);
+assert_checkequal(sum([], n), []);
+assert_checkequal(sum(a, "c"), []);
+assert_checkequal(sum([], "c"), []);
+n="c";
+assert_checkequal(sum(a,n), []);
+assert_checkequal(sum([], n), []);
 a=sparse([1 2;-3 4;5 -6]);
-if sum(a)<>3 then bugmes();quit;end
-if sum(a+0*a)<>3 then bugmes();quit;end
+assert_checkequal(sum(a), 3);
+assert_checkequal(sum(a+0*a), 3);
 a=sparse([1 2;-3 4;5 -6]+0*%i);
-if sum(a)<>3+0*%i then bugmes();quit;end
-if sum(a+0*a)<>3+0*%i then bugmes();quit;end
+assert_checkequal(sum(a), 3+0*%i);
+assert_checkequal(sum(a+0*a), 3+0*%i);
 //prod
 a=[1 2;-3 4;5 -6];
-if prod(a)<>720 then bugmes();quit;end
-if prod(a+0)<>720 then bugmes();quit;end
-if prod(a,1)<>[-15 -48] then bugmes();quit;end
-if or(prod(a+0,1)<>[-15 -48]) then bugmes();quit;end
+assert_checkequal(prod(a), 720);
+assert_checkequal(prod(a+0), 720);
+assert_checkequal(prod(a, 1), [-15 -48]);
+assert_checkequal(prod(a+0, 1), [-15 -48]);
 n=1;
-if or(prod(a,n)<>[-15 -48]) then bugmes();quit;end
-if or(prod(a+0,n)<>[-15 -48]) then bugmes();quit;end
-if or(prod(a,'r')<>[-15 -48]) then bugmes();quit;end
-if or(prod(a+0,'r')<>[-15 -48]) then bugmes();quit;end
-n='r';
-if or(prod(a,n)<>[-15 -48]) then bugmes();quit;end
-if or(prod(a+0,n)<>[-15 -48]) then bugmes();quit;end
-if or(prod(a,2)<>[2;-12;-30]) then bugmes();quit;end
-if or(prod(a+0,2)<>[2;-12;-30]) then bugmes();quit;end
+assert_checkequal(prod(a, n), [-15 -48]);
+assert_checkequal(prod(a+0, n), [-15 -48]);
+assert_checkequal(prod(a, "r"), [-15 -48]);
+assert_checkequal(prod(a+0, "r"), [-15 -48]);
+n="r";
+assert_checkequal(prod(a, n), [-15 -48]);
+assert_checkequal(prod(a+0, n), [-15 -48]);
+assert_checkequal(prod(a, 2), [2;-12;-30]);
+assert_checkequal(prod(a+0, 2), [2;-12;-30]);
 n=2;
-if or(prod(a,n)<>[2;-12;-30]) then bugmes();quit;end
-if or(prod(a+0,n)<>[2;-12;-30]) then bugmes();quit;end
-if or(prod(a,'c')<>[2;-12;-30]) then bugmes();quit;end
-if or(prod(a+0,'c')<>[2;-12;-30]) then bugmes();quit;end
-n='c';
-if or(prod(a,n)<>[2;-12;-30]) then bugmes();quit;end
-if or(prod(a+0,n)<>[2;-12;-30]) then bugmes();quit;end
+assert_checkequal(prod(a, n), [2;-12;-30]);
+assert_checkequal(prod(a+0, n), [2;-12;-30]);
+assert_checkequal(prod(a, "c"), [2;-12;-30]);
+assert_checkequal(prod(a, "c"), [2;-12;-30]);
+n="c";
+assert_checkequal(prod(a, n), [2;-12;-30]);
+assert_checkequal(prod(a+0, n), [2;-12;-30]);
 a=[1 2;-3 4;5 -6]+0*%i;
-if prod(a)<>720+0*%i then bugmes();quit;end
-if prod(a+0)<>720+0*%i then bugmes();quit;end
-if or(prod(a,1)<>[-15 -48]+0*%i) then bugmes();quit;end
-if or(prod(a+0,1)<>[-15 -48]+0*%i) then bugmes();quit;end
+assert_checkequal(prod(a), 720+0*%i);
+assert_checkequal(prod(a+0), 720+0*%i);
+assert_checkequal(prod(a, 1), [-15 -48]+0*%i);
+assert_checkequal(prod(a+0, 1), [-15 -48]+0*%i);
 n=1;
-if or(prod(a,n)<>[-15 -48]+0*%i) then bugmes();quit;end
-if or(prod(a+0,n)<>[-15 -48]+0*%i) then bugmes();quit;end
-if or(prod(a,'r')<>[-15 -48]+0*%i) then bugmes();quit;end
-if or(prod(a+0,'r')<>[-15 -48]+0*%i) then bugmes();quit;end
-n='r';
-if or(prod(a,n)<>[-15 -48]+0*%i) then bugmes();quit;end
-if or(prod(a+0,n)<>[-15 -48]+0*%i) then bugmes();quit;end
-if or(prod(a,2)<>[2;-12;-30]+0*%i) then bugmes();quit;end
-if or(prod(a+0,2)<>[2;-12;-30]+0*%i) then bugmes();quit;end
+assert_checkequal(prod(a, n), [-15 -48]+0*%i);
+assert_checkequal(prod(a+0, n), [-15 -48]+0*%i);
+assert_checkequal(prod(a, "r"), [-15 -48]+0*%i);
+assert_checkequal(prod(a+0, "r"), [-15 -48]+0*%i);
+n="r";
+assert_checkequal(prod(a, n), [-15 -48]+0*%i);
+assert_checkequal(prod(a+0, n), [-15 -48]+0*%i);
+assert_checkequal(prod(a, 2), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a+0, 2), [2;-12;-30]+0*%i);
 n=2;
-if or(prod(a,n)<>[2;-12;-30]+0*%i) then bugmes();quit;end
-if or(prod(a+0,n)<>[2;-12;-30]+0*%i) then bugmes();quit;end
-if or(prod(a,'c')<>[2;-12;-30]+0*%i) then bugmes();quit;end
-if or(prod(a+0,'c')<>[2;-12;-30]+0*%i) then bugmes();quit;end
-n='c';
-if or(prod(a,n)<>[2;-12;-30]+0*%i) then bugmes();quit;end
-if or(prod(a+0,n)<>[2;-12;-30]+0*%i) then bugmes();quit;end
-a=[]
- a  =
-     []
-if prod(a)<>1 then bugmes();quit;end
-if prod([])<>1 then bugmes();quit;end
-if prod(a,1)<>[] then bugmes();quit;end
-if prod([],1)<>[] then bugmes();quit;end
+assert_checkequal(prod(a, n), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a+0, n), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a, "c"), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a+0, "c"), [2;-12;-30]+0*%i);
+n="c";
+assert_checkequal(prod(a, n), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a+0, n), [2;-12;-30]+0*%i);
+a=[];
+assert_checkequal(prod(a), 1);
+assert_checkequal(prod([]), 1);
+assert_checkequal(prod(a, 1), []);
+assert_checkequal(prod([], 1), []);
 n=1;
-if prod(a,n)<>[] then bugmes();quit;end
-if prod([],n)<>[] then bugmes();quit;end
-if prod(a,'r')<>[] then bugmes();quit;end
-if prod([],'r')<>[] then bugmes();quit;end
-n='r';
-if prod(a,n)<>[] then bugmes();quit;end
-if prod([],n)<>[] then bugmes();quit;end
-if prod(a,2)<>[] then bugmes();quit;end
-if prod([],2)<>[] then bugmes();quit;end
+assert_checkequal(prod(a, n), []);
+assert_checkequal(prod([], n), []);
+assert_checkequal(prod(a, "r"), []);
+assert_checkequal(prod([], "r"), []);
+n="r";
+assert_checkequal(prod(a,n), []);
+assert_checkequal(prod([], n), []);
+assert_checkequal(prod(a, 2), []);
+assert_checkequal(prod([], 2), []);
 n=2;
-if prod(a,n)<>[] then bugmes();quit;end
-if prod([],n)<>[] then bugmes();quit;end
-if prod(a,'c')<>[] then bugmes();quit;end
-if prod([],'c')<>[] then bugmes();quit;end
-n='c';
-if prod(a,n)<>[] then bugmes();quit;end
-if prod([],n)<>[] then bugmes();quit;end
+assert_checkequal(prod(a,n), []);
+assert_checkequal(prod([], n), []);
+assert_checkequal(prod(a, "c"), []);
+assert_checkequal(prod([], "c"), []);
+n="c";
+assert_checkequal(prod(a, n), []);
+assert_checkequal(prod([], n), []);
 //cumsum
 a=[1 2;-3 4;5 -6];
-if or(cumsum(a)<>[1,5;-2,9;3,3]) then bugmes();quit;end
-if or(cumsum(a+0)<> [1,5;-2,9;3,3]) then bugmes();quit;end
-if or(cumsum(a,1)<>[1,2;-2,6;3 0]) then bugmes();quit;end
-if or(cumsum(a+0,1)<>[1,2;-2,6;3 0]) then bugmes();quit;end
+assert_checkequal(cumsum(a), [1,5;-2,9;3,3]);
+assert_checkequal(cumsum(a+0), [1,5;-2,9;3,3]);
+assert_checkequal(cumsum(a,1), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a+0,1), [1,2;-2,6;3 0]);
 n=1;
-if or(cumsum(a,n)<>[1,2;-2,6;3 0]) then bugmes();quit;end
-if or(cumsum(a+0,n)<>[1,2;-2,6;3 0]) then bugmes();quit;end
-if or(cumsum(a,'r')<>[1,2;-2,6;3 0]) then bugmes();quit;end
-if or(cumsum(a+0,'r')<>[1,2;-2,6;3 0]) then bugmes();quit;end
-n='r';
-if or(cumsum(a,n)<>[1,2;-2,6;3 0]) then bugmes();quit;end
-if or(cumsum(a+0,n)<>[1,2;-2,6;3 0]) then bugmes();quit;end
-if or(cumsum(a,2)<>[1,3;-3,1;5,-1]) then bugmes();quit;end
-if or(cumsum(a+0,2)<>[1,3;-3,1;5,-1]) then bugmes();quit;end
+assert_checkequal(cumsum(a, n), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a+0, n), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a, "r"), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a+0, "r"), [1,2;-2,6;3 0]);
+n="r";
+assert_checkequal(cumsum(a, n), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a+0, n), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a, 2), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a+0, 2), [1,3;-3,1;5,-1]);
 n=2;
-if or(cumsum(a,n)<>[1,3;-3,1;5,-1]) then bugmes();quit;end
-if or(cumsum(a+0,n)<>[1,3;-3,1;5,-1]) then bugmes();quit;end
-if or(cumsum(a,'c')<>[1,3;-3,1;5,-1]) then bugmes();quit;end
-if or(cumsum(a+0,'c')<>[1,3;-3,1;5,-1]) then bugmes();quit;end
-n='c';
-if or(cumsum(a,n)<>[1,3;-3,1;5,-1]) then bugmes();quit;end
-if or(cumsum(a+0,n)<>[1,3;-3,1;5,-1]) then bugmes();quit;end
+assert_checkequal(cumsum(a, n), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a+0, n), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a, "c"), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a+0, "c"), [1,3;-3,1;5,-1]);
+n="c";
+assert_checkequal(cumsum(a, n), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a+0, n), [1,3;-3,1;5,-1]);
 a=[1 2;-3 4;5 -6]+0*%i;
-if cumsum(a)<>3+0*%i then bugmes();quit;end
-if cumsum(a+0)<>3+0*%i then bugmes();quit;end
-if or(cumsum(a,1)<>[1,2;-2,6;3 0]+0*%i) then bugmes();quit;end
-if or(cumsum(a+0,1)<>[1,2;-2,6;3 0]+0*%i) then bugmes();quit;end
+assert_checkequal(cumsum(a), [1,5;-2,9;3,3]+0*%i);
+assert_checkequal(cumsum(a+0), [1,5;-2,9;3,3]+0*%i);
+assert_checkequal(cumsum(a,1), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a+0, 1), [1,2;-2,6;3 0]+0*%i);
 n=1;
-if or(cumsum(a,n)<>[1,2;-2,6;3 0]+0*%i) then bugmes();quit;end
-if or(cumsum(a+0,n)<>[1,2;-2,6;3 0]+0*%i) then bugmes();quit;end
-if or(cumsum(a,'r')<>[1,2;-2,6;3 0]+0*%i) then bugmes();quit;end
-if or(cumsum(a+0,'r')<>[1,2;-2,6;3 0]+0*%i) then bugmes();quit;end
-n='r';
-if or(cumsum(a,n)<>[1,2;-2,6;3 0]+0*%i) then bugmes();quit;end
-if or(cumsum(a+0,n)<>[1,2;-2,6;3 0]+0*%i) then bugmes();quit;end
-if or(cumsum(a,2)<>[1,3;-3,1;5,-1]+0*%i) then bugmes();quit;end
-if or(cumsum(a+0,2)<>[1,3;-3,1;5,-1]+0*%i) then bugmes();quit;end
+assert_checkequal(cumsum(a, n), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a+0, n), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a, "r"), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a+0, "r"), [1,2;-2,6;3 0]+0*%i);
+n="r";
+assert_checkequal(cumsum(a, n), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a+0, n), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a, 2), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a+0, 2), [1,3;-3,1;5,-1]+0*%i);
 n=2;
-if or(cumsum(a,n)<>[1,3;-3,1;5,-1]+0*%i) then bugmes();quit;end
-if or(cumsum(a+0,n)<>[1,3;-3,1;5,-1]+0*%i) then bugmes();quit;end
-if or(cumsum(a,'c')<>[1,3;-3,1;5,-1]+0*%i) then bugmes();quit;end
-if or(cumsum(a+0,'c')<>[1,3;-3,1;5,-1]+0*%i) then bugmes();quit;end
-n='c';
-if or(cumsum(a,n)<>[1,3;-3,1;5,-1]+0*%i) then bugmes();quit;end
-if or(cumsum(a+0,n)<>[1,3;-3,1;5,-1]+0*%i) then bugmes();quit;end
+assert_checkequal(cumsum(a, n), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a+0, n), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a, "c"), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a+0, "c"), [1,3;-3,1;5,-1]+0*%i);
+n="c";
+assert_checkequal(cumsum(a, n), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a+0, n), [1,3;-3,1;5,-1]+0*%i);
 a=[];
-if cumsum(a)<>[] then bugmes();quit;end
-if cumsum([])<>[] then bugmes();quit;end
-if cumsum(a,1)<>[] then bugmes();quit;end
-if cumsum([],1)<>[] then bugmes();quit;end
+assert_checkequal(cumsum(a), []);
+assert_checkequal(cumsum([]), []);
+assert_checkequal(cumsum(a, 1), []);
+assert_checkequal(cumsum([], 1), []);
 n=1;
-if cumsum(a,n)<>[] then bugmes();quit;end
-if cumsum([],n)<>[] then bugmes();quit;end
-if cumsum(a,'r')<>[] then bugmes();quit;end
-if cumsum([],'r')<>[] then bugmes();quit;end
-n='r';
-if cumsum(a,n)<>[] then bugmes();quit;end
-if cumsum([],n)<>[] then bugmes();quit;end
-if cumsum(a,2)<>[] then bugmes();quit;end
-if cumsum([],2)<>[] then bugmes();quit;end
+assert_checkequal(cumsum(a,n), []);
+assert_checkequal(cumsum([], n), []);
+assert_checkequal(cumsum(a, "r"), []);
+assert_checkequal(cumsum([], "r"), []);
+n="r";
+assert_checkequal(cumsum(a, n), []);
+assert_checkequal(cumsum([], n), []);
+assert_checkequal(cumsum(a, 2), []);
+assert_checkequal(cumsum([], 2), []);
 n=2;
-if cumsum(a,n)<>[] then bugmes();quit;end
-if cumsum([],n)<>[] then bugmes();quit;end
-if cumsum(a,'c')<>[] then bugmes();quit;end
-if cumsum([],'c')<>[] then bugmes();quit;end
-n='c';
-if cumsum(a,n)<>[] then bugmes();quit;end
-if cumsum([],n)<>[] then bugmes();quit;end
+assert_checkequal(cumsum(a, n), []);
+assert_checkequal(cumsum([], n), []);
+assert_checkequal(cumsum(a, "c"), []);
+assert_checkequal(cumsum([], "c"), []);
+n="c";
+assert_checkequal(cumsum(a,n), []);
+assert_checkequal(cumsum([], n), []);
 a=sparse([1 2;-3 4;5 -6]);
-//if cumsum(a)<> [1,5;-2,9;3,3] then bugmes();quit;end
-//if cumsum(a+0*a)<> [1,5;-2,9;3,3] then bugmes();quit;end
+assert_checkequal(cumsum(a), sparse([1,5;-2,9;3,3]));
+assert_checkequal(cumsum(a+0*a), sparse([1,5;-2,9;3,3]));
 a=sparse([1 2;-3 4;5 -6]+0*%i);
-//if cumsum(a)<>3+0*%i then bugmes();quit;end
-//if cumsum(a+0*a)<>3+0*%i then bugmes();quit;end
+assert_checkequal(cumsum(a), sparse([1,5;-2,9;3,3]+0*%i));
+assert_checkequal(cumsum(a+0*a), sparse([1,5;-2,9;3,3]+0*%i));
 //cumprod
 a=[1 2;-3 4;5 -6];
-if or(cumprod(a)<>[1 -30;-3 -120;-15 720]) then bugmes();quit;end
-if or(cumprod(a+0)<> [1 -30;-3 -120;-15 720]) then bugmes();quit;end
-if or(cumprod(a,1)<>[1 2;-3 8;-15 -48]) then bugmes();quit;end
-if or(cumprod(a+0,1)<>[1 2;-3 8;-15 -48]) then bugmes();quit;end
+assert_checkequal(cumprod(a), [1 -30;-3 -120;-15 720]);
+assert_checkequal(cumprod(a+0), [1 -30;-3 -120;-15 720]);
+assert_checkequal(cumprod(a, 1), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a+0, 1), [1 2;-3 8;-15 -48]);
 n=1;
-if or(cumprod(a,n)<>[1 2;-3 8;-15 -48]) then bugmes();quit;end
-if or(cumprod(a+0,n)<>[1 2;-3 8;-15 -48]) then bugmes();quit;end
-if or(cumprod(a,'r')<>[1 2;-3 8;-15 -48]) then bugmes();quit;end
-if or(cumprod(a+0,'r')<>[1 2;-3 8;-15 -48]) then bugmes();quit;end
-n='r';
-if or(cumprod(a,n)<>[1 2;-3 8;-15 -48]) then bugmes();quit;end
-if or(cumprod(a+0,n)<>[1 2;-3 8;-15 -48]) then bugmes();quit;end
-if or(cumprod(a,2)<>[1 2;-3 -12;5 -30]) then bugmes();quit;end
-if or(cumprod(a+0,2)<>[1 2;-3 -12;5 -30]) then bugmes();quit;end
+assert_checkequal(cumprod(a,n), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a, "r"), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a+0, "r"), [1 2;-3 8;-15 -48]);
+n="r";
+assert_checkequal(cumprod(a, n), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a,2), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a+0, 2), [1 2;-3 -12;5 -30]);
 n=2;
-if or(cumprod(a,n)<>[1 2;-3 -12;5 -30]) then bugmes();quit;end
-if or(cumprod(a+0,n)<>[1 2;-3 -12;5 -30]) then bugmes();quit;end
-if or(cumprod(a,'c')<>[1 2;-3 -12;5 -30]) then bugmes();quit;end
-if or(cumprod(a+0,'c')<>[1 2;-3 -12;5 -30]) then bugmes();quit;end
-n='c';
-if or(cumprod(a,n)<>[1 2;-3 -12;5 -30]) then bugmes();quit;end
-if or(cumprod(a+0,n)<>[1 2;-3 -12;5 -30]) then bugmes();quit;end
+assert_checkequal(cumprod(a,n), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a, "c"), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a+0, "c"), [1 2;-3 -12;5 -30]);
+n="c";
+assert_checkequal(cumprod(a,n), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 -12;5 -30]);
 a=[1 2;-3 4;5 -6]+0*%i;
-if cumprod(a)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
-if cumprod(a+0)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
-if or(cumprod(a,1)<>[1 2;-3 8;-15 -48]+0*%i) then bugmes();quit;end
-if or(cumprod(a+0,1)<>[1 2;-3 8;-15 -48]+0*%i) then bugmes();quit;end
+assert_checkequal(cumprod(a), [1 -30;-3 -120;-15 720]+0*%i);
+assert_checkequal(cumprod(a+0), [1 -30;-3 -120;-15 720]+0*%i);
+assert_checkequal(cumprod(a, 1), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a+0, 1), [1 2;-3 8;-15 -48]+0*%i);
 n=1;
-if or(cumprod(a,n)<>[1 2;-3 8;-15 -48]+0*%i) then bugmes();quit;end
-if or(cumprod(a+0,n)<>[1 2;-3 8;-15 -48]+0*%i) then bugmes();quit;end
-if or(cumprod(a,'r')<>[1 2;-3 8;-15 -48]+0*%i) then bugmes();quit;end
-if or(cumprod(a+0,'r')<>[1 2;-3 8;-15 -48]+0*%i) then bugmes();quit;end
-n='r';
-if or(cumprod(a,n)<>[1 2;-3 8;-15 -48]+0*%i) then bugmes();quit;end
-if or(cumprod(a+0,n)<>[1 2;-3 8;-15 -48]+0*%i) then bugmes();quit;end
-if or(cumprod(a,2)<>[1 2;-3 -12;5 -30]+0*%i) then bugmes();quit;end
-if or(cumprod(a+0,2)<>[1 2;-3 -12;5 -30]+0*%i) then bugmes();quit;end
+assert_checkequal(cumprod(a,n), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a, "r"), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a+0, "r"), [1 2;-3 8;-15 -48]+0*%i);
+n="r";
+assert_checkequal(cumprod(a, n), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a, 2), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a+0, 2), [1 2;-3 -12;5 -30]+0*%i);
 n=2;
-if or(cumprod(a,n)<>[1 2;-3 -12;5 -30]+0*%i) then bugmes();quit;end
-if or(cumprod(a+0,n)<>[1 2;-3 -12;5 -30]+0*%i) then bugmes();quit;end
-if or(cumprod(a,'c')<>[1 2;-3 -12;5 -30]+0*%i) then bugmes();quit;end
-if or(cumprod(a+0,'c')<>[1 2;-3 -12;5 -30]+0*%i) then bugmes();quit;end
-n='c';
-if or(cumprod(a,n)<>[1 2;-3 -12;5 -30]+0*%i) then bugmes();quit;end
-if or(cumprod(a+0,n)<>[1 2;-3 -12;5 -30]+0*%i) then bugmes();quit;end
+assert_checkequal(cumprod(a,n), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a, "c"), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a+0, "c"), [1 2;-3 -12;5 -30]+0*%i);
+n="c";
+assert_checkequal(cumprod(a, n), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 -12;5 -30]+0*%i);
 a=[];
-if cumprod(a)<>[] then bugmes();quit;end
-if cumprod([])<>[] then bugmes();quit;end
-if cumprod(a,1)<>[] then bugmes();quit;end
-if cumprod([],1)<>[] then bugmes();quit;end
+assert_checkequal(cumprod(a), []);
+assert_checkequal(cumprod([]), []);
+assert_checkequal(cumprod(a, 1), []);
+assert_checkequal(cumprod([], 1), []);
 n=1;
-if cumprod(a,n)<>[] then bugmes();quit;end
-if cumprod([],n)<>[] then bugmes();quit;end
-if cumprod(a,'r')<>[] then bugmes();quit;end
-if cumprod([],'r')<>[] then bugmes();quit;end
-n='r';
-if cumprod(a,n)<>[] then bugmes();quit;end
-if cumprod([],n)<>[] then bugmes();quit;end
-if cumprod(a,2)<>[] then bugmes();quit;end
-if cumprod([],2)<>[] then bugmes();quit;end
+assert_checkequal(cumprod(a,n), []);
+assert_checkequal(cumprod([], n), []);
+assert_checkequal(cumprod(a, "r"), []);
+assert_checkequal(cumprod([], "r"), []);
+n="r";
+assert_checkequal(cumprod(a,n), []);
+assert_checkequal(cumprod([], n), []);
+assert_checkequal(cumprod(a,2), []);
+assert_checkequal(cumprod([], 2), []);
 n=2;
-if cumprod(a,n)<>[] then bugmes();quit;end
-if cumprod([],n)<>[] then bugmes();quit;end
-if cumprod(a,'c')<>[] then bugmes();quit;end
-if cumprod([],'c')<>[] then bugmes();quit;end
-n='c';
-if cumprod(a,n)<>[] then bugmes();quit;end
-if cumprod([],n)<>[] then bugmes();quit;end
+assert_checkequal(cumprod(a,n), []);
+assert_checkequal(cumprod([], n), []);
+assert_checkequal(cumprod(a, "c"), []);
+assert_checkequal(cumprod([], "c"), []);
+n="c";
+assert_checkequal(cumprod(a,n), []);
+assert_checkequal(cumprod([], n), []);
 a=sparse([1 2;-3 4;5 -6]);
-//if cumprod(a)<> [1 -30;-3 -120;-15 720] then bugmes();quit;end
-//if cumprod(a+0*a)<> [1 -30;-3 -120;-15 720] then bugmes();quit;end
+assert_checkequal(cumprod(a), sparse([1 -30;-3 -120;-15 720]));
+assert_checkequal(cumprod(a+0*a), sparse([1 -30;-3 -120;-15 720]));
 a=sparse([1 2;-3 4;5 -6]+0*%i);
-//if cumprod(a)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
-//if cumprod(a+0*a)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
+assert_checkequal(cumprod(a), sparse([1 -30;-3 -120;-15 720]+0*%i));
+assert_checkequal(cumprod(a+0*a), sparse([1 -30;-3 -120;-15 720]+0*%i));
 //maxi
 a=[1 2;-3 4;5 -6];
-if or(max(a)<>5) then bugmes();quit;end
-if or(max(a+0)<>5) then bugmes();quit;end
-if or(max(a,'r')<>[5 4]) then bugmes();quit;end
-if or(max(a+0,'r')<>[5 4]) then bugmes();quit;end
-n='r';
-if or(max(a,n)<>[5 4]) then bugmes();quit;end
-if or(max(a+0,n)<>[5 4]) then bugmes();quit;end
-if or(max(a,'c')<>[2;4;5]) then bugmes();quit;end
-if or(max(a+0,'c')<>[2;4;5]) then bugmes();quit;end
-n='c';
-if or(max(a,n)<>[2;4;5]) then bugmes();quit;end
-if or(max(a+0,n)<>[2;4;5]) then bugmes();quit;end
-//a=[1 2;-3 4;5 -6]+0*%i;
+assert_checkequal(max(a), 5);
+assert_checkequal(max(a+0), 5);
+assert_checkequal(max(a, "r"), [5 4]);
+assert_checkequal(max(a+0, "r"), [5 4]);
+n="r";
+assert_checkequal(max(a,n), [5 4]);
+assert_checkequal(max(a+0, n), [5 4]);
+assert_checkequal(max(a, "c"), [2;4;5]);
+assert_checkequal(max(a+0, "c"), [2;4;5]);
+n="c";
+assert_checkequal(max(a, n), [2;4;5]);
+assert_checkequal(max(a+0, n), [2;4;5]);
+a=[1 2;-3 4;5 -6]+0*%i;
 //if max(a)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
 //if max(a+0)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
 //if or(max(a,'r')<>[5 4]+0*%i) then bugmes();quit;end
@@ -757,38 +749,38 @@ if or(max(a+0,n)<>[2;4;5]) then bugmes();quit;end
 //if or(max(a,n)<>[2;4;5]+0*%i) then bugmes();quit;end
 //if or(max(a+0,n)<>[2;4;5]+0*%i) then bugmes();quit;end
 a=[];
-if max(a)<>[] then bugmes();quit;end
-if max([])<>[] then bugmes();quit;end
-if max(a,'r')<>[] then bugmes();quit;end
-if max([],'r')<>[] then bugmes();quit;end
-n='r';
-if max(a,n)<>[] then bugmes();quit;end
-if max([],n)<>[] then bugmes();quit;end
-if max(a,'c')<>[] then bugmes();quit;end
-if max([],'c')<>[] then bugmes();quit;end
-n='c';
-if max(a,n)<>[] then bugmes();quit;end
-if max([],n)<>[] then bugmes();quit;end
+assert_checkequal(max(a), []);
+assert_checkequal(max([]), []);
+assert_checkequal(max(a, "r"), []);
+assert_checkequal(max([], "r"), []);
+n="r";
+assert_checkequal(max(a,n), []);
+assert_checkequal(max([], n), []);
+assert_checkequal(max(a, "c"), []);
+assert_checkequal(max([], "c"), []);
+n="c";
+assert_checkequal(max(a,n), []);
+assert_checkequal(max([], n), []);
 a=sparse([1 2;-3 4;5 -6]);
-//if max(a)<>5 then bugmes();quit;end
-//if max(a+0*a)<>5 then bugmes();quit;end
+assert_checkequal(max(a), 5);
+assert_checkequal(max(a+0*a), 5);
 a=sparse([1 2;-3 4;5 -6]+0*%i);
 //if max(a)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
 //if max(a+0*a)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
 //mini
 a=[1 2;-3 4;5 -6];
-if or(min(a)<>-6) then bugmes();quit;end
-if or(min(a+0)<>-6) then bugmes();quit;end
-if or(min(a,'r')<>[-3 -6]) then bugmes();quit;end
-if or(min(a+0,'r')<>[-3 -6]) then bugmes();quit;end
-n='r';
-if or(min(a,n)<>[-3 -6]) then bugmes();quit;end
-if or(min(a+0,n)<>[-3 -6]) then bugmes();quit;end
-if or(min(a,'c')<>[1;-3;-6]) then bugmes();quit;end
-if or(min(a+0,'c')<>[1;-3;-6]) then bugmes();quit;end
-n='c';
-if or(min(a,n)<>[1;-3;-6]) then bugmes();quit;end
-if or(min(a+0,n)<>[1;-3;-6]) then bugmes();quit;end
+assert_checkequal(min(a), -6);
+assert_checkequal(min(a+0), -6);
+assert_checkequal(min(a, "r"), [-3 -6]);
+assert_checkequal(min(a+0, "r"), [-3 -6]);
+n="r";
+assert_checkequal(min(a,n), [-3 -6]);
+assert_checkequal(min(a+0, n), [-3 -6]);
+assert_checkequal(min(a, "c"), [1;-3;-6]);
+assert_checkequal(min(a+0, "c"), [1;-3;-6]);
+n="c";
+assert_checkequal(min(a,n), [1;-3;-6]);
+assert_checkequal(min(a+0,n), [1;-3;-6]);
 //a=[1 2;-3 4;5 -6]+0*%i;
 //if min(a)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
 //if min(a+0)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
@@ -803,177 +795,174 @@ if or(min(a+0,n)<>[1;-3;-6]) then bugmes();quit;end
 //if or(min(a,n)<>[1;-3;-6]+0*%i) then bugmes();quit;end
 //if or(min(a+0,n)<>[1;-3;-6]+0*%i) then bugmes();quit;end
 a=[];
-if min(a)<>[] then bugmes();quit;end
-if min([])<>[] then bugmes();quit;end
-if min(a,'r')<>[] then bugmes();quit;end
-if min([],'r')<>[] then bugmes();quit;end
-n='r';
-if min(a,n)<>[] then bugmes();quit;end
-if min([],n)<>[] then bugmes();quit;end
-if min(a,'c')<>[] then bugmes();quit;end
-if min([],'c')<>[] then bugmes();quit;end
-n='c';
-if min(a,n)<>[] then bugmes();quit;end
-if min([],n)<>[] then bugmes();quit;end
+assert_checkequal(min(a), []);
+assert_checkequal(min([]), []);
+assert_checkequal(min(a, "r"), []);
+assert_checkequal(min([], "r"), []);
+n="r";
+assert_checkequal(min(a, n), []);
+assert_checkequal(min([], n), []);
+assert_checkequal(min(a, "c"), []);
+assert_checkequal(min([], "c"), []);
+n="c";
+assert_checkequal(min(a, n), []);
+assert_checkequal(min([], n), []);
 a=sparse([1 2;-3 4;5 -6]);
-//if min(a)<>-6 then bugmes();quit;end
-//if min(a+0*a)<>-6 then bugmes();quit;end
+assert_checkequal(min(a), -6);
+assert_checkequal(min(a+0*a), -6);
 a=sparse([1 2;-3 4;5 -6]+0*%i);
 //if min(a)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
 //if min(a+0*a)<>[1 -30;-3 -120;-15 720]+0*%i then bugmes();quit;end
 //kron
 a=[1 2];b=[3;4];
-if or(kron(a,b)<>[3 6;4 8]) then bugmes();quit;end
-if or(kron(a+0,b)<>[3 6;4 8]) then bugmes();quit;end
-if or(kron(a,b+0)<>[3 6;4 8]) then bugmes();quit;end
-if or(kron(a+0,b+0)<>[3 6;4 8]) then bugmes();quit;end
-if kron([],b)<>[] then bugmes();quit;end
-if kron([],b+0)<>[] then bugmes();quit;end
+assert_checkequal(kron(a,b), [3 6;4 8]);
+assert_checkequal(kron(a+0,b), [3 6;4 8]);
+assert_checkequal(kron(a,b+0), [3 6;4 8]);
+assert_checkequal(kron(a+0,b+0), [3 6;4 8]);
+assert_checkequal(kron([], b), []);
+assert_checkequal(kron([], b+0), []);
 a=[];
-if kron(a,b)<>[] then bugmes();quit;end
-if kron(a,b+0)<>[] then bugmes();quit;end
-a=[1 2];b=[]
- b  =
-     []
-if kron(a,b)<>[] then bugmes();quit;end
-if kron(a+0,b)<>[] then bugmes();quit;end
-if kron(a,[])<>[] then bugmes();quit;end
-if kron(a+0,[])<>[] then bugmes();quit;end
+assert_checkequal(kron(a,b), []);
+assert_checkequal(kron(a,b+0), []);
+a=[1 2];b=[];
+assert_checkequal(kron(a,b), []);
+assert_checkequal(kron(a+0,b), []);
+assert_checkequal(kron(a,[]), []);
+assert_checkequal(kron(a+0, []), []);
 a=[];b=[];
-if kron(a,b)<>[] then bugmes();quit;end
-if kron(a,[])<>[] then bugmes();quit;end
-if kron([],b)<>[] then bugmes();quit;end
-if kron([],[])<>[] then bugmes();quit;end
+assert_checkequal(kron(a,b), []);
+assert_checkequal(kron(a,[]), []);
+assert_checkequal(kron([], b), []);
+assert_checkequal(kron([], []), []);
 //matrix
 a=[1 2 3 4 5 6];
 n=1;m=6;
-if or(matrix(a,1,6)<>a) then bugmes();quit;end
-if or(matrix(a,n,6)<>a) then bugmes();quit;end
-if or(matrix(a,1,m)<>a) then bugmes();quit;end
-if or(matrix(a,n,m)<>a) then bugmes();quit;end
-if or(matrix(a+0,1,6)<>a) then bugmes();quit;end
-if or(matrix(a+0,n,6)<>a) then bugmes();quit;end
-if or(matrix(a+0,1,m)<>a) then bugmes();quit;end
-if or(matrix(a+0,n,m)<>a) then bugmes();quit;end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+0,1,6), a);
+assert_checkequal(matrix(a+0,n,6), a);
+assert_checkequal(matrix(a+0,1,m), a);
+assert_checkequal(matrix(a+0,n,m), a);
 n=3;m=2; b=[1 4;2 5;3 6];
-if or(matrix(a,3,2)<>b) then bugmes();quit;end
-if or(matrix(a,n,2)<>b) then bugmes();quit;end
-if or(matrix(a,3,m)<>b) then bugmes();quit;end
-if or(matrix(a,n,m)<>b) then bugmes();quit;end
-if or(matrix(a+0,3,2)<>b) then bugmes();quit;end
-if or(matrix(a+0,n,2)<>b) then bugmes();quit;end
-if or(matrix(a+0,3,m)<>b) then bugmes();quit;end
-if or(matrix(a+0,n,m)<>b) then bugmes();quit;end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+0,3,2), b);
+assert_checkequal(matrix(a+0,n,2), b);
+assert_checkequal(matrix(a+0,3,m), b);
+assert_checkequal(matrix(a+0,n,m), b);
 a=[1+%i 2 3 4 5 6];
 n=1;m=6;
-if or(matrix(a,1,6)<>a) then bugmes();quit;end
-if or(matrix(a,n,6)<>a) then bugmes();quit;end
-if or(matrix(a,1,m)<>a) then bugmes();quit;end
-if or(matrix(a,n,m)<>a) then bugmes();quit;end
-if or(matrix(a+0,1,6)<>a) then bugmes();quit;end
-if or(matrix(a+0,n,6)<>a) then bugmes();quit;end
-if or(matrix(a+0,1,m)<>a) then bugmes();quit;end
-if or(matrix(a+0,n,m)<>a) then bugmes();quit;end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+0,1,6), a);
+assert_checkequal(matrix(a+0,n,6), a);
+assert_checkequal(matrix(a+0,1,m), a);
+assert_checkequal(matrix(a+0,n,m), a);
 n=3;m=2; b=[1+%i 4;2 5;3 6];
-if or(matrix(a,3,2)<>b) then bugmes();quit;end
-if or(matrix(a,n,2)<>b) then bugmes();quit;end
-if or(matrix(a,3,m)<>b) then bugmes();quit;end
-if or(matrix(a,n,m)<>b) then bugmes();quit;end
-if or(matrix(a+0,3,2)<>b) then bugmes();quit;end
-if or(matrix(a+0,n,2)<>b) then bugmes();quit;end
-if or(matrix(a+0,3,m)<>b) then bugmes();quit;end
-if or(matrix(a+0,n,m)<>b) then bugmes();quit;end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+0,3,2), b);
+assert_checkequal(matrix(a+0,n,2), b);
+assert_checkequal(matrix(a+0,3,m), b);
+assert_checkequal(matrix(a+0,n,m), b);
 a=string([1 2 3 4 5 6]);n=1;m=6;
-if or(matrix(a,1,6)<>a) then bugmes();quit;end
-if or(matrix(a,n,6)<>a) then bugmes();quit;end
-if or(matrix(a,1,m)<>a) then bugmes();quit;end
-if or(matrix(a,n,m)<>a) then bugmes();quit;end
-if or(matrix(a+a,1,6)<>a+a) then bugmes();quit;end
-if or(matrix(a+a,n,6)<>a+a) then bugmes();quit;end
-if or(matrix(a+a,1,m)<>a+a) then bugmes();quit;end
-if or(matrix(a+a,n,m)<>a+a) then bugmes();quit;end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+a,1,6), a+a);
+assert_checkequal(matrix(a+a,n,6), a+a);
+assert_checkequal(matrix(a+a,1,m), a+a);
+assert_checkequal(matrix(a+a,n,m), a+a);
 n=3;m=2; b=string([1 4;2 5;3 6]);
-if or(matrix(a,3,2)<>b) then bugmes();quit;end
-if or(matrix(a,n,2)<>b) then bugmes();quit;end
-if or(matrix(a,3,m)<>b) then bugmes();quit;end
-if or(matrix(a,n,m)<>b) then bugmes();quit;end
-if or(matrix(a+a,3,2)<>b+b) then bugmes();quit;end
-if or(matrix(a+a,n,2)<>b+b) then bugmes();quit;end
-if or(matrix(a+a,3,m)<>b+b) then bugmes();quit;end
-if or(matrix(a+a,n,m)<>b+b) then bugmes();quit;end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+a,3,2), b+b);
+assert_checkequal(matrix(a+a,n,2), b+b);
+assert_checkequal(matrix(a+a,3,m), b+b);
+assert_checkequal(matrix(a+a,n,m), b+b);
 a=[1 2 3 4 5 6]+%s;
 n=1;m=6;
-if or(matrix(a,1,6)<>a) then bugmes();quit;end
-if or(matrix(a,n,6)<>a) then bugmes();quit;end
-if or(matrix(a,1,m)<>a) then bugmes();quit;end
-if or(matrix(a,n,m)<>a) then bugmes();quit;end
-if or(matrix(a+0,1,6)<>a) then bugmes();quit;end
-if or(matrix(a+0,n,6)<>a) then bugmes();quit;end
-if or(matrix(a+0,1,m)<>a) then bugmes();quit;end
-if or(matrix(a+0,n,m)<>a) then bugmes();quit;end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+0,1,6), a);
+assert_checkequal(matrix(a+0,n,6), a);
+assert_checkequal(matrix(a+0,1,m), a);
+assert_checkequal(matrix(a+0,n,m), a);
 n=3;m=2; b=[1 4;2 5;3 6]+%s;
-if or(matrix(a,3,2)<>b) then bugmes();quit;end
-if or(matrix(a,n,2)<>b) then bugmes();quit;end
-if or(matrix(a,3,m)<>b) then bugmes();quit;end
-if or(matrix(a,n,m)<>b) then bugmes();quit;end
-if or(matrix(a+0,3,2)<>b) then bugmes();quit;end
-if or(matrix(a+0,n,2)<>b) then bugmes();quit;end
-if or(matrix(a+0,3,m)<>b) then bugmes();quit;end
-if or(matrix(a+0,n,m)<>b) then bugmes();quit;end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+0,3,2), b);
+assert_checkequal(matrix(a+0,n,2), b);
+assert_checkequal(matrix(a+0,3,m), b);
+assert_checkequal(matrix(a+0,n,m), b);
 a=[1+%i 2 3 4 5 6]+%s;
 n=1;m=6;
-if or(matrix(a,1,6)<>a) then bugmes();quit;end
-if or(matrix(a,n,6)<>a) then bugmes();quit;end
-if or(matrix(a,1,m)<>a) then bugmes();quit;end
-if or(matrix(a,n,m)<>a) then bugmes();quit;end
-if or(matrix(a+0,1,6)<>a) then bugmes();quit;end
-if or(matrix(a+0,n,6)<>a) then bugmes();quit;end
-if or(matrix(a+0,1,m)<>a) then bugmes();quit;end
-if or(matrix(a+0,n,m)<>a) then bugmes();quit;end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+0,1,6), a);
+assert_checkequal(matrix(a+0,n,6), a);
+assert_checkequal(matrix(a+0,1,m), a);
+assert_checkequal(matrix(a+0,n,m), a);
 n=3;m=2; b=[1+%i 4;2 5;3 6]+%s;
-if or(matrix(a,3,2)<>b) then bugmes();quit;end
-if or(matrix(a,n,2)<>b) then bugmes();quit;end
-if or(matrix(a,3,m)<>b) then bugmes();quit;end
-if or(matrix(a,n,m)<>b) then bugmes();quit;end
-if or(matrix(a+0,3,2)<>b) then bugmes();quit;end
-if or(matrix(a+0,n,2)<>b) then bugmes();quit;end
-if or(matrix(a+0,3,m)<>b) then bugmes();quit;end
-if or(matrix(a+0,n,m)<>b) then bugmes();quit;end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+0,3,2), b);
+assert_checkequal(matrix(a+0,n,2), b);
+assert_checkequal(matrix(a+0,3,m), b);
+assert_checkequal(matrix(a+0,n,m), b);
 //clean
 a=[1 1.d-12 1.d-5 2d8];
 b=[1 0 0 2d8];
-if or(clean(a)<>b) then bugmes();quit;end
-if or(clean(a+0)<>b) then bugmes();quit;end
+assert_checkequal(clean(a), b);
+assert_checkequal(clean(a+0), b);
 epsa=1.d-10;
-if or(clean(a,epsa)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa)<>b) then bugmes();quit;end
-if or(clean(a,epsa+0)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa+0)<>b) then bugmes();quit;end
+assert_checkequal(clean(a,epsa), b);
+assert_checkequal(clean(a+0, epsa), b);
+assert_checkequal(clean(a, epsa+0), b);
+assert_checkequal(clean(a+0, epsa+0), b);
 epsr=1.d-5;b=[0 0 0 2d8];
-if or(clean(a,epsa,epsr)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa,epsr)<>b) then bugmes();quit;end
-if or(clean(a,epsa+0,epsr)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa,epsr+0)<>b) then bugmes();quit;end
-if or(clean(a,epsa+0,epsr)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa,epsr+0)<>b) then bugmes();quit;end
-if or(clean(a,epsa+0,epsr)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa+0,epsr+0)<>b) then bugmes();quit;end
+assert_checkequal(clean(a,epsa,epsr), b);
+assert_checkequal(clean(a+0,epsa,epsr), b);
+assert_checkequal(clean(a,epsa+0,epsr), b);
+assert_checkequal(clean(a,epsa,epsr+0), b);
+assert_checkequal(clean(a+0,epsa+0,epsr), b);
+assert_checkequal(clean(a+0,epsa,epsr+0), b);
+assert_checkequal(clean(a,epsa+0,epsr+0), b);
+assert_checkequal(clean(a+0,epsa+0,epsr+0), b);
 a=[1+%i 1.d-12 1.d-5 2d8];
 b=[1+%i 0 0 2d8];
-if or(clean(a)<>b) then bugmes();quit;end
-if or(clean(a+0)<>b) then bugmes();quit;end
+assert_checkequal(clean(a), b);
+assert_checkequal(clean(a+0), b);
 epsa=1.d-10;
-if or(clean(a,epsa)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa)<>b) then bugmes();quit;end
-if or(clean(a,epsa+0)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa+0)<>b) then bugmes();quit;end
+assert_checkequal(clean(a,epsa), b);
+assert_checkequal(clean(a+0,epsa), b);
+assert_checkequal(clean(a,epsa+0), b);
+assert_checkequal(clean(a+0,epsa+0), b);
 epsr=1.d-5;b=[0+0*%i 0 0 2d8];
-if or(clean(a,epsa,epsr)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa,epsr)<>b) then bugmes();quit;end
-if or(clean(a,epsa+0,epsr)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa,epsr+0)<>b) then bugmes();quit;end
-if or(clean(a,epsa+0,epsr)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa,epsr+0)<>b) then bugmes();quit;end
-if or(clean(a,epsa+0,epsr)<>b) then bugmes();quit;end
-if or(clean(a+0,epsa+0,epsr+0)<>b) then bugmes();quit;end
+assert_checkequal(clean(a,epsa,epsr), b);
+assert_checkequal(clean(a+0,epsa,epsr), b);
+assert_checkequal(clean(a,epsa+0,epsr), b);
+assert_checkequal(clean(a,epsa,epsr+0), b);
+assert_checkequal(clean(a+0,epsa+0,epsr), b);
+assert_checkequal(clean(a+0,epsa,epsr+0), b);
+assert_checkequal(clean(a,epsa+0,epsr+0), b);
+assert_checkequal(clean(a+0,epsa+0,epsr+0), b);
index b40be34..33af62f 100644 (file)
@@ -1,6 +1,7 @@
 // =============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) ????-2008 - INRIA
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 //test of matelm functions
 //size
 a=[1 2;3 4];
-if or(size(a)<>[2 2]) then pause,end
-if or(size(a+0)<>[2 2]) then pause,end
-if size(a,'*')<>4 then pause,end
-if size(a+0,'*')<>4 then pause,end
-[m,n]=size(a);if or([m,n]<>[2 2]) then pause,end
+assert_checkequal(size(a), [2 2]);
+assert_checkequal(size(a+0), [2 2]);
+assert_checkequal(size(a, "*"), 4);
+assert_checkequal(size(a+0, "*"), 4);
+[m,n]=size(a); assert_checkequal([m,n], [2 2]);
 
 a=[1;2];
-if size(a,1)<>2 then pause,end
-if size(a+0,1)<>2 then pause,end
-if size(a,'r')<>2 then pause,end
-if size(a+0,'r')<>2 then pause,end
-if size(a,2)<>1 then pause,end
-if size(a+0,2)<>1 then pause,end
-if size(a,'c')<>1 then pause,end
-if size(a+0,'c')<>1 then pause,end
-[m,n]=size(a);if or([m,n]<>[2 1]) then pause,end
+assert_checkequal(size(a, 1), 2);
+assert_checkequal(size(a+0, 1), 2);
+assert_checkequal(size(a, "r"), 2);
+assert_checkequal(size(a+0, "r"), 2);
+assert_checkequal(size(a, 2), 1);
+assert_checkequal(size(a+0, 2), 1);
+assert_checkequal(size(a, "c"), 1);
+assert_checkequal(size(a+0, "c"), 1);
+[m,n]=size(a); assert_checkequal([m,n], [2 1]);
 
 a=string([1 2;3 4]);
-if or(size(a)<>[2 2]) then pause,end
-if or(size(a+a)<>[2 2]) then pause,end
-if size(a,'*')<>4 then pause,end
-if size(a+a,'*')<>4 then pause,end
-[m,n]=size(a);if or([m,n]<>[2 2]) then pause,end
+assert_checkequal(size(a), [2 2]);
+assert_checkequal(size(a+a), [2 2]);
+assert_checkequal(size(a, "*"), 4);
+assert_checkequal(size(a+a, "*"), 4);
+[m,n]=size(a); assert_checkequal([m,n], [2 2]);
 
 a=string([1;2]);
-if size(a,1)<>2 then pause,end
-if size(a+a,1)<>2 then pause,end
-if size(a,'r')<>2 then pause,end
-if size(a+a,'r')<>2 then pause,end
-if size(a,2)<>1 then pause,end
-if size(a+a,2)<>1 then pause,end
-if size(a,'c')<>1 then pause,end
-if size(a+a,'c')<>1 then pause,end
-[m,n]=size(a);if or([m,n]<>[2 1]) then pause,end
+assert_checkequal(size(a, 1), 2);
+assert_checkequal(size(a+a, 1), 2);
+assert_checkequal(size(a, "r"), 2);
+assert_checkequal(size(a+a, "r"), 2);
+assert_checkequal(size(a, 2), 1);
+assert_checkequal(size(a+a, 2), 1);
+assert_checkequal(size(a, "c"), 1);
+assert_checkequal(size(a+a, "c"), 1);
+[m,n]=size(a); assert_checkequal([m,n], [2 1]);
 
 a=[1 2;3 4]+%s;
-if or(size(a)<>[2 2]) then pause,end
-if or(size(a+0)<>[2 2]) then pause,end
-if size(a,'*')<>4 then pause,end
-if size(a+0,'*')<>4 then pause,end
-[m,n]=size(a);if or([m,n]<>[2 2]) then pause,end
+assert_checkequal(size(a), [2 2]);
+assert_checkequal(size(a+0), [2 2]);
+assert_checkequal(size(a, "*"), 4);
+assert_checkequal(size(a+0, "*"), 4);
+[m,n]=size(a); assert_checkequal([m,n], [2 2]);
 
 a=[1;2]+%s;
-if size(a,1)<>2 then pause,end
-if size(a+0,1)<>2 then pause,end
-if size(a,'r')<>2 then pause,end
-if size(a+0,'r')<>2 then pause,end
-if size(a,2)<>1 then pause,end
-if size(a+0,2)<>1 then pause,end
-if size(a,'c')<>1 then pause,end
-if size(a+0,'c')<>1 then pause,end
-[m,n]=size(a);if or([m,n]<>[2 1]) then pause,end
+assert_checkequal(size(a, 1), 2);
+assert_checkequal(size(a+0, 1), 2);
+assert_checkequal(size(a, "r"), 2);
+assert_checkequal(size(a+0, "r"), 2);
+assert_checkequal(size(a, 2), 1);
+assert_checkequal(size(a+0, 2), 1);
+assert_checkequal(size(a, "c"), 1);
+assert_checkequal(size(a+0, "c"), 1);
+[m,n]=size(a); assert_checkequal([m,n], [2 1]);
 
 a=[1 2;3 4]==1;
-if or(size(a)<>[2 2]) then pause,end
-if or(size(a&a)<>[2 2]) then pause,end
-if size(a,'*')<>4 then pause,end
-if size(a|a,'*')<>4 then pause,end
-[m,n]=size(a);if or([m,n]<>[2 2]) then pause,end
+assert_checkequal(size(a), [2 2]);
+assert_checkequal(size(a&a), [2 2]);
+assert_checkequal(size(a, "*"), 4);
+assert_checkequal(size(a|a, "*"), 4);
+[m,n]=size(a); assert_checkequal([m,n], [2 2]);
 
 a=[1;2]==1;
-if size(a,1)<>2 then pause,end
-if size(a|a,1)<>2 then pause,end
-if size(a,'r')<>2 then pause,end
-if size(a|a,'r')<>2 then pause,end
-if size(a,2)<>1 then pause,end
-if size(a|a,2)<>1 then pause,end
-if size(a,'c')<>1 then pause,end
-if size(a|a,'c')<>1 then pause,end
-[m,n]=size(a);if or([m,n]<>[2 1]) then pause,end
+assert_checkequal(size(a, 1), 2);
+assert_checkequal(size(a|a, 1), 2);
+assert_checkequal(size(a, "r"), 2);
+assert_checkequal(size(a|a, "r"), 2);
+assert_checkequal(size(a, 2), 1);
+assert_checkequal(size(a|a, 2), 1);
+assert_checkequal(size(a, "c"), 1);
+assert_checkequal(size(a|a, "c"), 1);
+[m,n]=size(a); assert_checkequal([m n], [2 1]);
 
 //eye
-if or(eye(2,2)<>[1 0;0 1]) then pause,end
-if or(eye(2,1)<>[1;0]) then pause,end
+assert_checkequal(eye(2,2), [1 0; 0 1]);
+assert_checkequal(eye(2,1), [1;0]);
+
 n=2;
-if or(eye(n,2)<>[1 0;0 1]) then pause,end
-if or(eye(2,n)<>[1 0;0 1]) then pause,end
-if or(eye(n,n)<>[1 0;0 1]) then pause,end
-if or(size(eye())<>[-1 -1]) then pause,end
+assert_checkequal(eye(2,n), [1 0; 0 1]);
+assert_checkequal(eye(n, 2), [1 0; 0 1]);
+assert_checkequal(eye(n,n), [1 0;0 1]);
+assert_checkequal(size(eye()), [-1 -1]);
+
 a=[1 2;3 4];
-if or(eye(a)<>[1 0;0 1]) then pause,end
-if or(eye(a+0)<>[1 0;0 1]) then pause,end
+assert_checkequal(eye(a), [1 0; 0 1]);
+assert_checkequal(eye(a+0), [1 0; 0 1]);
+
 a=[1 2;3 4]+%s;
-if or(eye(a)<>[1 0;0 1]) then pause,end
-if or(eye(a+0)<>[1 0;0 1]) then pause,end
+assert_checkequal(eye(a), [1 0;0 1]);
+assert_checkequal(eye(a+0), [1 0; 0 1]);
+
 a=string([1 2;3 4]);
-if or(eye(a)<>[1 0;0 1]) then pause,end
-if or(eye(a+a)<>[1 0;0 1]) then pause,end
+assert_checkequal(eye(a), [1 0;0 1]);
+assert_checkequal(eye(a+a), [1 0; 0 1]);
+
 a=[1 2;3 4]>1;
-if or(eye(a)<>[1 0;0 1]) then pause,end
-if or(eye(a&a)<>[1 0;0 1]) then pause,end
+assert_checkequal(eye(a), [1 0;0 1]);
+assert_checkequal(eye(a&a), [1 0; 0 1]);
+
+assert_checkequal(eye([]), []);
 
-if eye([])<>[] then pause,end
 //ones
-if or(ones(2,2)<>[1 1;1 1]) then pause,end
-if or(ones(2,1)<>[1;1]) then pause,end
+assert_checkequal(ones(2, 2), [1 1; 1 1]);
+assert_checkequal(ones(2, 1), [1; 1]);
+
 n=2;
-if or(ones(n,2)<>[1 1;1 1]) then pause,end
-if or(ones(2,n)<>[1 1;1 1]) then pause,end
-if or(ones(n,n)<>[1 1;1 1]) then pause,end
-if ones(1)<>1 then pause,end
-if ones([])<>[] then pause,end
+assert_checkequal(ones(n,2), [1 1; 1 1]);
+assert_checkequal(ones(2,n), [1 1; 1 1]);
+assert_checkequal(ones(n,n), [1 1; 1 1]);
+assert_checkequal(ones(1), 1);
+assert_checkequal(ones([]), []);
+
 a=[1 2;3 4];
-if or(ones(a)<>[1 1;1 1]) then pause,end
-if or(ones(a+0)<>[1 1;1 1]) then pause,end
+assert_checkequal(ones(a), [1 1; 1 1]);
+assert_checkequal(ones(a+0), [1 1; 1 1]);
+
 a=[1 2;3 4]+%s;
-if or(ones(a)<>[1 1;1 1]) then pause,end
-if or(ones(a+0)<>[1 1;1 1]) then pause,end
+assert_checkequal(ones(a), [1 1; 1 1]);
+assert_checkequal(ones(a+0), [1 1; 1 1]);
+
 a=string([1 2;3 4]);
-if or(ones(a)<>[1 1;1 1]) then pause,end
-if or(ones(a+a)<>[1 1;1 1]) then pause,end
+assert_checkequal(ones(a), [1 1; 1 1]);
+assert_checkequal(ones(a+a), [1 1; 1 1]);
+
 a=[1 2;3 4]>1;
-if or(ones(a)<>[1 1;1 1]) then pause,end
-if or(ones(a&a)<>[1 1;1 1]) then pause,end
+assert_checkequal(ones(a), [1 1; 1 1]);
+assert_checkequal(ones(a&0), [1 1; 1 1]);
+
 //rand
-if or(size(rand(2,2))<>[2 2]) then pause,end
-if or(size(rand(2,1))<>[2 1]) then pause,end
+assert_checkequal(size(rand(2,2)), [2 2]);
+assert_checkequal(size(rand(2,1)), [2 1]);
+
 n=2;
-if or(size(rand(n,2))<>[n 2]) then pause,end
-if or(size(rand(2,n))<>[2 n]) then pause,end
-if or(size(rand(n,n))<>[n n]) then pause,end
+assert_checkequal(size(rand(n,2)), [n 2]);
+assert_checkequal(size(rand(2,n)), [2 n]);
+assert_checkequal(size(rand(n,n)), [n n]);
+
 //if or(size(rand())<>[1 1]) then pause,end
-if rand([])<>[] then pause,end
+assert_checkequal(rand([]), []);
+
 a=[1 2;3 4];
-if or(size(rand(a))<>size(a)) then pause,end
-if or(size(rand(a+0))<>size(a)) then pause,end
-//a=[1 2;3 4]+%s;
-//if or(size(rand(a))<>size(a)) then pause,end
-//if or(size(rand(a+0))<>size(a)) then pause,end
+assert_checkequal(size(rand(a)), size(a));
+assert_checkequal(size(rand(a+0)), size(a));
+
+a=[1 2;3 4]+%s;
+assert_checkequal(size(rand(a)), size(a));
+assert_checkequal(size(rand(a+0)), size(a));
+
 //a=string([1 2;3 4]);
 //if or(size(rand(a))<>size(a)) then pause,end
 //if or(size(rand(a+a))<>size(a)) then pause,end
-//a=[1 2;3 4]>1;
-//if or(size(rand(a))<>size(a)) then pause,end
-//if or(size(rand(a+a))<>size(a)) then pause,end
-rand('seed',1);if rand('seed')<>1 then pause,end
-a=2;rand('seed',a);if rand('seed')<>a then pause,end
+a=[1 2;3 4]>1;
+assert_checkequal(size(rand(a)), size(a));
+assert_checkequal(size(rand(a+a)), size(a));
+
+rand("seed",1); assert_checkequal(rand("seed"), 1);
+a=2;rand("seed",a); assert_checkequal(rand("seed"), a);
 
 //diag
-if or(diag([1 2 3])<>[1 0 0;0 2 0;0 0 3]) then pause,end
+assert_checkequal(diag([1 2 3]), [1 0 0;0 2 0;0 0 3]);
 a=[1 2 3];
-if or(diag(a)<>[1 0 0;0 2 0;0 0 3]) then pause,end
-if or(diag([1 %i 2])<>[1 0 0;0 %i 0;0 0 2]) then pause,end
+assert_checkequal(diag(a), [1 0 0;0 2 0;0 0 3]);
+assert_checkequal(diag([1 %i 2]), [1 0 0;0 %i 0;0 0 2]);
 a=[1 %i 2 ];
-if or(diag(a)<>[1 0 0;0 %i 0;0 0 2]) then pause,end
+assert_checkequal(diag(a), [1 0 0;0 %i 0;0 0 2]);
 a=[1 2 3 4;5 6 7 8];
-if or(diag(a)<>[1;6]) then pause,end
-if or(diag(a+0)<>[1;6]) then pause,end
-if or(diag(a,1)<>[2;7]) then pause,end
-if or(diag(a+0,1)<>[2;7]) then pause,end
-if or(diag(a,-1)<>[5]) then pause,end
-if or(diag(a+0,-1)<>[5]) then pause,end
-if diag(a,4)<>[] then pause,end
-a(1,1)=%i
-if or(diag(a)<>[%i;6]) then pause,end
-if or(diag(a+0)<>[%i;6]) then pause,end
-if or(diag(a,1)<>[2;7]) then pause,end
-if or(diag(a+0,1)<>[2;7]) then pause,end
-if or(diag(a,-1)<>[5]) then pause,end
-if or(diag(a+0,-1)<>[5]) then pause,end
-if diag(a,4)<>[] then pause,end
-
-if diag([])<>[] then pause,end
-if diag([],1)<>[] then pause,end
-if diag([],-1)<>[] then pause,end
+assert_checkequal(diag(a), [1;6]);
+assert_checkequal(diag(a+0), [1;6]);
+assert_checkequal(diag(a,1), [2;7]);
+assert_checkequal(diag(a+0,1), [2;7]);
+assert_checkequal(diag(a,-1), 5);
+assert_checkequal(diag(a+0, -1), 5);
+assert_checkequal(diag(a,4), []);
+
+a(1,1)=%i;
+assert_checkequal(diag(a), [%i; 6]);
+assert_checkequal(diag(a+0), [%i;6]);
+assert_checkequal(diag(a, 1), [2;7]+0*%i);
+assert_checkequal(diag(a+0, 1), [2;7]+0*%i);
+assert_checkequal(diag(a, -1), 5+0*%i);
+assert_checkequal(diag(a+0, -1), 5+0*%i);
+assert_checkequal(diag(a, 4), []);
+
+assert_checkequal(diag([]), []);
+assert_checkequal(diag([], 1), []);
+assert_checkequal(diag([], -1), []);
+
 a=[];
-if diag(a)<>[] then pause,end
-if diag(a,1)<>[] then pause,end
-if diag(a,-1)<>[] then pause,end
+assert_checkequal(diag(a), []);
+assert_checkequal(diag(a, 1), []);
+assert_checkequal(diag(a, -1), []);
 
 // triu
 a=[1 2 3 4;5 6 7 8];
-if or(triu(a)<>[1 2 3 4;0 6 7 8]) then pause,end
-if or(triu(a+0)<>[1 2 3 4;0 6 7 8]) then pause,end
-if or(triu(a,1)<>[0 2 3 4;0 0 7 8]) then pause,end
-if or(triu(a+0,1)<>[0 2 3 4;0 0 7 8]) then pause,end
-if or(triu(a,-1)<>a) then pause,end
-if or(triu(a+0,-1)<>a) then pause,end
-if or(triu(a,4)<>0*a) then pause,end
+assert_checkequal(triu(a), [1 2 3 4;0 6 7 8]);
+assert_checkequal(triu(a+0), [1 2 3 4;0 6 7 8]);
+assert_checkequal(triu(a, 1), [0 2 3 4; 0 0 7 8]);
+assert_checkequal(triu(a+0, 1), [0 2 3 4; 0 0 7 8]);
+assert_checkequal(triu(a, -1), a);
+assert_checkequal(triu(a+0, -1), a);
+assert_checkequal(triu(a, 4), 0*a);
+
 a(1,1)=%i;
-if or(triu(a)<>[%i 2 3 4;0 6 7 8]) then pause,end
-if or(triu(a+0)<>[%i 2 3 4;0 6 7 8]) then pause,end
-if or(triu(a,1)<>[0 2 3 4;0 0 7 8]) then pause,end
-if or(triu(a+0,1)<>[0 2 3 4;0 0 7 8]) then pause,end
-if or(triu(a,-1)<>a) then pause,end
-if or(triu(a+0,-1)<>a) then pause,end
-if or(triu(a,4)<>0*a) then pause,end
-
-if triu([])<>[] then pause,end
-if triu([],1)<>[] then pause,end
-if triu([],-1)<>[] then pause,end
+assert_checkequal(triu(a), [%i 2 3 4;0 6 7 8]);
+assert_checkequal(triu(a+0), [%i 2 3 4;0 6 7 8]);
+assert_checkequal(triu(a, 1), [0 2 3 4;0 0 7 8]+0*%i);
+assert_checkequal(triu(a+0, 1), [0 2 3 4;0 0 7 8]+0*%i);
+assert_checkequal(triu(a, -1), a);
+assert_checkequal(triu(a+0, -1), a);
+assert_checkequal(triu(a,4), 0*a);
+
+assert_checkequal(triu([]), []);
+assert_checkequal(triu([], 1), []);
+assert_checkequal(triu([], -1), []);
+
 a=[];
-if triu(a)<>[] then pause,end
-if triu(a,1)<>[] then pause,end
-if triu(a,-1)<>[] then pause,end
+assert_checkequal(triu(a), []);
+assert_checkequal(triu(a, 1), []);
+assert_checkequal(triu(a, -1), []);
 
 //tril
 a=[1 2 3 4;5 6 7 8];
-if or(tril(a)<>[1 0 0 0;5 6 0 0]) then pause,end
-if or(tril(a+0)<>[1 0 0 0;5 6 0 0]) then pause,end
-if or(tril(a,1)<>[1 2 0 0;5 6  7 0]) then pause,end
-if or(tril(a+0,1)<>[1 2 0 0;5 6  7 0]) then pause,end
-if or(tril(a,4)<>a) then pause,end
-if or(tril(a+0,4)<>a) then pause,end
-if or(tril(a,-3)<>0*a) then pause,end
+assert_checkequal(tril(a), [1 0 0 0;5 6 0 0]);
+assert_checkequal(tril(a+0), [1 0 0 0;5 6 0 0]);
+assert_checkequal(tril(a, 1), [1 2 0 0;5 6  7 0]);
+assert_checkequal(tril(a+0, 1), [1 2 0 0;5 6  7 0]);
+assert_checkequal(tril(a, 4), a);
+assert_checkequal(tril(a+0, 4), a);
+assert_checkequal(tril(a, -3), 0*a);
+
 a(1,1)=%i;
-if or(tril(a)<>[%i 0 0 0;5 6 0 0]) then pause,end
-if or(tril(a+0)<>[%i 0 0 0;5 6 0 0]) then pause,end
-if or(tril(a,1)<>[%i 2 0 0;5 6  7 0]) then pause,end
-if or(tril(a+0,1)<>[%i 2 0 0;5 6  7 0]) then pause,end
-if or(tril(a,4)<>a) then pause,end
-if or(tril(a+0,4)<>a) then pause,end
-if or(tril(a,-3)<>0*a) then pause,end
-
-if tril([])<>[] then pause,end
-if tril([],1)<>[] then pause,end
-if tril([],-1)<>[] then pause,end
-a=[];
-if tril(a)<>[] then pause,end
-if tril(a,1)<>[] then pause,end
-if tril(a,-1)<>[] then pause,end
+assert_checkequal(tril(a), [%i 0 0 0; 5 6 0 0]);
+assert_checkequal(tril(a+0), [%i 0 0 0; 5 6 0 0]);
+assert_checkequal(tril(a, 1), [%i 2 0 0; 5 6 7 0]);
+assert_checkequal(tril(a+0, 1), [%i 2 0 0;5 6  7 0]);
+assert_checkequal(tril(a, 4), a);
+assert_checkequal(tril(a+0, 4), a);
+assert_checkequal(tril(a, -3), 0*a);
+
+assert_checkequal(tril([]), []);
+assert_checkequal(tril([], 1), []);
+assert_checkequal(tril([], -1), []);
 
+a=[];
+assert_checkequal(tril(a), []);
+assert_checkequal(tril(a, 1), []);
+assert_checkequal(tril(a, -1), []);
 
 //abs
 a=[1 2;-3 4;5 -6];
-if or(abs(a)<>[1 2;3 4;5 6]) then pause,end
-if or(abs(a+0)<>[1 2;3 4;5 6]) then pause,end
-if abs([])<>[] then pause,end
-a=[];if abs(a)<>[] then pause,end
+assert_checkequal(abs(a), [1 2;3 4;5 6]);
+assert_checkequal(abs(a+0), [1 2;3 4;5 6]);
+assert_checkequal(abs([]), []);
+
+a=[]; assert_checkequal(abs(a), []);
 a=[1+%i 2;-3 4;5 -6];
-if or(abs(a)<>[sqrt(2) 2;3 4;5 6]) then pause,end
-if or(abs(a+0)<>[sqrt(2) 2;3 4;5 6]) then pause,end
+assert_checkequal(abs(a), [sqrt(2) 2;3 4;5 6]);
+assert_checkequal(abs(a+0), [sqrt(2) 2;3 4;5 6]);
 
 a=[1 2;-3 4;5 -6]+%s;
-if or(abs(a)<>[1 2;3 4;5 6]+%s) then pause,end
-if or(abs(a+0)<>[1 2;3 4;5 6]+%s) then pause,end
+assert_checkequal(abs(a), [1 2;3 4;5 6]+%s);
+assert_checkequal(abs(a+0), [1 2;3 4;5 6]+%s);
+
 a=[1+%i 2;-3 4;5 -6]+%s;
-if or(abs(a)<>[sqrt(2) 2;3 4;5 6]+%s) then pause,end
-if or(abs(a+0)<>[sqrt(2) 2;3 4;5 6]+%s) then pause,end
+assert_checkequal(abs(a), [sqrt(2) 2;3 4;5 6]+%s);
+assert_checkequal(abs(a+0), [sqrt(2) 2;3 4;5 6]+%s);
 
 a=sparse([1 2;-3 4;5 -6]);
-if or(full(abs(a))<>[1 2;3 4;5 6]) then pause,end
-if or(full(abs(a+a))<>2*[1 2;3 4;5 6]) then pause,end
+assert_checkequal(full(abs(a)), [1 2;3 4;5 6]);
+assert_checkequal(full(abs(a+a)), 2.*[1 2;3 4;5 6]);
+
 a=sparse([1+%i 2;-3 4;5 -6]);
-if or(full(abs(a))<>[sqrt(2) 2;3 4;5 6]) then pause,end
-if or(full(abs(a+a))<>2*[sqrt(2) 2;3 4;5 6]) then pause,end
+assert_checkequal(full(abs(a)), [sqrt(2) 2;3 4;5 6]);
+assert_checkequal(full(abs(a+a)), 2.*[sqrt(2) 2;3 4;5 6]);
 
 //real
 a=[1 2;-3 4;5 -6];
-if or(real(a)<>a) then pause,end
-if or(real(a+0)<>a) then pause,end
-if real([])<>[] then pause,end
-a=[];if real(a)<>[] then pause,end
+assert_checkequal(real(a), a);
+assert_checkequal(real(a+0), a);
+assert_checkequal(real([]), []);
+a=[]; assert_checkequal(real(a), []);
+
 a=[1+%i 2;-3 4;5 -6];
-if or(real(a)<>[1 2;-3 4;5 -6]) then pause,end
-if or(real(a+0)<>[1 2;-3 4;5 -6]) then pause,end
+assert_checkequal(real(a), [1 2;-3 4;5 -6]);
+assert_checkequal(real(a+0), [1 2;-3 4;5 -6]);
 
 a=[1 2;-3 4;5 -6]+%s;
-if or(real(a)<>a) then pause,end
-if or(real(a+0)<>a) then pause,end
+assert_checkequal(real(a), a);
+assert_checkequal(real(a+0), a);
+
 a=[1+%i 2;-3 4;5 -6]+%s;
-if or(real(a)<>[1 2;-3 4;5 -6]+%s) then pause,end
-if or(real(a+0)<>[1 2;-3 4;5 -6]+%s) then pause,end
+assert_checkequal(real(a), [1 2;-3 4;5 -6]+%s);
+assert_checkequal(real(a+0), [1 2;-3 4;5 -6]+%s);
 
-//a=sparse([1 2;-3 4;5 -6]);
-//if or(real(a)<>a) then pause,end
-//if or(real(a+a)<>2*a) then pause,end
-//a=sparse([1+%i 2;-3 4;5 -6]);
-//if or(full(real(a))<>[1 2;-3 4;5 -6]) then pause,end
-//if or(full(real(a+a))<>2*[1 2;-3 4;5 -6]) then pause,end
+a=sparse([1 2;-3 4;5 -6]);
+assert_checkequal(real(a), a);
+assert_checkequal(real(a+a), 2*a);
+a=sparse([1+%i 2;-3 4;5 -6]);
+assert_checkequal(full(real(a)), [1 2;-3 4;5 -6]);
+assert_checkequal(full(real(a+a)), 2.*[1 2;-3 4;5 -6]);
 
 //imag
 a=[1 2;-3 4;5 -6];
-if or(imag(a)<>0*a) then pause,end
-if or(imag(a+0)<>0*a) then pause,end
-if imag([])<>[] then pause,end
-a=[];if imag(a)<>[] then pause,end
+assert_checkequal(imag(a), 0*a);
+assert_checkequal(imag(a+0), 0*a);
+assert_checkequal(imag([]), []);
+a=[]; assert_checkequal(imag(a), []);
 a=[1+%i 2;-3 4;5 -6];
-if or(imag(a)<>[1 0;0 0;0 0]) then pause,end
-if or(imag(a+0)<>[1 0;0 0;0 0]) then pause,end
+assert_checkequal(imag(a), [1 0;0 0; 0 0]);
+assert_checkequal(imag(a+0), [1 0;0 0; 0 0]);
 
 a=[1 2;-3 4;5 -6]+%s;
-if or(imag(a)<>0*a) then pause,end
-if or(imag(a+0)<>0*a) then pause,end
-a=[1+%i 2;-3 4;5 -6]+%s;
-if or(imag(a)<>[poly(1,'s','c') 0;0 0;0 0]) then pause,end
-if or(imag(a+0)<>[poly(1,'s','c') 0;0 0;0 0]) then pause,end
+assert_checkequal(imag(a), 0*a);
+assert_checkequal(imag(a+0), 0*a);
 
-//a=sparse([1 2;-3 4;5 -6]);
-//if or(imag(a)<>0*a) then pause,end
-//if or(imag(a+a)<>0*a) then pause,end
-//a=sparse([1+%i 2;-3 4;5 -6]);
-//if or(full(imag(a))<>[1 0;0 0;0 0]) then pause,end
-//if or(full(imag(a+a))<>2*[1 0;0 0;0 0]) then pause,end
+a=[1+%i 2;-3 4;5 -6]+%s;
+assert_checkequal(imag(a), [poly(1,"s","c") 0;0 0;0 0]);
+assert_checkequal(imag(a+0), [poly(1,"s","c") 0;0 0;0 0]);
 
+a=sparse([1 2;-3 4;5 -6]);
+assert_checkequal(imag(a), 0*a);
+assert_checkequal(imag(a+a), 0*a);
+a=sparse([1+%i 2;-3 4;5 -6]);
+assert_checkequal(full(imag(a)), [1 0;0 0;0 0]);
+assert_checkequal(full(imag(a+a)), 2*[1 0;0 0;0 0]);
 
 //conj
 a=[1 2;-3 4;5 -6];
-if or(conj(a)<>a) then pause,end
-if or(conj(a+0)<>a) then pause,end
-if conj([])<>[] then pause,end
-a=[];if conj(a)<>[] then pause,end
+assert_checkequal(conj(a), a);
+assert_checkequal(conj(a+0), a);
+assert_checkequal(conj([]), []);
+a=[]; assert_checkequal(conj(a), []);
 a=[1+%i 2;-3 4;5 -6];
-if or(conj(a)<>[1-%i 2;-3 4;5 -6]) then pause,end
-if or(conj(a+0)<>[1-%i 2;-3 4;5 -6]) then pause,end
+assert_checkequal(conj(a), [1-%i 2;-3 4;5 -6]);
+assert_checkequal(conj(a+0), [1-%i 2;-3 4;5 -6]);
 
 a=[1 2;-3 4;5 -6]+%s;
-if or(conj(a)<>a) then pause,end
-if or(conj(a+0)<>a) then pause,end
+assert_checkequal(conj(a), a);
+assert_checkequal(conj(a+0), a);
 a=[1+%i 2;-3 4;5 -6]+%s;
-if or(conj(a)<>[1-%i 2;-3 4;5 -6]+%s) then pause,end
-if or(conj(a+0)<>[1-%i 2;-3 4;5 -6]+%s) then pause,end
-
-//a=sparse([1 2;-3 4;5 -6]);
-//if or(conj(a)<>a) then pause,end
-//if or(conj(a+a)<>2*a) then pause,end
-//a=sparse([1+%i 2;-3 4;5 -6]);
-//if or(full(conj(a))<>[1-%i 2;-3 4;5 -6]) then pause,end
-//if or(full(conj(a+a))<>2*[1-%i 2;-3 4;5 -6]) then pause,end
-
-
+assert_checkequal(conj(a), [1-%i 2;-3 4;5 -6]+%s);
+assert_checkequal(conj(a+0), [1-%i 2;-3 4;5 -6]+%s);
 
+a=sparse([1 2;-3 4;5 -6]);
+assert_checkequal(conj(a), a);
+assert_checkequal(conj(a+a), 2*a);
+a=sparse([1+%i 2;-3 4;5 -6]);
+assert_checkequal(full(conj(a)), [1-%i 2;-3 4;5 -6]);
+assert_checkequal(full(conj(a+a)), 2*[1-%i 2;-3 4;5 -6]);
 
 //int
 a=[1.2 2.5;-3.4 4.5;5.8 -6.2];
-if or(int(a)<>[1 2;-3 4;5 -6]) then pause,end
-if or(int(a+0)<>[1 2;-3 4;5 -6]) then pause,end
+assert_checkequal(int(a), [1 2;-3 4;5 -6]);
+assert_checkequal(int(a+0), [1 2;-3 4;5 -6]);
+
 a=[1.2+2.5*%i 2.5;-3.4 4.5;5.8 -6.2];
-if or(int(a)<>[1+2*%i 2;-3 4;5 -6]) then pause,end
-if or(int(a+0)<>[1+2*%i 2;-3 4;5 -6]) then pause,end
+assert_checkequal(int(a), [1+2*%i 2;-3 4;5 -6]);
+assert_checkequal(int(a+0), [1+2*%i 2;-3 4;5 -6]);
 
 a=[1.2 2.5;-3.4 4.5;5.8 -6.2]+1.1*%s;
-if or(int(a)<>[1 2;-3 4;5 -6]+%s) then pause,end
-if or(int(a+0)<>[1 2;-3 4;5 -6]+%s) then pause,end
-a=[1.2+2.5*%i 2.5;-3.4 4.5;5.8 -6.2]+1.1*%s;
-if or(int(a)<>[1+2*%i 2;-3 4;5 -6]+%s) then pause,end
-if or(int(a+0)<>[1+2*%i 2;-3 4;5 -6]+%s) then pause,end
+assert_checkequal(int(a), [1 2;-3 4;5 -6]+%s);
+assert_checkequal(int(a+0), [1 2;-3 4;5 -6]+%s);
 
-if int([])<>[] then pause,end
-a=[];if int(a)<>[] then pause,end
+a=[1.2+2.5*%i 2.5;-3.4 4.5;5.8 -6.2]+1.1*%s;
+assert_checkequal(int(a), [1+2*%i 2;-3 4;5 -6]+%s);
+assert_checkequal(int(a+0), [1+2*%i 2;-3 4;5 -6]+%s);
 
+assert_checkequal(int([]), []);
+a = []; assert_checkequal(int(a), []);
 
 //round
-
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if or(round(a)<>[1 3;-3 5;6 -6]) then pause,end
-if or(round(a+0)<>[1 3;-3 5;6 -6]) then pause,end
+assert_checkequal(round(a), [1 3;-3 5;6 -6]);
+assert_checkequal(round(a+0), [1 3;-3 5;6 -6]);
+
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2];
-if or(round(a)<>[1+3*%i 3;-3 5;6 -6]) then pause,end
-if or(round(a+0)<>[1+3*%i 3;-3 5;6 -6]) then pause,end
+assert_checkequal(round(a), [1+3*%i 3;-3 5;6 -6]);
+assert_checkequal(round(a+0), [1+3*%i 3;-3 5;6 -6]);
 
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(round(a)<>[1 3;-3 5;6 -6]+%s) then pause,end
-if or(round(a+0)<>[1 3;-3 5;6 -6]+%s) then pause,end
+assert_checkequal(round(a), [1 3;-3 5;6 -6]+%s);
+assert_checkequal(round(a+0), [1 3;-3 5;6 -6]+%s);
+
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(round(a)<>[1+3*%i 3;-3 5;6 -6]+%s) then pause,end
-if or(round(a+0)<>[1+3*%i 3;-3 5;6 -6]+%s) then pause,end
+assert_checkequal(round(a), [1+3*%i 3;-3 5;6 -6]+%s);
+assert_checkequal(round(a+0), [1+3*%i 3;-3 5;6 -6]+%s);
 
-if round([])<>[] then pause,end
-a=[];if round(a)<>[] then pause,end
+assert_checkequal(round([]), []);
+a=[]; assert_checkequal(round(a), []);
 
 //ceil
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if or(ceil(a)<>[2 3;-3 5;6 -6]) then pause,end
-if or(ceil(a+0)<>[2 3;-3 5;6 -6]) then pause,end
+assert_checkequal(ceil(a), [2 3;-3 5;6 -6]);
+assert_checkequal(ceil(a+0), [2 3;-3 5;6 -6]);
+
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2];
-if or(ceil(a)<>[2+3*%i 3;-3 5;6 -6]) then pause,end
-if or(ceil(a+0)<>[2+3*%i 3;-3 5;6 -6]) then pause,end
+assert_checkequal(ceil(a), [2+3*%i 3;-3 5;6 -6]);
+assert_checkequal(ceil(a+0), [2+3*%i 3;-3 5;6 -6]);
 
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(ceil(a)<>[2 3;-3 5;6 -6]+2*%s) then pause,end
-if or(ceil(a+0)<>[2 3;-3 5;6 -6]+2*%s) then pause,end
-a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(ceil(a)<>[2+3*%i 3;-3 5;6 -6]+2*%s) then pause,end
-if or(ceil(a+0)<>[2+3*%i 3;-3 5;6 -6]+2*%s) then pause,end
+assert_checkequal(ceil(a), [2 3;-3 5;6 -6]+2*%s);
+assert_checkequal(ceil(a+0), [2 3;-3 5;6 -6]+2*%s);
 
-if ceil([])<>[] then pause,end
-a=[];if ceil(a)<>[] then pause,end
+a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2]+1.1*%s;
+assert_checkequal(ceil(a), [2+3*%i 3;-3 5;6 -6]+2*%s);
+assert_checkequal(ceil(a+0), [2+3*%i 3;-3 5;6 -6]+2*%s);
 
+assert_checkequal(ceil([]), []);
+a=[];assert_checkequal(ceil(a), []);
 
 //floor
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if or(floor(a)<>[1 2;-4 4;5 -7]) then pause,end
-if or(floor(a+0)<>[1 2;-4 4;5 -7]) then pause,end
+assert_checkequal(floor(a), [1 2;-4 4;5 -7]);
+assert_checkequal(floor(a+0), [1 2;-4 4;5 -7]);
+
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2];
-if or(floor(a)<>[1+2*%i 2;-4 4;5 -7]) then pause,end
-if or(floor(a+0)<>[1+2*%i 2;-4 4;5 -7]) then pause,end
+assert_checkequal(floor(a), [1+2*%i 2;-4 4;5 -7]);
+assert_checkequal(floor(a+0), [1+2*%i 2;-4 4;5 -7]);
 
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(floor(a)<>[1 2;-4 4;5 -7]+%s) then pause,end
-if or(floor(a+0)<>[1 2;-4 4;5 -7]+%s) then pause,end
+assert_checkequal(floor(a), [1 2;-4 4;5 -7]+%s);
+assert_checkequal(floor(a+0), [1 2;-4 4;5 -7]+%s);
+
 a=[1.2+2.51*%i 2.52;-3.4 4.52;5.8 -6.2]+1.1*%s;
-if or(floor(a)<>[1+2*%i 2;-4 4;5 -7]+%s) then pause,end
-if or(floor(a+0)<>[1+2*%i 2;-4 4;5 -7]+%s) then pause,end
+assert_checkequal(floor(a), [1+2*%i 2;-4 4;5 -7]+%s);
+assert_checkequal(floor(a+0), [1+2*%i 2;-4 4;5 -7]+%s);
 
-if floor([])<>[] then pause,end
-a=[];if floor(a)<>[] then pause,end
+assert_checkequal(floor([]), []);
+a=[]; assert_checkequal(floor(a), []);
 
 //sign
-//a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-//if or(sign(a)<>[1 1;-1 1;1 -1]) then pause,end
-//a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-//if norm(sign(a)-[sqrt(2)/2*(1+%i) 1;-1 1;1 -1])>10*%eps then pause,end
-//if sign([])<>[] then pause,end
-//a=[];if sign(a)<>[] then pause,end
-
-
-//clean
+a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
+assert_checkequal(sign(a), [1 1;-1 1;1 -1]);
+a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
+assert_checkfalse(norm(sign(a)-[sqrt(2)/2*(1+%i) 1;-1 1;1 -1])>10*%eps);
+assert_checkequal(sign([]), []);
+a=[]; assert_checkequal(sign(a), []);
 
 //log and exp
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if norm(exp(log(a))-a)>10*%eps then pause,end
-if norm(exp(log(a+0))-a)>10*%eps then pause,end
-b=log(a);if norm(exp(b)-a)>10*%eps then pause,end
+assert_checkfalse(norm(exp(log(a))-a)>10*%eps);
+assert_checkfalse(norm(exp(log(a+0))-a)>10*%eps);
+
+b=log(a);
+assert_checkfalse(norm(exp(b)-a)>10*%eps);
+
 a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-if norm(exp(log(a))-a)>10*%eps then pause,end
-if norm(exp(log(a+0))-a)>10*%eps then pause,end
-b=log(a);if norm(exp(b)-a)>10*%eps then pause,end
+assert_checkfalse(norm(exp(log(a))-a)>10*%eps);
+assert_checkfalse(norm(exp(log(a+0))-a)>10*%eps);
 
-if exp([])<>[] then pause,end
-a=[];if exp(a)<>[] then pause,end
-if log([])<>[] then pause,end
-a=[];if log(a)<>[] then pause,end
+b=log(a);
+assert_checkfalse(norm(exp(b)-a)>10*%eps);
+
+assert_checkequal(exp([]), []);
+a=[]; assert_checkequal(exp(a), []);
+assert_checkequal(log([]), []);
+a=[]; assert_checkequal(log(a), []);
 
 //sin and cos
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if norm(sin(a).^2+cos(a).^2-1)>10*%eps then pause,end
-if norm(sin(a+0).^2+cos(a+0).^2-1)>10*%eps then pause,end
-a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-if norm(sin(a).^2+cos(a).^2-1)>10*%eps then pause,end
-if norm(sin(a+0).^2+cos(a+0).^2-1)>10*%eps then pause,end
+assert_checkfalse(norm(sin(a).^2+cos(a).^2-1)>10*%eps);
+assert_checkfalse(norm(sin(a+0).^2+cos(a+0).^2-1)>10*%eps);
 
-if cos([])<>[] then pause,end
-a=[];if cos(a)<>[] then pause,end
-if sin([])<>[] then pause,end
-a=[];if sin(a)<>[] then pause,end
+a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
+assert_checkfalse(norm(sin(a).^2+cos(a).^2-1)>10*%eps);
+assert_checkfalse(norm(sin(a+0).^2+cos(a+0).^2-1)>10*%eps);
 
+assert_checkequal(cos([]), []);
+a=[]; assert_checkequal(cos(a), []);
+assert_checkequal(sin([]), []);
+a=[]; assert_checkequal(sin(a), []);
 
 //tan et atan
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if norm(tan(atan(a))-a)>100*%eps then pause,end
-if norm(tan(atan(a+0))-a)>100*%eps then pause,end
-b=log(a);if norm(exp(b)-a)>100*%eps then pause,end
+assert_checkfalse(norm(tan(atan(a))-a)>100*%eps);
+assert_checkfalse(norm(tan(atan(a+0))-a)>100*%eps);
+
+b=log(a); assert_checkfalse(norm(exp(b)-a)>100*%eps);
+
 a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-if norm(tan(atan(a))-a)>100*%eps then pause,end
-if norm(tan(atan(a+0))-a)>100*%eps then pause,end
+assert_checkfalse(norm(tan(atan(a))-a)>100*%eps);
+assert_checkfalse(norm(tan(atan(a+0))-a)>100*%eps);
 
-if atan([])<>[] then pause,end
-a=[];if atan(a)<>[] then pause,end
+assert_checkequal(atan([]), []);
+a=[]; assert_checkequal(atan(a), []);
 
-if atan([],[])<>[] then pause,end
-a=[];if atan(a,[])<>[] then pause,end
-a=[];if atan(a,a)<>[] then pause,end
-a=[];if atan([],a)<>[] then pause,end
+assert_checkequal(atan([], []), []);
+a=[]; assert_checkequal(atan(a, []), []);
+a=[]; assert_checkequal(atan(a,a), []);
+a=[]; assert_checkequal(atan([], a), []);
 
 //expm
 a=[0 2;0 0];
-if norm(expm(a)-[1 2;0 1])>10*%eps then pause,end
+assert_checkfalse(norm(expm(a)-[1 2;0 1])>10*%eps);
+
 a=[0 2*%i;0 0];
-if norm(expm(a)-[1 2*%i;0 1])>10*%eps then pause,end
-if expm([])<>[] then pause,end
-a=[];if expm(a)<>[] then pause,end
+assert_checkfalse(norm(expm(a)-[1 2*%i;0 1])>10*%eps);
+
+assert_checkequal(expm([]), []);
+a=[]; assert_checkequal(expm(a), []);
 
 //sqrt
 a=[1.2 2.51;-3.4 4.52;5.8 -6.2];
-if norm(sqrt(a).^2-a)>100*%eps then pause,end
-if norm(sqrt(a+0).^2-a)>100*%eps then pause,end
+assert_checkfalse(norm(sqrt(a).^2-a)>100*%eps);
+assert_checkfalse(norm(sqrt(a+0).^2-a)>100*%eps);
+
 a=[1+%i 2.51;-3.4 4.52;5.8 -6.2];
-if norm(sqrt(a).^2-a)>100*%eps then pause,end
-if norm(sqrt(a+0).^2-a)>100*%eps then pause,end
+assert_checkfalse(norm(sqrt(a).^2-a)>100*%eps);
+assert_checkfalse(norm(sqrt(a+0).^2-a)>100*%eps);
 
-if sqrt([])<>[] then pause,end
-a=[];if sqrt(a)<>[] then pause,end
+assert_checkequal(sqrt([]), []);
+a=[]; assert_checkequal(sqrt(a), a);
 
 //sum
 a=[1 2;-3 4;5 -6];
-if sum(a)<>3 then pause,end
-if sum(a+0)<>3 then pause,end
-if or(sum(a,1)<>[3 0]) then pause,end
-if or(sum(a+0,1)<>[3 0]) then pause,end
+assert_checkequal(sum(a), 3);
+assert_checkequal(sum(a+0), 3);
+assert_checkequal(sum(a, 1), [3 0]);
+assert_checkequal(sum(a+0, 1), [3 0]);
+
 n=1;
-if or(sum(a,n)<>[3 0]) then pause,end
-if or(sum(a+0,n)<>[3 0]) then pause,end
-if or(sum(a,'r')<>[3 0]) then pause,end
-if or(sum(a+0,'r')<>[3 0]) then pause,end
-n='r';
-if or(sum(a,n)<>[3 0]) then pause,end
-if or(sum(a+0,n)<>[3 0]) then pause,end
-
-if or(sum(a,2)<>[3;1;-1]) then pause,end
-if or(sum(a+0,2)<>[3;1;-1]) then pause,end
+assert_checkequal(sum(a, n), [3 0]);
+assert_checkequal(sum(a+0, n), [3 0]);
+assert_checkequal(sum(a, "r"), [3 0]);
+assert_checkequal(sum(a+0, "r"), [3 0]);
+
+n="r";
+assert_checkequal(sum(a, n), [3 0]);
+assert_checkequal(sum(a+0, n), [3 0]);
+
+
+assert_checkequal(sum(a, 2), [3;1;-1]);
+assert_checkequal(sum(a+0, 2), [3;1;-1]);
+
 n=2;
-if or(sum(a,n)<>[3;1;-1]) then pause,end
-if or(sum(a+0,n)<>[3;1;-1]) then pause,end
-if or(sum(a,'c')<>[3;1;-1]) then pause,end
-if or(sum(a+0,'c')<>[3;1;-1]) then pause,end
-n='c';
-if or(sum(a,n)<>[3;1;-1]) then pause,end
-if or(sum(a+0,n)<>[3;1;-1]) then pause,end
+assert_checkequal(sum(a,n), [3;1;-1]);
+assert_checkequal(sum(a+0, n), [3;1;-1]);
+assert_checkequal(sum(a, "c"), [3;1;-1]);
+assert_checkequal(sum(a+0, "c"), [3;1;-1]);
+
+n="c";
+assert_checkequal(sum(a, n), [3;1;-1]);
+assert_checkequal(sum(a+0, n), [3;1;-1]);
 
 a=[1 2;-3 4;5 -6]+0*%i;
-if or(sum(a)<>3+0*%i) then pause,end
-if or(sum(a+0)<>3+0*%i) then pause,end
-if or(sum(a,1)<>[3 0]+0*%i) then pause,end
-if or(sum(a+0,1)<>[3 0]+0*%i) then pause,end
+assert_checkequal(sum(a), 3+0*%i);
+assert_checkequal(sum(a+0), 3+0*%i);
+assert_checkequal(sum(a, 1), [3 0]+0*%i);
+assert_checkequal(sum(a+0, 1), [3 0]+0*%i);
+
 n=1;
-if or(sum(a,n)<>[3 0]+0*%i) then pause,end
-if or(sum(a+0,n)<>[3 0]+0*%i) then pause,end
-if or(sum(a,'r')<>[3 0]+0*%i) then pause,end
-if or(sum(a+0,'r')<>[3 0]+0*%i) then pause,end
-n='r';
-if or(sum(a,n)<>[3 0]+0*%i) then pause,end
-if or(sum(a+0,n)<>[3 0]+0*%i) then pause,end
-
-if or(sum(a,2)<>[3;1;-1]+0*%i) then pause,end
-if or(sum(a+0,2)<>[3;1;-1]+0*%i) then pause,end
+assert_checkequal(sum(a,n), [3 0]+0*%i);
+assert_checkequal(sum(a+0, n), [3 0]+0*%i);
+assert_checkequal(sum(a, "r"), [3 0]+0*%i);
+assert_checkequal(sum(a+0, "r"), [3 0]+0*%i);
+
+n="r";
+assert_checkequal(sum(a, n), [3 0]+0*%i);
+assert_checkequal(sum(a+0, n), [3 0]+0*%i);
+
+assert_checkequal(sum(a, 2), [3;1;-1]+0*%i);
+assert_checkequal(sum(a+0, 2), [3;1;-1]+0*%i);
+
 n=2;
-if or(sum(a,n)<>[3;1;-1]+0*%i) then pause,end
-if or(sum(a+0,n)<>[3;1;-1]+0*%i) then pause,end
-if or(sum(a,'c')<>[3;1;-1]+0*%i) then pause,end
-if or(sum(a+0,'c')<>[3;1;-1]+0*%i) then pause,end
-n='c';
-if or(sum(a,n)<>[3;1;-1]+0*%i) then pause,end
-if or(sum(a+0,n)<>[3;1;-1]+0*%i) then pause,end
-
-a=[]
-if sum(a)<>0 then pause,end
-if sum([])<>0 then pause,end
-if sum(a,1)<>[] then pause,end
-if sum([],1)<>[] then pause,end
+assert_checkequal(sum(a,n), [3;1;-1]+0*%i);
+assert_checkequal(sum(a+0,n), [3;1;-1]+0*%i);
+assert_checkequal(sum(a,"c"), [3;1;-1]+0*%i);
+assert_checkequal(sum(a+0, "c"), [3;1;-1]+0*%i);
+
+n="c";
+assert_checkequal(sum(a, n), [3;1;-1]+0*%i);
+assert_checkequal(sum(a+0, n), [3;1;-1]+0*%i);
+
+a=[];
+assert_checkequal(sum(a), 0);
+assert_checkequal(sum([]), 0);
+assert_checkequal(sum(a, 1), []);
+assert_checkequal(sum([], 1), []);
+
 n=1;
-if sum(a,n)<>[] then pause,end
-if sum([],n)<>[] then pause,end
-if sum(a,'r')<>[] then pause,end
-if sum([],'r')<>[] then pause,end
-n='r';
-if sum(a,n)<>[] then pause,end
-if sum([],n)<>[] then pause,end
-
-if sum(a,2)<>[] then pause,end
-if sum([],2)<>[] then pause,end
+assert_checkequal(sum(a,n), []);
+assert_checkequal(sum([], n), []);
+assert_checkequal(sum(a, "r"), []);
+assert_checkequal(sum([], "r"), []);
+
+n="r";
+assert_checkequal(sum(a, n), []);
+assert_checkequal(sum([], n), []);
+
+assert_checkequal(sum(a, 2), []);
+assert_checkequal(sum([], 2), []);
+
 n=2;
-if sum(a,n)<>[] then pause,end
-if sum([],n)<>[] then pause,end
-if sum(a,'c')<>[] then pause,end
-if sum([],'c')<>[] then pause,end
-n='c';
-if sum(a,n)<>[] then pause,end
-if sum([],n)<>[] then pause,end
+assert_checkequal(sum(a,n), []);
+assert_checkequal(sum([], n), []);
+assert_checkequal(sum(a, "c"), []);
+assert_checkequal(sum([], "c"), []);
 
+n="c";
+assert_checkequal(sum(a,n), []);
+assert_checkequal(sum([], n), []);
 
 a=sparse([1 2;-3 4;5 -6]);
-if sum(a)<>3 then pause,end
-if sum(a+0*a)<>3 then pause,end
+assert_checkequal(sum(a), 3);
+assert_checkequal(sum(a+0*a), 3);
+
 a=sparse([1 2;-3 4;5 -6]+0*%i);
-if sum(a)<>3+0*%i then pause,end
-if sum(a+0*a)<>3+0*%i then pause,end
+assert_checkequal(sum(a), 3+0*%i);
+assert_checkequal(sum(a+0*a), 3+0*%i);
 
 
 //prod
 a=[1 2;-3 4;5 -6];
-if prod(a)<>720 then pause,end
-if prod(a+0)<>720 then pause,end
-if prod(a,1)<>[-15 -48] then pause,end
-if or(prod(a+0,1)<>[-15 -48]) then pause,end
+assert_checkequal(prod(a), 720);
+assert_checkequal(prod(a+0), 720);
+assert_checkequal(prod(a, 1), [-15 -48]);
+assert_checkequal(prod(a+0, 1), [-15 -48]);
+
 n=1;
-if or(prod(a,n)<>[-15 -48]) then pause,end
-if or(prod(a+0,n)<>[-15 -48]) then pause,end
-if or(prod(a,'r')<>[-15 -48]) then pause,end
-if or(prod(a+0,'r')<>[-15 -48]) then pause,end
-n='r';
-if or(prod(a,n)<>[-15 -48]) then pause,end
-if or(prod(a+0,n)<>[-15 -48]) then pause,end
-
-if or(prod(a,2)<>[2;-12;-30]) then pause,end
-if or(prod(a+0,2)<>[2;-12;-30]) then pause,end
+assert_checkequal(prod(a, n), [-15 -48]);
+assert_checkequal(prod(a+0, n), [-15 -48]);
+assert_checkequal(prod(a, "r"), [-15 -48]);
+assert_checkequal(prod(a+0, "r"), [-15 -48]);
+
+n="r";
+assert_checkequal(prod(a, n), [-15 -48]);
+assert_checkequal(prod(a+0, n), [-15 -48]);
+
+assert_checkequal(prod(a, 2), [2;-12;-30]);
+assert_checkequal(prod(a+0, 2), [2;-12;-30]);
+
 n=2;
-if or(prod(a,n)<>[2;-12;-30]) then pause,end
-if or(prod(a+0,n)<>[2;-12;-30]) then pause,end
-if or(prod(a,'c')<>[2;-12;-30]) then pause,end
-if or(prod(a+0,'c')<>[2;-12;-30]) then pause,end
-n='c';
-if or(prod(a,n)<>[2;-12;-30]) then pause,end
-if or(prod(a+0,n)<>[2;-12;-30]) then pause,end
+assert_checkequal(prod(a, n), [2;-12;-30]);
+assert_checkequal(prod(a+0, n), [2;-12;-30]);
+assert_checkequal(prod(a, "c"), [2;-12;-30]);
+assert_checkequal(prod(a, "c"), [2;-12;-30]);
+
+n="c";
+assert_checkequal(prod(a, n), [2;-12;-30]);
+assert_checkequal(prod(a+0, n), [2;-12;-30]);
 
 a=[1 2;-3 4;5 -6]+0*%i;
-if prod(a)<>720+0*%i then pause,end
-if prod(a+0)<>720+0*%i then pause,end
-if or(prod(a,1)<>[-15 -48]+0*%i) then pause,end
-if or(prod(a+0,1)<>[-15 -48]+0*%i) then pause,end
+assert_checkequal(prod(a), 720+0*%i);
+assert_checkequal(prod(a+0), 720+0*%i);
+assert_checkequal(prod(a, 1), [-15 -48]+0*%i);
+assert_checkequal(prod(a+0, 1), [-15 -48]+0*%i);
+
 n=1;
-if or(prod(a,n)<>[-15 -48]+0*%i) then pause,end
-if or(prod(a+0,n)<>[-15 -48]+0*%i) then pause,end
-if or(prod(a,'r')<>[-15 -48]+0*%i) then pause,end
-if or(prod(a+0,'r')<>[-15 -48]+0*%i) then pause,end
-n='r';
-if or(prod(a,n)<>[-15 -48]+0*%i) then pause,end
-if or(prod(a+0,n)<>[-15 -48]+0*%i) then pause,end
-
-if or(prod(a,2)<>[2;-12;-30]+0*%i) then pause,end
-if or(prod(a+0,2)<>[2;-12;-30]+0*%i) then pause,end
+assert_checkequal(prod(a, n), [-15 -48]+0*%i);
+assert_checkequal(prod(a+0, n), [-15 -48]+0*%i);
+assert_checkequal(prod(a, "r"), [-15 -48]+0*%i);
+assert_checkequal(prod(a+0, "r"), [-15 -48]+0*%i);
+
+n="r";
+assert_checkequal(prod(a, n), [-15 -48]+0*%i);
+assert_checkequal(prod(a+0, n), [-15 -48]+0*%i);
+
+assert_checkequal(prod(a, 2), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a+0, 2), [2;-12;-30]+0*%i);
+
 n=2;
-if or(prod(a,n)<>[2;-12;-30]+0*%i) then pause,end
-if or(prod(a+0,n)<>[2;-12;-30]+0*%i) then pause,end
-if or(prod(a,'c')<>[2;-12;-30]+0*%i) then pause,end
-if or(prod(a+0,'c')<>[2;-12;-30]+0*%i) then pause,end
-n='c';
-if or(prod(a,n)<>[2;-12;-30]+0*%i) then pause,end
-if or(prod(a+0,n)<>[2;-12;-30]+0*%i) then pause,end
-
-a=[]
-if prod(a)<>1 then pause,end
-if prod([])<>1 then pause,end
-if prod(a,1)<>[] then pause,end
-if prod([],1)<>[] then pause,end
+assert_checkequal(prod(a, n), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a+0, n), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a, "c"), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a+0, "c"), [2;-12;-30]+0*%i);
+
+n="c";
+assert_checkequal(prod(a, n), [2;-12;-30]+0*%i);
+assert_checkequal(prod(a+0, n), [2;-12;-30]+0*%i);
+
+a=[];
+assert_checkequal(prod(a), 1);
+assert_checkequal(prod([]), 1);
+assert_checkequal(prod(a, 1), []);
+assert_checkequal(prod([], 1), []);
+
 n=1;
-if prod(a,n)<>[] then pause,end
-if prod([],n)<>[] then pause,end
-if prod(a,'r')<>[] then pause,end
-if prod([],'r')<>[] then pause,end
-n='r';
-if prod(a,n)<>[] then pause,end
-if prod([],n)<>[] then pause,end
-
-if prod(a,2)<>[] then pause,end
-if prod([],2)<>[] then pause,end
+assert_checkequal(prod(a, n), []);
+assert_checkequal(prod([], n), []);
+assert_checkequal(prod(a, "r"), []);
+assert_checkequal(prod([], "r"), []);
+
+n="r";
+assert_checkequal(prod(a,n), []);
+assert_checkequal(prod([], n), []);
+
+assert_checkequal(prod(a, 2), []);
+assert_checkequal(prod([], 2), []);
+
 n=2;
-if prod(a,n)<>[] then pause,end
-if prod([],n)<>[] then pause,end
-if prod(a,'c')<>[] then pause,end
-if prod([],'c')<>[] then pause,end
-n='c';
-if prod(a,n)<>[] then pause,end
-if prod([],n)<>[] then pause,end
+assert_checkequal(prod(a,n), []);
+assert_checkequal(prod([], n), []);
+assert_checkequal(prod(a, "c"), []);
+assert_checkequal(prod([], "c"), []);
+
+n="c";
+assert_checkequal(prod(a, n), []);
+assert_checkequal(prod([], n), []);
 
 //cumsum
 a=[1 2;-3 4;5 -6];
-if or(cumsum(a)<>[1,5;-2,9;3,3]) then pause,end
-if or(cumsum(a+0)<> [1,5;-2,9;3,3]) then pause,end
-if or(cumsum(a,1)<>[1,2;-2,6;3 0]) then pause,end
-if or(cumsum(a+0,1)<>[1,2;-2,6;3 0]) then pause,end
+assert_checkequal(cumsum(a), [1,5;-2,9;3,3]);
+assert_checkequal(cumsum(a+0), [1,5;-2,9;3,3]);
+assert_checkequal(cumsum(a,1), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a+0,1), [1,2;-2,6;3 0]);
+
 n=1;
-if or(cumsum(a,n)<>[1,2;-2,6;3 0]) then pause,end
-if or(cumsum(a+0,n)<>[1,2;-2,6;3 0]) then pause,end
-if or(cumsum(a,'r')<>[1,2;-2,6;3 0]) then pause,end
-if or(cumsum(a+0,'r')<>[1,2;-2,6;3 0]) then pause,end
-n='r';
-if or(cumsum(a,n)<>[1,2;-2,6;3 0]) then pause,end
-if or(cumsum(a+0,n)<>[1,2;-2,6;3 0]) then pause,end
-
-if or(cumsum(a,2)<>[1,3;-3,1;5,-1]) then pause,end
-if or(cumsum(a+0,2)<>[1,3;-3,1;5,-1]) then pause,end
+assert_checkequal(cumsum(a, n), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a+0, n), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a, "r"), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a+0, "r"), [1,2;-2,6;3 0]);
+
+n="r";
+assert_checkequal(cumsum(a, n), [1,2;-2,6;3 0]);
+assert_checkequal(cumsum(a+0, n), [1,2;-2,6;3 0]);
+
+assert_checkequal(cumsum(a, 2), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a+0, 2), [1,3;-3,1;5,-1]);
+
 n=2;
-if or(cumsum(a,n)<>[1,3;-3,1;5,-1]) then pause,end
-if or(cumsum(a+0,n)<>[1,3;-3,1;5,-1]) then pause,end
-if or(cumsum(a,'c')<>[1,3;-3,1;5,-1]) then pause,end
-if or(cumsum(a+0,'c')<>[1,3;-3,1;5,-1]) then pause,end
-n='c';
-if or(cumsum(a,n)<>[1,3;-3,1;5,-1]) then pause,end
-if or(cumsum(a+0,n)<>[1,3;-3,1;5,-1]) then pause,end
+assert_checkequal(cumsum(a, n), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a+0, n), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a, "c"), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a+0, "c"), [1,3;-3,1;5,-1]);
+
+n="c";
+assert_checkequal(cumsum(a, n), [1,3;-3,1;5,-1]);
+assert_checkequal(cumsum(a+0, n), [1,3;-3,1;5,-1]);
 
 a=[1 2;-3 4;5 -6]+0*%i;
-if cumsum(a)<>3+0*%i then pause,end
-if cumsum(a+0)<>3+0*%i then pause,end
-if or(cumsum(a,1)<>[1,2;-2,6;3 0]+0*%i) then pause,end
-if or(cumsum(a+0,1)<>[1,2;-2,6;3 0]+0*%i) then pause,end
+assert_checkequal(cumsum(a), [1,5;-2,9;3,3]+0*%i);
+assert_checkequal(cumsum(a+0), [1,5;-2,9;3,3]+0*%i);
+assert_checkequal(cumsum(a,1), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a+0, 1), [1,2;-2,6;3 0]+0*%i);
+
 n=1;
-if or(cumsum(a,n)<>[1,2;-2,6;3 0]+0*%i) then pause,end
-if or(cumsum(a+0,n)<>[1,2;-2,6;3 0]+0*%i) then pause,end
-if or(cumsum(a,'r')<>[1,2;-2,6;3 0]+0*%i) then pause,end
-if or(cumsum(a+0,'r')<>[1,2;-2,6;3 0]+0*%i) then pause,end
-n='r';
-if or(cumsum(a,n)<>[1,2;-2,6;3 0]+0*%i) then pause,end
-if or(cumsum(a+0,n)<>[1,2;-2,6;3 0]+0*%i) then pause,end
-
-if or(cumsum(a,2)<>[1,3;-3,1;5,-1]+0*%i) then pause,end
-if or(cumsum(a+0,2)<>[1,3;-3,1;5,-1]+0*%i) then pause,end
+assert_checkequal(cumsum(a, n), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a+0, n), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a, "r"), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a+0, "r"), [1,2;-2,6;3 0]+0*%i);
+
+n="r";
+assert_checkequal(cumsum(a, n), [1,2;-2,6;3 0]+0*%i);
+assert_checkequal(cumsum(a+0, n), [1,2;-2,6;3 0]+0*%i);
+
+assert_checkequal(cumsum(a, 2), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a+0, 2), [1,3;-3,1;5,-1]+0*%i);
+
 n=2;
-if or(cumsum(a,n)<>[1,3;-3,1;5,-1]+0*%i) then pause,end
-if or(cumsum(a+0,n)<>[1,3;-3,1;5,-1]+0*%i) then pause,end
-if or(cumsum(a,'c')<>[1,3;-3,1;5,-1]+0*%i) then pause,end
-if or(cumsum(a+0,'c')<>[1,3;-3,1;5,-1]+0*%i) then pause,end
-n='c';
-if or(cumsum(a,n)<>[1,3;-3,1;5,-1]+0*%i) then pause,end
-if or(cumsum(a+0,n)<>[1,3;-3,1;5,-1]+0*%i) then pause,end
+assert_checkequal(cumsum(a, n), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a+0, n), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a, "c"), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a+0, "c"), [1,3;-3,1;5,-1]+0*%i);
+
+n="c";
+assert_checkequal(cumsum(a, n), [1,3;-3,1;5,-1]+0*%i);
+assert_checkequal(cumsum(a+0, n), [1,3;-3,1;5,-1]+0*%i);
 
 a=[];
-if cumsum(a)<>[] then pause,end
-if cumsum([])<>[] then pause,end
-if cumsum(a,1)<>[] then pause,end
-if cumsum([],1)<>[] then pause,end
+assert_checkequal(cumsum(a), []);
+assert_checkequal(cumsum([]), []);
+assert_checkequal(cumsum(a, 1), []);
+assert_checkequal(cumsum([], 1), []);
+
 n=1;
-if cumsum(a,n)<>[] then pause,end
-if cumsum([],n)<>[] then pause,end
-if cumsum(a,'r')<>[] then pause,end
-if cumsum([],'r')<>[] then pause,end
-n='r';
-if cumsum(a,n)<>[] then pause,end
-if cumsum([],n)<>[] then pause,end
-
-if cumsum(a,2)<>[] then pause,end
-if cumsum([],2)<>[] then pause,end
-n=2;
-if cumsum(a,n)<>[] then pause,end
-if cumsum([],n)<>[] then pause,end
-if cumsum(a,'c')<>[] then pause,end
-if cumsum([],'c')<>[] then pause,end
-n='c';
-if cumsum(a,n)<>[] then pause,end
-if cumsum([],n)<>[] then pause,end
+assert_checkequal(cumsum(a,n), []);
+assert_checkequal(cumsum([], n), []);
+assert_checkequal(cumsum(a, "r"), []);
+assert_checkequal(cumsum([], "r"), []);
 
+n="r";
+assert_checkequal(cumsum(a, n), []);
+assert_checkequal(cumsum([], n), []);
 
-a=sparse([1 2;-3 4;5 -6]);
-//if cumsum(a)<> [1,5;-2,9;3,3] then pause,end
-//if cumsum(a+0*a)<> [1,5;-2,9;3,3] then pause,end
-a=sparse([1 2;-3 4;5 -6]+0*%i);
-//if cumsum(a)<>3+0*%i then pause,end
-//if cumsum(a+0*a)<>3+0*%i then pause,end
+assert_checkequal(cumsum(a, 2), []);
+assert_checkequal(cumsum([], 2), []);
 
+n=2;
+assert_checkequal(cumsum(a, n), []);
+assert_checkequal(cumsum([], n), []);
+assert_checkequal(cumsum(a, "c"), []);
+assert_checkequal(cumsum([], "c"), []);
 
+n="c";
+assert_checkequal(cumsum(a,n), []);
+assert_checkequal(cumsum([], n), []);
 
+a=sparse([1 2;-3 4;5 -6]);
+assert_checkequal(cumsum(a), sparse([1,5;-2,9;3,3]));
+assert_checkequal(cumsum(a+0*a), sparse([1,5;-2,9;3,3]));
+a=sparse([1 2;-3 4;5 -6]+0*%i);
+assert_checkequal(cumsum(a), sparse([1,5;-2,9;3,3]+0*%i));
+assert_checkequal(cumsum(a+0*a), sparse([1,5;-2,9;3,3]+0*%i));
 
 //cumprod
 a=[1 2;-3 4;5 -6];
-if or(cumprod(a)<>[1 -30;-3 -120;-15 720]) then pause,end
-if or(cumprod(a+0)<> [1 -30;-3 -120;-15 720]) then pause,end
-if or(cumprod(a,1)<>[1 2;-3 8;-15 -48]) then pause,end
-if or(cumprod(a+0,1)<>[1 2;-3 8;-15 -48]) then pause,end
+assert_checkequal(cumprod(a), [1 -30;-3 -120;-15 720]);
+assert_checkequal(cumprod(a+0), [1 -30;-3 -120;-15 720]);
+assert_checkequal(cumprod(a, 1), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a+0, 1), [1 2;-3 8;-15 -48]);
+
 n=1;
-if or(cumprod(a,n)<>[1 2;-3 8;-15 -48]) then pause,end
-if or(cumprod(a+0,n)<>[1 2;-3 8;-15 -48]) then pause,end
-if or(cumprod(a,'r')<>[1 2;-3 8;-15 -48]) then pause,end
-if or(cumprod(a+0,'r')<>[1 2;-3 8;-15 -48]) then pause,end
-n='r';
-if or(cumprod(a,n)<>[1 2;-3 8;-15 -48]) then pause,end
-if or(cumprod(a+0,n)<>[1 2;-3 8;-15 -48]) then pause,end
-
-if or(cumprod(a,2)<>[1 2;-3 -12;5 -30]) then pause,end
-if or(cumprod(a+0,2)<>[1 2;-3 -12;5 -30]) then pause,end
+assert_checkequal(cumprod(a,n), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a, "r"), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a+0, "r"), [1 2;-3 8;-15 -48]);
+
+n="r";
+assert_checkequal(cumprod(a, n), [1 2;-3 8;-15 -48]);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 8;-15 -48]);
+
+assert_checkequal(cumprod(a,2), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a+0, 2), [1 2;-3 -12;5 -30]);
+
 n=2;
-if or(cumprod(a,n)<>[1 2;-3 -12;5 -30]) then pause,end
-if or(cumprod(a+0,n)<>[1 2;-3 -12;5 -30]) then pause,end
-if or(cumprod(a,'c')<>[1 2;-3 -12;5 -30]) then pause,end
-if or(cumprod(a+0,'c')<>[1 2;-3 -12;5 -30]) then pause,end
-n='c';
-if or(cumprod(a,n)<>[1 2;-3 -12;5 -30]) then pause,end
-if or(cumprod(a+0,n)<>[1 2;-3 -12;5 -30]) then pause,end
+assert_checkequal(cumprod(a,n), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a, "c"), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a+0, "c"), [1 2;-3 -12;5 -30]);
+
+n="c";
+assert_checkequal(cumprod(a,n), [1 2;-3 -12;5 -30]);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 -12;5 -30]);
 
 a=[1 2;-3 4;5 -6]+0*%i;
-if cumprod(a)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
-if cumprod(a+0)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
-if or(cumprod(a,1)<>[1 2;-3 8;-15 -48]+0*%i) then pause,end
-if or(cumprod(a+0,1)<>[1 2;-3 8;-15 -48]+0*%i) then pause,end
+assert_checkequal(cumprod(a), [1 -30;-3 -120;-15 720]+0*%i);
+assert_checkequal(cumprod(a+0), [1 -30;-3 -120;-15 720]+0*%i);
+assert_checkequal(cumprod(a, 1), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a+0, 1), [1 2;-3 8;-15 -48]+0*%i);
+
 n=1;
-if or(cumprod(a,n)<>[1 2;-3 8;-15 -48]+0*%i) then pause,end
-if or(cumprod(a+0,n)<>[1 2;-3 8;-15 -48]+0*%i) then pause,end
-if or(cumprod(a,'r')<>[1 2;-3 8;-15 -48]+0*%i) then pause,end
-if or(cumprod(a+0,'r')<>[1 2;-3 8;-15 -48]+0*%i) then pause,end
-n='r';
-if or(cumprod(a,n)<>[1 2;-3 8;-15 -48]+0*%i) then pause,end
-if or(cumprod(a+0,n)<>[1 2;-3 8;-15 -48]+0*%i) then pause,end
-
-if or(cumprod(a,2)<>[1 2;-3 -12;5 -30]+0*%i) then pause,end
-if or(cumprod(a+0,2)<>[1 2;-3 -12;5 -30]+0*%i) then pause,end
+assert_checkequal(cumprod(a,n), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a, "r"), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a+0, "r"), [1 2;-3 8;-15 -48]+0*%i);
+
+n="r";
+assert_checkequal(cumprod(a, n), [1 2;-3 8;-15 -48]+0*%i);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 8;-15 -48]+0*%i);
+
+assert_checkequal(cumprod(a, 2), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a+0, 2), [1 2;-3 -12;5 -30]+0*%i);
+
 n=2;
-if or(cumprod(a,n)<>[1 2;-3 -12;5 -30]+0*%i) then pause,end
-if or(cumprod(a+0,n)<>[1 2;-3 -12;5 -30]+0*%i) then pause,end
-if or(cumprod(a,'c')<>[1 2;-3 -12;5 -30]+0*%i) then pause,end
-if or(cumprod(a+0,'c')<>[1 2;-3 -12;5 -30]+0*%i) then pause,end
-n='c';
-if or(cumprod(a,n)<>[1 2;-3 -12;5 -30]+0*%i) then pause,end
-if or(cumprod(a+0,n)<>[1 2;-3 -12;5 -30]+0*%i) then pause,end
+assert_checkequal(cumprod(a,n), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a, "c"), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a+0, "c"), [1 2;-3 -12;5 -30]+0*%i);
+
+n="c";
+assert_checkequal(cumprod(a, n), [1 2;-3 -12;5 -30]+0*%i);
+assert_checkequal(cumprod(a+0, n), [1 2;-3 -12;5 -30]+0*%i);
 
 a=[];
-if cumprod(a)<>[] then pause,end
-if cumprod([])<>[] then pause,end
-if cumprod(a,1)<>[] then pause,end
-if cumprod([],1)<>[] then pause,end
+assert_checkequal(cumprod(a), []);
+assert_checkequal(cumprod([]), []);
+assert_checkequal(cumprod(a, 1), []);
+assert_checkequal(cumprod([], 1), []);
+
 n=1;
-if cumprod(a,n)<>[] then pause,end
-if cumprod([],n)<>[] then pause,end
-if cumprod(a,'r')<>[] then pause,end
-if cumprod([],'r')<>[] then pause,end
-n='r';
-if cumprod(a,n)<>[] then pause,end
-if cumprod([],n)<>[] then pause,end
-
-if cumprod(a,2)<>[] then pause,end
-if cumprod([],2)<>[] then pause,end
+assert_checkequal(cumprod(a,n), []);
+assert_checkequal(cumprod([], n), []);
+assert_checkequal(cumprod(a, "r"), []);
+assert_checkequal(cumprod([], "r"), []);
+
+n="r";
+assert_checkequal(cumprod(a,n), []);
+assert_checkequal(cumprod([], n), []);
+
+assert_checkequal(cumprod(a,2), []);
+assert_checkequal(cumprod([], 2), []);
+
 n=2;
-if cumprod(a,n)<>[] then pause,end
-if cumprod([],n)<>[] then pause,end
-if cumprod(a,'c')<>[] then pause,end
-if cumprod([],'c')<>[] then pause,end
-n='c';
-if cumprod(a,n)<>[] then pause,end
-if cumprod([],n)<>[] then pause,end
+assert_checkequal(cumprod(a,n), []);
+assert_checkequal(cumprod([], n), []);
+assert_checkequal(cumprod(a, "c"), []);
+assert_checkequal(cumprod([], "c"), []);
+
+n="c";
+assert_checkequal(cumprod(a,n), []);
+assert_checkequal(cumprod([], n), []);
 
 
 a=sparse([1 2;-3 4;5 -6]);
-//if cumprod(a)<> [1 -30;-3 -120;-15 720] then pause,end
-//if cumprod(a+0*a)<> [1 -30;-3 -120;-15 720] then pause,end
+assert_checkequal(cumprod(a), sparse([1 -30;-3 -120;-15 720]));
+assert_checkequal(cumprod(a+0*a), sparse([1 -30;-3 -120;-15 720]));
+
 a=sparse([1 2;-3 4;5 -6]+0*%i);
-//if cumprod(a)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
-//if cumprod(a+0*a)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
+assert_checkequal(cumprod(a), sparse([1 -30;-3 -120;-15 720]+0*%i));
+assert_checkequal(cumprod(a+0*a), sparse([1 -30;-3 -120;-15 720]+0*%i));
 
 //maxi
 a=[1 2;-3 4;5 -6];
-if or(max(a)<>5) then pause,end
-if or(max(a+0)<>5) then pause,end
-if or(max(a,'r')<>[5 4]) then pause,end
-if or(max(a+0,'r')<>[5 4]) then pause,end
-n='r';
-if or(max(a,n)<>[5 4]) then pause,end
-if or(max(a+0,n)<>[5 4]) then pause,end
-
-if or(max(a,'c')<>[2;4;5]) then pause,end
-if or(max(a+0,'c')<>[2;4;5]) then pause,end
-n='c';
-if or(max(a,n)<>[2;4;5]) then pause,end
-if or(max(a+0,n)<>[2;4;5]) then pause,end
+assert_checkequal(max(a), 5);
+assert_checkequal(max(a+0), 5);
+assert_checkequal(max(a, "r"), [5 4]);
+assert_checkequal(max(a+0, "r"), [5 4]);
 
-//a=[1 2;-3 4;5 -6]+0*%i;
+n="r";
+assert_checkequal(max(a,n), [5 4]);
+assert_checkequal(max(a+0, n), [5 4]);
+
+assert_checkequal(max(a, "c"), [2;4;5]);
+assert_checkequal(max(a+0, "c"), [2;4;5]);
+
+n="c";
+assert_checkequal(max(a, n), [2;4;5]);
+assert_checkequal(max(a+0, n), [2;4;5]);
+
+a=[1 2;-3 4;5 -6]+0*%i;
 //if max(a)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
 //if max(a+0)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
 //if or(max(a,'r')<>[5 4]+0*%i) then pause,end
@@ -848,25 +934,27 @@ if or(max(a+0,n)<>[2;4;5]) then pause,end
 //if or(max(a+0,n)<>[2;4;5]+0*%i) then pause,end
 
 a=[];
-if max(a)<>[] then pause,end
-if max([])<>[] then pause,end
+assert_checkequal(max(a), []);
+assert_checkequal(max([]), []);
+
+assert_checkequal(max(a, "r"), []);
+assert_checkequal(max([], "r"), []);
 
-if max(a,'r')<>[] then pause,end
-if max([],'r')<>[] then pause,end
-n='r';
-if max(a,n)<>[] then pause,end
-if max([],n)<>[] then pause,end
+n="r";
+assert_checkequal(max(a,n), []);
+assert_checkequal(max([], n), []);
 
-if max(a,'c')<>[] then pause,end
-if max([],'c')<>[] then pause,end
-n='c';
-if max(a,n)<>[] then pause,end
-if max([],n)<>[] then pause,end
+assert_checkequal(max(a, "c"), []);
+assert_checkequal(max([], "c"), []);
 
+n="c";
+assert_checkequal(max(a,n), []);
+assert_checkequal(max([], n), []);
 
 a=sparse([1 2;-3 4;5 -6]);
-//if max(a)<>5 then pause,end
-//if max(a+0*a)<>5 then pause,end
+assert_checkequal(max(a), 5);
+assert_checkequal(max(a+0*a), 5);
+
 a=sparse([1 2;-3 4;5 -6]+0*%i);
 //if max(a)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
 //if max(a+0*a)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
@@ -874,19 +962,21 @@ a=sparse([1 2;-3 4;5 -6]+0*%i);
 
 //mini
 a=[1 2;-3 4;5 -6];
-if or(min(a)<>-6) then pause,end
-if or(min(a+0)<>-6) then pause,end
-if or(min(a,'r')<>[-3 -6]) then pause,end
-if or(min(a+0,'r')<>[-3 -6]) then pause,end
-n='r';
-if or(min(a,n)<>[-3 -6]) then pause,end
-if or(min(a+0,n)<>[-3 -6]) then pause,end
-
-if or(min(a,'c')<>[1;-3;-6]) then pause,end
-if or(min(a+0,'c')<>[1;-3;-6]) then pause,end
-n='c';
-if or(min(a,n)<>[1;-3;-6]) then pause,end
-if or(min(a+0,n)<>[1;-3;-6]) then pause,end
+assert_checkequal(min(a), -6);
+assert_checkequal(min(a+0), -6);
+assert_checkequal(min(a, "r"), [-3 -6]);
+assert_checkequal(min(a+0, "r"), [-3 -6]);
+
+n="r";
+assert_checkequal(min(a,n), [-3 -6]);
+assert_checkequal(min(a+0, n), [-3 -6]);
+
+assert_checkequal(min(a, "c"), [1;-3;-6]);
+assert_checkequal(min(a+0, "c"), [1;-3;-6]);
+
+n="c";
+assert_checkequal(min(a,n), [1;-3;-6]);
+assert_checkequal(min(a+0,n), [1;-3;-6]);
 
 //a=[1 2;-3 4;5 -6]+0*%i;
 //if min(a)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
@@ -904,191 +994,199 @@ if or(min(a+0,n)<>[1;-3;-6]) then pause,end
 //if or(min(a+0,n)<>[1;-3;-6]+0*%i) then pause,end
 
 a=[];
-if min(a)<>[] then pause,end
-if min([])<>[] then pause,end
+assert_checkequal(min(a), []);
+assert_checkequal(min([]), []);
+assert_checkequal(min(a, "r"), []);
+assert_checkequal(min([], "r"), []);
 
-if min(a,'r')<>[] then pause,end
-if min([],'r')<>[] then pause,end
-n='r';
-if min(a,n)<>[] then pause,end
-if min([],n)<>[] then pause,end
+n="r";
+assert_checkequal(min(a, n), []);
+assert_checkequal(min([], n), []);
+assert_checkequal(min(a, "c"), []);
+assert_checkequal(min([], "c"), []);
 
-if min(a,'c')<>[] then pause,end
-if min([],'c')<>[] then pause,end
-n='c';
-if min(a,n)<>[] then pause,end
-if min([],n)<>[] then pause,end
+n="c";
+assert_checkequal(min(a, n), []);
+assert_checkequal(min([], n), []);
 
 
 a=sparse([1 2;-3 4;5 -6]);
-//if min(a)<>-6 then pause,end
-//if min(a+0*a)<>-6 then pause,end
+assert_checkequal(min(a), -6);
+assert_checkequal(min(a+0*a), -6);
+
 a=sparse([1 2;-3 4;5 -6]+0*%i);
 //if min(a)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
 //if min(a+0*a)<>[1 -30;-3 -120;-15 720]+0*%i then pause,end
 
 //kron
 a=[1 2];b=[3;4];
-if or(kron(a,b)<>[3 6;4 8]) then pause,end
-if or(kron(a+0,b)<>[3 6;4 8]) then pause,end
-if or(kron(a,b+0)<>[3 6;4 8]) then pause,end
-if or(kron(a+0,b+0)<>[3 6;4 8]) then pause,end
-if kron([],b)<>[] then pause,end
-if kron([],b+0)<>[] then pause,end
+assert_checkequal(kron(a,b), [3 6;4 8]);
+assert_checkequal(kron(a+0,b), [3 6;4 8]);
+assert_checkequal(kron(a,b+0), [3 6;4 8]);
+assert_checkequal(kron(a+0,b+0), [3 6;4 8]);
+assert_checkequal(kron([], b), []);
+assert_checkequal(kron([], b+0), []);
+
 a=[];
-if kron(a,b)<>[] then pause,end
-if kron(a,b+0)<>[] then pause,end
-a=[1 2];b=[]
-if kron(a,b)<>[] then pause,end
-if kron(a+0,b)<>[] then pause,end
-if kron(a,[])<>[] then pause,end
-if kron(a+0,[])<>[] then pause,end
+assert_checkequal(kron(a,b), []);
+assert_checkequal(kron(a,b+0), []);
+
+a=[1 2];b=[];
+assert_checkequal(kron(a,b), []);
+assert_checkequal(kron(a+0,b), []);
+assert_checkequal(kron(a,[]), []);
+assert_checkequal(kron(a+0, []), []);
+
 a=[];b=[];
-if kron(a,b)<>[] then pause,end
-if kron(a,[])<>[] then pause,end
-if kron([],b)<>[] then pause,end
-if kron([],[])<>[] then pause,end
+assert_checkequal(kron(a,b), []);
+assert_checkequal(kron(a,[]), []);
+assert_checkequal(kron([], b), []);
+assert_checkequal(kron([], []), []);
 
 //matrix
 a=[1 2 3 4 5 6];
 n=1;m=6;
-if or(matrix(a,1,6)<>a) then pause,end
-if or(matrix(a,n,6)<>a) then pause,end
-if or(matrix(a,1,m)<>a) then pause,end
-if or(matrix(a,n,m)<>a) then pause,end
-if or(matrix(a+0,1,6)<>a) then pause,end
-if or(matrix(a+0,n,6)<>a) then pause,end
-if or(matrix(a+0,1,m)<>a) then pause,end
-if or(matrix(a+0,n,m)<>a) then pause,end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+0,1,6), a);
+assert_checkequal(matrix(a+0,n,6), a);
+assert_checkequal(matrix(a+0,1,m), a);
+assert_checkequal(matrix(a+0,n,m), a);
 
 n=3;m=2; b=[1 4;2 5;3 6];
-if or(matrix(a,3,2)<>b) then pause,end
-if or(matrix(a,n,2)<>b) then pause,end
-if or(matrix(a,3,m)<>b) then pause,end
-if or(matrix(a,n,m)<>b) then pause,end
-if or(matrix(a+0,3,2)<>b) then pause,end
-if or(matrix(a+0,n,2)<>b) then pause,end
-if or(matrix(a+0,3,m)<>b) then pause,end
-if or(matrix(a+0,n,m)<>b) then pause,end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+0,3,2), b);
+assert_checkequal(matrix(a+0,n,2), b);
+assert_checkequal(matrix(a+0,3,m), b);
+assert_checkequal(matrix(a+0,n,m), b);
 
 a=[1+%i 2 3 4 5 6];
 n=1;m=6;
-if or(matrix(a,1,6)<>a) then pause,end
-if or(matrix(a,n,6)<>a) then pause,end
-if or(matrix(a,1,m)<>a) then pause,end
-if or(matrix(a,n,m)<>a) then pause,end
-if or(matrix(a+0,1,6)<>a) then pause,end
-if or(matrix(a+0,n,6)<>a) then pause,end
-if or(matrix(a+0,1,m)<>a) then pause,end
-if or(matrix(a+0,n,m)<>a) then pause,end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+0,1,6), a);
+assert_checkequal(matrix(a+0,n,6), a);
+assert_checkequal(matrix(a+0,1,m), a);
+assert_checkequal(matrix(a+0,n,m), a);
 
 n=3;m=2; b=[1+%i 4;2 5;3 6];
-if or(matrix(a,3,2)<>b) then pause,end
-if or(matrix(a,n,2)<>b) then pause,end
-if or(matrix(a,3,m)<>b) then pause,end
-if or(matrix(a,n,m)<>b) then pause,end
-if or(matrix(a+0,3,2)<>b) then pause,end
-if or(matrix(a+0,n,2)<>b) then pause,end
-if or(matrix(a+0,3,m)<>b) then pause,end
-if or(matrix(a+0,n,m)<>b) then pause,end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+0,3,2), b);
+assert_checkequal(matrix(a+0,n,2), b);
+assert_checkequal(matrix(a+0,3,m), b);
+assert_checkequal(matrix(a+0,n,m), b);
 
 a=string([1 2 3 4 5 6]);n=1;m=6;
-if or(matrix(a,1,6)<>a) then pause,end
-if or(matrix(a,n,6)<>a) then pause,end
-if or(matrix(a,1,m)<>a) then pause,end
-if or(matrix(a,n,m)<>a) then pause,end
-if or(matrix(a+a,1,6)<>a+a) then pause,end
-if or(matrix(a+a,n,6)<>a+a) then pause,end
-if or(matrix(a+a,1,m)<>a+a) then pause,end
-if or(matrix(a+a,n,m)<>a+a) then pause,end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+a,1,6), a+a);
+assert_checkequal(matrix(a+a,n,6), a+a);
+assert_checkequal(matrix(a+a,1,m), a+a);
+assert_checkequal(matrix(a+a,n,m), a+a);
 
 n=3;m=2; b=string([1 4;2 5;3 6]);
-if or(matrix(a,3,2)<>b) then pause,end
-if or(matrix(a,n,2)<>b) then pause,end
-if or(matrix(a,3,m)<>b) then pause,end
-if or(matrix(a,n,m)<>b) then pause,end
-if or(matrix(a+a,3,2)<>b+b) then pause,end
-if or(matrix(a+a,n,2)<>b+b) then pause,end
-if or(matrix(a+a,3,m)<>b+b) then pause,end
-if or(matrix(a+a,n,m)<>b+b) then pause,end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+a,3,2), b+b);
+assert_checkequal(matrix(a+a,n,2), b+b);
+assert_checkequal(matrix(a+a,3,m), b+b);
+assert_checkequal(matrix(a+a,n,m), b+b);
 
 a=[1 2 3 4 5 6]+%s;
 n=1;m=6;
-if or(matrix(a,1,6)<>a) then pause,end
-if or(matrix(a,n,6)<>a) then pause,end
-if or(matrix(a,1,m)<>a) then pause,end
-if or(matrix(a,n,m)<>a) then pause,end
-if or(matrix(a+0,1,6)<>a) then pause,end
-if or(matrix(a+0,n,6)<>a) then pause,end
-if or(matrix(a+0,1,m)<>a) then pause,end
-if or(matrix(a+0,n,m)<>a) then pause,end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+0,1,6), a);
+assert_checkequal(matrix(a+0,n,6), a);
+assert_checkequal(matrix(a+0,1,m), a);
+assert_checkequal(matrix(a+0,n,m), a);
 
 n=3;m=2; b=[1 4;2 5;3 6]+%s;
-if or(matrix(a,3,2)<>b) then pause,end
-if or(matrix(a,n,2)<>b) then pause,end
-if or(matrix(a,3,m)<>b) then pause,end
-if or(matrix(a,n,m)<>b) then pause,end
-if or(matrix(a+0,3,2)<>b) then pause,end
-if or(matrix(a+0,n,2)<>b) then pause,end
-if or(matrix(a+0,3,m)<>b) then pause,end
-if or(matrix(a+0,n,m)<>b) then pause,end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+0,3,2), b);
+assert_checkequal(matrix(a+0,n,2), b);
+assert_checkequal(matrix(a+0,3,m), b);
+assert_checkequal(matrix(a+0,n,m), b);
 
 a=[1+%i 2 3 4 5 6]+%s;
 n=1;m=6;
-if or(matrix(a,1,6)<>a) then pause,end
-if or(matrix(a,n,6)<>a) then pause,end
-if or(matrix(a,1,m)<>a) then pause,end
-if or(matrix(a,n,m)<>a) then pause,end
-if or(matrix(a+0,1,6)<>a) then pause,end
-if or(matrix(a+0,n,6)<>a) then pause,end
-if or(matrix(a+0,1,m)<>a) then pause,end
-if or(matrix(a+0,n,m)<>a) then pause,end
+assert_checkequal(matrix(a,1,6), a);
+assert_checkequal(matrix(a,n,6), a);
+assert_checkequal(matrix(a,1,m), a);
+assert_checkequal(matrix(a,n,m), a);
+assert_checkequal(matrix(a+0,1,6), a);
+assert_checkequal(matrix(a+0,n,6), a);
+assert_checkequal(matrix(a+0,1,m), a);
+assert_checkequal(matrix(a+0,n,m), a);
 
 n=3;m=2; b=[1+%i 4;2 5;3 6]+%s;
-if or(matrix(a,3,2)<>b) then pause,end
-if or(matrix(a,n,2)<>b) then pause,end
-if or(matrix(a,3,m)<>b) then pause,end
-if or(matrix(a,n,m)<>b) then pause,end
-if or(matrix(a+0,3,2)<>b) then pause,end
-if or(matrix(a+0,n,2)<>b) then pause,end
-if or(matrix(a+0,3,m)<>b) then pause,end
-if or(matrix(a+0,n,m)<>b) then pause,end
+assert_checkequal(matrix(a,3,2), b);
+assert_checkequal(matrix(a,n,2), b);
+assert_checkequal(matrix(a,3,m), b);
+assert_checkequal(matrix(a,n,m), b);
+assert_checkequal(matrix(a+0,3,2), b);
+assert_checkequal(matrix(a+0,n,2), b);
+assert_checkequal(matrix(a+0,3,m), b);
+assert_checkequal(matrix(a+0,n,m), b);
 
 //clean
 a=[1 1.d-12 1.d-5 2d8];
 b=[1 0 0 2d8];
-if or(clean(a)<>b) then pause,end
-if or(clean(a+0)<>b) then pause,end
+assert_checkequal(clean(a), b);
+assert_checkequal(clean(a+0), b);
+
 epsa=1.d-10;
-if or(clean(a,epsa)<>b) then pause,end
-if or(clean(a+0,epsa)<>b) then pause,end
-if or(clean(a,epsa+0)<>b) then pause,end
-if or(clean(a+0,epsa+0)<>b) then pause,end
+assert_checkequal(clean(a,epsa), b);
+assert_checkequal(clean(a+0, epsa), b);
+assert_checkequal(clean(a, epsa+0), b);
+assert_checkequal(clean(a+0, epsa+0), b);
+
 epsr=1.d-5;b=[0 0 0 2d8];
-if or(clean(a,epsa,epsr)<>b) then pause,end
-if or(clean(a+0,epsa,epsr)<>b) then pause,end
-if or(clean(a,epsa+0,epsr)<>b) then pause,end
-if or(clean(a+0,epsa,epsr+0)<>b) then pause,end
-if or(clean(a,epsa+0,epsr)<>b) then pause,end
-if or(clean(a+0,epsa,epsr+0)<>b) then pause,end
-if or(clean(a,epsa+0,epsr)<>b) then pause,end
-if or(clean(a+0,epsa+0,epsr+0)<>b) then pause,end
+assert_checkequal(clean(a,epsa,epsr), b);
+assert_checkequal(clean(a+0,epsa,epsr), b);
+assert_checkequal(clean(a,epsa+0,epsr), b);
+assert_checkequal(clean(a,epsa,epsr+0), b);
+assert_checkequal(clean(a+0,epsa+0,epsr), b);
+assert_checkequal(clean(a+0,epsa,epsr+0), b);
+assert_checkequal(clean(a,epsa+0,epsr+0), b);
+assert_checkequal(clean(a+0,epsa+0,epsr+0), b);
 
 a=[1+%i 1.d-12 1.d-5 2d8];
 b=[1+%i 0 0 2d8];
-if or(clean(a)<>b) then pause,end
-if or(clean(a+0)<>b) then pause,end
+assert_checkequal(clean(a), b);
+assert_checkequal(clean(a+0), b);
+
 epsa=1.d-10;
-if or(clean(a,epsa)<>b) then pause,end
-if or(clean(a+0,epsa)<>b) then pause,end
-if or(clean(a,epsa+0)<>b) then pause,end
-if or(clean(a+0,epsa+0)<>b) then pause,end
+assert_checkequal(clean(a,epsa), b);
+assert_checkequal(clean(a+0,epsa), b);
+assert_checkequal(clean(a,epsa+0), b);
+assert_checkequal(clean(a+0,epsa+0), b);
+
 epsr=1.d-5;b=[0+0*%i 0 0 2d8];
-if or(clean(a,epsa,epsr)<>b) then pause,end
-if or(clean(a+0,epsa,epsr)<>b) then pause,end
-if or(clean(a,epsa+0,epsr)<>b) then pause,end
-if or(clean(a+0,epsa,epsr+0)<>b) then pause,end
-if or(clean(a,epsa+0,epsr)<>b) then pause,end
-if or(clean(a+0,epsa,epsr+0)<>b) then pause,end
-if or(clean(a,epsa+0,epsr)<>b) then pause,end
-if or(clean(a+0,epsa+0,epsr+0)<>b) then pause,end
+assert_checkequal(clean(a,epsa,epsr), b);
+assert_checkequal(clean(a+0,epsa,epsr), b);
+assert_checkequal(clean(a,epsa+0,epsr), b);
+assert_checkequal(clean(a,epsa,epsr+0), b);
+assert_checkequal(clean(a+0,epsa+0,epsr), b);
+assert_checkequal(clean(a+0,epsa,epsr+0), b);
+assert_checkequal(clean(a,epsa+0,epsr+0), b);
+assert_checkequal(clean(a+0,epsa+0,epsr+0), b);
index d1fa54f..83f0d09 100644 (file)
@@ -6,7 +6,7 @@
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 // <-- CLI SHELL MODE -->
-// prod 
+// prod
 // Check error
 d=[1 10;254 9];
 assert_checkfalse(execstr("prod(d, ""orient"")"   ,"errcatch") == 0);
@@ -62,7 +62,7 @@ refMsg = msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n
 assert_checkerror("prod(d,""r"", [""nat"" ""dble""])", refMsg);
 assert_checkfalse(execstr("prod(d,""orient"", ""t"")"   ,"errcatch") == 0);
 refMsg = msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),..
-            "prod",2,"""*"",""r"",""c"",""m""");
+"prod",2,"""*"",""r"",""c"",""m""");
 assert_checkerror("prod(d,""orient"", ""t"")", refMsg);
 assert_checkfalse(execstr("prod(d,1,1)"   ,"errcatch") == 0);
 refMsg = msprintf(_("%s: Wrong type for input argument #%d: A string expected.\n"),"prod",3);
@@ -123,18 +123,18 @@ assert_checkfalse(execstr("prod(d, [""r"", ""c""])"   ,"errcatch") == 0);
 refMsg = msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n"),"prod",2);
 assert_checkerror("prod(d, [""r"", ""c""])", refMsg);
 //empty matrices
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
-  if prod([],typ(:))<>1 then bugmes();quit;end
-  if prod([],'*',typ(:))<>1 then bugmes();quit;end
-  if prod([],1,typ(:))<>[] then bugmes();quit;end
-  if prod([],2,typ(:))<>[] then bugmes();quit;end
-  if prod([],3,typ(:))<>[] then bugmes();quit;end
+    assert_checkequal(prod([], typ(:)), 1);
+    assert_checkequal(prod([], "*", typ(:)), 1);
+    assert_checkequal(prod([], 1, typ(:)), []);
+    assert_checkequal(prod([], 2, typ(:)), []);
+    assert_checkequal(prod([], 3, typ(:)), []);
 end
 //=======================================================================
 //float matrices
 d=[1 10;254 9];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(d, typ(:)), 22860);
     assert_checkequal(prod(d, "*", typ(:)), 22860);
@@ -144,7 +144,7 @@ for typ=T
 end
 //hypermatrices of floats
 d=[1 10;254 9];d(:,:,2)=1;
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(d, typ(:)), 22860);
     assert_checkequal(prod(d, "*", typ(:)), 22860);
@@ -156,7 +156,7 @@ end
 //=======================================================================
 //matrices of short integers
 i=uint8([1 10;254 9]);
-T=list(list(),list('native'));
+T=list(list(),list("native"));
 for typ=T
     assert_checkequal(prod(i, typ(:)), uint8(76));
     assert_checkequal(prod(i, "*", typ(:)), uint8(76));
@@ -171,7 +171,7 @@ assert_checkequal(prod(i, 2, "double"), [10;2286]);
 assert_checkequal(prod(i, 3, "double"), double(i));
 //with hypermatrices
 i=uint8([1 10;254 9]);i(:,:,2)=uint8(1);
-T = list(list(),list('native'));
+T = list(list(),list("native"));
 for typ=T
     assert_checkequal(prod(i, typ(:)), uint8(76));
     assert_checkequal(prod(i, "*", typ(:)), uint8(76));
@@ -188,7 +188,7 @@ assert_checkequal(prod(i, 3, "double"), [1,10;254,9]);
 assert_checkequal(prod(i, 5, "double"), double(i));
 //Polynomials
 s=%s;p=[s s+1;s^2 1];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(p, typ(:)), s^3+s^4);
     assert_checkequal(prod(p, "*", typ(:)), s^3+s^4);
@@ -198,7 +198,7 @@ for typ=T
 end
 //with hypermatrices
 s=%s;p=[s s+1;s^2 1];p(:,:,2)=[1 s;s+1 2];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(p, typ(:)), 2*s^4+4*s^5+2*s^6);
     assert_checkequal(prod(p, "*", typ(:)), 2*s^4+4*s^5+2*s^6);
@@ -210,7 +210,7 @@ end
 //=======================================================================
 //Matrices of rationals
 s=%s;r=1.0 ./[s s+1;s^2 1];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(r, typ(:)), 1.0/(s^3+s^4));
     assert_checkequal(prod(r, "*", typ(:)), 1.0/(s^3+s^4));
@@ -221,7 +221,7 @@ end
 //=======================================================================
 //Matrices of booleans
 b=[%t %t; %f %t];
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(prod(b, typ(:)), 0);
     assert_checkequal(prod(b, "*", typ(:)), 0);
@@ -234,9 +234,9 @@ assert_checkequal(prod(b, "*", "native"), %f);
 assert_checkequal(prod(b, 1, "native"), [%f %t]);
 assert_checkequal(prod(b, 2, "native"), [%t;%f]);
 assert_checkequal(prod(b, 3, "native"), b);
-//with hypermatrices   
+//with hypermatrices
 b=[%t %t;%f %t];b(1,1,2)=%t;
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(prod(b, typ(:)), 0);
     assert_checkequal(prod(b, "*", typ(:)), 0);
@@ -254,7 +254,7 @@ assert_checkequal(prod(b, 5, "native"), b);
 //=======================================================================
 //sparse matrices of floats
 s=sparse([1 10 2;-1 254 9]);
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(s, typ(:)), -45720);
     assert_checkequal(prod(s, "*", typ(:)), -45720);
@@ -265,7 +265,7 @@ end
 //=======================================================================
 //sparse  matrices of boolean
 bs=sparse([%t %t %f;%t %t %t]);
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(prod(bs, typ(:)), 0);
     assert_checkequal(prod(bs, "*", typ(:)), 0);
index 439630b..3923376 100644 (file)
@@ -7,7 +7,7 @@
 // =============================================================================
 
 // <-- CLI SHELL MODE -->
-// prod 
+// prod
 // Check error
 d=[1 10;254 9];
 assert_checkfalse(execstr("prod(d, ""orient"")"   ,"errcatch") == 0);
@@ -77,7 +77,7 @@ assert_checkerror("prod(d,""r"", [""nat"" ""dble""])", refMsg);
 
 assert_checkfalse(execstr("prod(d,""orient"", ""t"")"   ,"errcatch") == 0);
 refMsg = msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),..
-            "prod",2,"""*"",""r"",""c"",""m""");
+"prod",2,"""*"",""r"",""c"",""m""");
 assert_checkerror("prod(d,""orient"", ""t"")", refMsg);
 
 assert_checkfalse(execstr("prod(d,1,1)"   ,"errcatch") == 0);
@@ -152,19 +152,19 @@ refMsg = msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n
 assert_checkerror("prod(d, [""r"", ""c""])", refMsg);
 
 //empty matrices
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
-  if prod([],typ(:))<>1 then pause,end
-  if prod([],'*',typ(:))<>1 then pause,end
-  if prod([],1,typ(:))<>[] then pause,end
-  if prod([],2,typ(:))<>[] then pause,end
-  if prod([],3,typ(:))<>[] then pause,end
+    assert_checkequal(prod([], typ(:)), 1);
+    assert_checkequal(prod([], "*", typ(:)), 1);
+    assert_checkequal(prod([], 1, typ(:)), []);
+    assert_checkequal(prod([], 2, typ(:)), []);
+    assert_checkequal(prod([], 3, typ(:)), []);
 end
 
 //=======================================================================
 //float matrices
 d=[1 10;254 9];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(d, typ(:)), 22860);
     assert_checkequal(prod(d, "*", typ(:)), 22860);
@@ -176,7 +176,7 @@ end
 
 //hypermatrices of floats
 d=[1 10;254 9];d(:,:,2)=1;
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(d, typ(:)), 22860);
     assert_checkequal(prod(d, "*", typ(:)), 22860);
@@ -189,7 +189,7 @@ end
 //=======================================================================
 //matrices of short integers
 i=uint8([1 10;254 9]);
-T=list(list(),list('native'));
+T=list(list(),list("native"));
 for typ=T
     assert_checkequal(prod(i, typ(:)), uint8(76));
     assert_checkequal(prod(i, "*", typ(:)), uint8(76));
@@ -206,7 +206,7 @@ assert_checkequal(prod(i, 3, "double"), double(i));
 
 //with hypermatrices
 i=uint8([1 10;254 9]);i(:,:,2)=uint8(1);
-T = list(list(),list('native'));
+T = list(list(),list("native"));
 for typ=T
     assert_checkequal(prod(i, typ(:)), uint8(76));
     assert_checkequal(prod(i, "*", typ(:)), uint8(76));
@@ -225,7 +225,7 @@ assert_checkequal(prod(i, 5, "double"), double(i));
 
 //Polynomials
 s=%s;p=[s s+1;s^2 1];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(p, typ(:)), s^3+s^4);
     assert_checkequal(prod(p, "*", typ(:)), s^3+s^4);
@@ -235,7 +235,7 @@ for typ=T
 end
 //with hypermatrices
 s=%s;p=[s s+1;s^2 1];p(:,:,2)=[1 s;s+1 2];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(p, typ(:)), 2*s^4+4*s^5+2*s^6);
     assert_checkequal(prod(p, "*", typ(:)), 2*s^4+4*s^5+2*s^6);
@@ -248,7 +248,7 @@ end
 //=======================================================================
 //Matrices of rationals
 s=%s;r=1.0 ./[s s+1;s^2 1];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(r, typ(:)), 1.0/(s^3+s^4));
     assert_checkequal(prod(r, "*", typ(:)), 1.0/(s^3+s^4));
@@ -260,7 +260,7 @@ end
 //=======================================================================
 //Matrices of booleans
 b=[%t %t; %f %t];
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(prod(b, typ(:)), 0);
     assert_checkequal(prod(b, "*", typ(:)), 0);
@@ -275,9 +275,9 @@ assert_checkequal(prod(b, 1, "native"), [%f %t]);
 assert_checkequal(prod(b, 2, "native"), [%t;%f]);
 assert_checkequal(prod(b, 3, "native"), b);
 
-//with hypermatrices   
+//with hypermatrices
 b=[%t %t;%f %t];b(1,1,2)=%t;
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(prod(b, typ(:)), 0);
     assert_checkequal(prod(b, "*", typ(:)), 0);
@@ -297,7 +297,7 @@ assert_checkequal(prod(b, 5, "native"), b);
 //=======================================================================
 //sparse matrices of floats
 s=sparse([1 10 2;-1 254 9]);
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(prod(s, typ(:)), -45720);
     assert_checkequal(prod(s, "*", typ(:)), -45720);
@@ -309,7 +309,7 @@ end
 //=======================================================================
 //sparse  matrices of boolean
 bs=sparse([%t %t %f;%t %t %t]);
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(prod(bs, typ(:)), 0);
     assert_checkequal(prod(bs, "*", typ(:)), 0);
index 95f2b76..da328ba 100644 (file)
@@ -128,7 +128,7 @@ assert_checkfalse(execstr("sum(d, [""r"", ""c""])"   ,"errcatch") == 0);
 refMsg = msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n"),"sum",2);
 assert_checkerror("sum(d, [""r"", ""c""])", refMsg);
 //empty matrices
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum([], typ(:)), 0);
     assert_checkequal(sum([], "*", typ(:)), 0);
@@ -139,7 +139,7 @@ end
 //=======================================================================
 //float matrices
 d=[1 10;254 9];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum(d, typ(:)), 274);
     assert_checkequal(sum(d, "*", typ(:)), 274);
@@ -161,7 +161,7 @@ end
 //matrices of short integers
 // Caution : uint8([11;263]) is equal to uint8([11;7])
 i=uint8([1 10;254 9]);
-T = list(list(),list('native'));
+T = list(list(),list("native"));
 for typ=T
     assert_checkequal(sum(i, typ(:)), uint8(274));
     assert_checkequal(sum(i, "*", typ(:)), uint8(274));
@@ -176,7 +176,7 @@ assert_checkequal(sum(i, 2, "double"), [11; 263]);
 assert_checkequal(sum(i, 3, "double"), double(i));
 //with hypermatrices
 i(1,1,2)=uint8(1);
-T = list(list(),list('native'));
+T = list(list(),list("native"));
 for typ=T
     assert_checkequal(sum(i, typ(:)), uint8(275));
     assert_checkequal(sum(i, "*", typ(:)), uint8(275));
@@ -194,7 +194,7 @@ assert_checkequal(sum(i, 3, "double"), [2,10;254,9]);
 //Matrices of polynomials
 s=%s;
 p=[s s+1;s^2 0];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum(p, typ(:)), 1+2*s+s^2);
     assert_checkequal(sum(p, "*", typ(:)), 1+2*s+s^2);
@@ -216,7 +216,7 @@ end
 //Matrices of rationals
 s=%s;
 r=1.0 ./[s s+1;s^2 1];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum(r, typ(:)), (1+2*s+3*s^2+s^3)./(s^2+s^3));
     assert_checkequal(sum(r, "*", typ(:)), (1+2*s+3*s^2+s^3)./(s^2+s^3));
@@ -227,7 +227,7 @@ end
 //=======================================================================
 ///Matrices of boolean
 b=[%t %t %f %t];
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(sum(b, typ(:)), 3);
     assert_checkequal(sum(b, "*", typ(:)), 3);
@@ -240,9 +240,9 @@ assert_checkequal(sum(b, "*", "native"), %t);
 assert_checkequal(sum(b, 1, "native"), b);
 assert_checkequal(sum(b, 2, "native"), %t);
 assert_checkequal(sum(b, 3, "native"), b);
-//with hypermatrices 
+//with hypermatrices
 b=[%t %t %f %t];b(1,1,2)=%f;
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(sum(b, typ(:)), 3);
     assert_checkequal(sum(b, "*", typ(:)), 3);
@@ -260,7 +260,7 @@ assert_checkequal(sum(b, 5, "native"), b);
 //=======================================================================
 //sparse matrices of floats
 s=sparse([1 10 0;0 254 9]);
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum(s, typ(:)), 274);
     assert_checkequal(sum(s, "*", typ(:)), 274);
@@ -271,7 +271,7 @@ end
 //=======================================================================
 //sparse  matrices of boolean
 bs=sparse([1 10 0;0 254 9])<>0;
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(sum(bs, typ(:)), 4);
     assert_checkequal(sum(bs, "*", typ(:)), 4);
index 42bac2c..82120eb 100644 (file)
@@ -159,7 +159,7 @@ refMsg = msprintf(_("%s: Wrong size for input argument #%d: A string expected.\n
 assert_checkerror("sum(d, [""r"", ""c""])", refMsg);
 
 //empty matrices
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum([], typ(:)), 0);
     assert_checkequal(sum([], "*", typ(:)), 0);
@@ -171,7 +171,7 @@ end
 //=======================================================================
 //float matrices
 d=[1 10;254 9];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum(d, typ(:)), 274);
     assert_checkequal(sum(d, "*", typ(:)), 274);
@@ -195,7 +195,7 @@ end
 //matrices of short integers
 // Caution : uint8([11;263]) is equal to uint8([11;7])
 i=uint8([1 10;254 9]);
-T = list(list(),list('native'));
+T = list(list(),list("native"));
 for typ=T
     assert_checkequal(sum(i, typ(:)), uint8(274));
     assert_checkequal(sum(i, "*", typ(:)), uint8(274));
@@ -212,7 +212,7 @@ assert_checkequal(sum(i, 3, "double"), double(i));
 
 //with hypermatrices
 i(1,1,2)=uint8(1);
-T = list(list(),list('native'));
+T = list(list(),list("native"));
 for typ=T
     assert_checkequal(sum(i, typ(:)), uint8(275));
     assert_checkequal(sum(i, "*", typ(:)), uint8(275));
@@ -232,7 +232,7 @@ assert_checkequal(sum(i, 3, "double"), [2,10;254,9]);
 //Matrices of polynomials
 s=%s;
 p=[s s+1;s^2 0];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum(p, typ(:)), 1+2*s+s^2);
     assert_checkequal(sum(p, "*", typ(:)), 1+2*s+s^2);
@@ -256,7 +256,7 @@ end
 //Matrices of rationals
 s=%s;
 r=1.0 ./[s s+1;s^2 1];
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum(r, typ(:)), (1+2*s+3*s^2+s^3)./(s^2+s^3));
     assert_checkequal(sum(r, "*", typ(:)), (1+2*s+3*s^2+s^3)./(s^2+s^3));
@@ -269,7 +269,7 @@ end
 ///Matrices of boolean
 
 b=[%t %t %f %t];
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(sum(b, typ(:)), 3);
     assert_checkequal(sum(b, "*", typ(:)), 3);
@@ -284,9 +284,9 @@ assert_checkequal(sum(b, 1, "native"), b);
 assert_checkequal(sum(b, 2, "native"), %t);
 assert_checkequal(sum(b, 3, "native"), b);
 
-//with hypermatrices 
+//with hypermatrices
 b=[%t %t %f %t];b(1,1,2)=%f;
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(sum(b, typ(:)), 3);
     assert_checkequal(sum(b, "*", typ(:)), 3);
@@ -306,7 +306,7 @@ assert_checkequal(sum(b, 5, "native"), b);
 //=======================================================================
 //sparse matrices of floats
 s=sparse([1 10 0;0 254 9]);
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
 for typ=T
     assert_checkequal(sum(s, typ(:)), 274);
     assert_checkequal(sum(s, "*", typ(:)), 274);
@@ -318,7 +318,7 @@ end
 //=======================================================================
 //sparse  matrices of boolean
 bs=sparse([1 10 0;0 254 9])<>0;
-T = list(list(),list('double'));
+T = list(list(),list("double"));
 for typ=T
     assert_checkequal(sum(bs, typ(:)), 4);
     assert_checkequal(sum(bs, "*", typ(:)), 4);
index 61e5a2b..c411893 100644 (file)
@@ -31,7 +31,7 @@ exec SCI/modules/elementary_functions/tests/unit_tests/prod.tst
  
 // <-- CLI SHELL MODE 
  
-// prod 
+// prod
  
 // Check error
  
@@ -156,7 +156,7 @@ assert_checkerror("prod(d,""r"", [""nat"" ""dble""])", refMsg);
 assert_checkfalse(execstr("prod(d,""orient"", ""t"")"   ,"errcatch") == 0);
  
 refMsg = msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),..
-            "prod",2,"""*"",""r"",""c"",""m""");
+"prod",2,"""*"",""r"",""c"",""m""");
  
 assert_checkerror("prod(d,""orient"", ""t"")", refMsg);
  
@@ -287,14 +287,14 @@ assert_checkerror("prod(d, [""r"", ""c""])", refMsg);
  
 //empty matrices
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
-  if prod([],typ(:))<>1 then pause,end
-  if prod([],'*',typ(:))<>1 then pause,end
-  if prod([],1,typ(:))<>[] then pause,end
-  if prod([],2,typ(:))<>[] then pause,end
-  if prod([],3,typ(:))<>[] then pause,end
+    assert_checkequal(prod([], typ(:)), 1);
+    assert_checkequal(prod([], "*", typ(:)), 1);
+    assert_checkequal(prod([], 1, typ(:)), []);
+    assert_checkequal(prod([], 2, typ(:)), []);
+    assert_checkequal(prod([], 3, typ(:)), []);
 end
  
  
@@ -304,7 +304,7 @@ end
  
 d=[1 10;254 9];
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(d, typ(:)), 22860);
@@ -320,7 +320,7 @@ end
  
 d=[1 10;254 9];d(:,:,2)=1;
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(d, typ(:)), 22860);
@@ -338,7 +338,7 @@ end
  
 i=uint8([1 10;254 9]);
  
-T=list(list(),list('native'));
+T=list(list(),list("native"));
  
 for typ=T
     assert_checkequal(prod(i, typ(:)), uint8(76));
@@ -364,7 +364,7 @@ assert_checkequal(prod(i, 3, "double"), double(i));
  
 i=uint8([1 10;254 9]);i(:,:,2)=uint8(1);
  
-T = list(list(),list('native'));
+T = list(list(),list("native"));
  
 for typ=T
     assert_checkequal(prod(i, typ(:)), uint8(76));
@@ -393,7 +393,7 @@ assert_checkequal(prod(i, 5, "double"), double(i));
  
 s=%s;p=[s s+1;s^2 1];
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(p, typ(:)), s^3+s^4);
@@ -407,7 +407,7 @@ end
  
 s=%s;p=[s s+1;s^2 1];p(:,:,2)=[1 s;s+1 2];
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(p, typ(:)), 2*s^4+4*s^5+2*s^6);
@@ -425,7 +425,7 @@ end
  
 s=%s;r=1.0 ./[s s+1;s^2 1];
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(r, typ(:)), 1.0/(s^3+s^4));
@@ -442,7 +442,7 @@ end
  
 b=[%t %t; %f %t];
  
-T = list(list(),list('double'));
+T = list(list(),list("double"));
  
 for typ=T
     assert_checkequal(prod(b, typ(:)), 0);
@@ -464,11 +464,11 @@ assert_checkequal(prod(b, 2, "native"), [%t;%f]);
 assert_checkequal(prod(b, 3, "native"), b);
  
  
-//with hypermatrices   
+//with hypermatrices
  
 b=[%t %t;%f %t];b(1,1,2)=%t;
  
-T = list(list(),list('double'));
+T = list(list(),list("double"));
  
 for typ=T
     assert_checkequal(prod(b, typ(:)), 0);
@@ -499,7 +499,7 @@ assert_checkequal(prod(b, 5, "native"), b);
  
 s=sparse([1 10 2;-1 254 9]);
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(s, typ(:)), -45720);
@@ -516,7 +516,7 @@ end
  
 bs=sparse([%t %t %f;%t %t %t]);
  
-T = list(list(),list('double'));
+T = list(list(),list("double"));
  
 for typ=T
     assert_checkequal(prod(bs, typ(:)), 0);
@@ -1090,7 +1090,7 @@ exec SCI/modules/elementary_functions/tests/unit_tests/prod.tst
  
 // <-- CLI SHELL MODE 
  
-// prod 
+// prod
  
 // Check error
  
@@ -1215,7 +1215,7 @@ assert_checkerror("prod(d,""r"", [""nat"" ""dble""])", refMsg);
 assert_checkfalse(execstr("prod(d,""orient"", ""t"")"   ,"errcatch") == 0);
  
 refMsg = msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),..
-            "prod",2,"""*"",""r"",""c"",""m""");
+"prod",2,"""*"",""r"",""c"",""m""");
  
 assert_checkerror("prod(d,""orient"", ""t"")", refMsg);
  
@@ -1346,14 +1346,14 @@ assert_checkerror("prod(d, [""r"", ""c""])", refMsg);
  
 //empty matrices
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
-  if prod([],typ(:))<>1 then pause,end
-  if prod([],'*',typ(:))<>1 then pause,end
-  if prod([],1,typ(:))<>[] then pause,end
-  if prod([],2,typ(:))<>[] then pause,end
-  if prod([],3,typ(:))<>[] then pause,end
+    assert_checkequal(prod([], typ(:)), 1);
+    assert_checkequal(prod([], "*", typ(:)), 1);
+    assert_checkequal(prod([], 1, typ(:)), []);
+    assert_checkequal(prod([], 2, typ(:)), []);
+    assert_checkequal(prod([], 3, typ(:)), []);
 end
  
  
@@ -1363,7 +1363,7 @@ end
  
 d=[1 10;254 9];
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(d, typ(:)), 22860);
@@ -1379,7 +1379,7 @@ end
  
 d=[1 10;254 9];d(:,:,2)=1;
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(d, typ(:)), 22860);
@@ -1397,7 +1397,7 @@ end
  
 i=uint8([1 10;254 9]);
  
-T=list(list(),list('native'));
+T=list(list(),list("native"));
  
 for typ=T
     assert_checkequal(prod(i, typ(:)), uint8(76));
@@ -1423,7 +1423,7 @@ assert_checkequal(prod(i, 3, "double"), double(i));
  
 i=uint8([1 10;254 9]);i(:,:,2)=uint8(1);
  
-T = list(list(),list('native'));
+T = list(list(),list("native"));
  
 for typ=T
     assert_checkequal(prod(i, typ(:)), uint8(76));
@@ -1452,7 +1452,7 @@ assert_checkequal(prod(i, 5, "double"), double(i));
  
 s=%s;p=[s s+1;s^2 1];
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(p, typ(:)), s^3+s^4);
@@ -1466,7 +1466,7 @@ end
  
 s=%s;p=[s s+1;s^2 1];p(:,:,2)=[1 s;s+1 2];
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(p, typ(:)), 2*s^4+4*s^5+2*s^6);
@@ -1484,7 +1484,7 @@ end
  
 s=%s;r=1.0 ./[s s+1;s^2 1];
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(r, typ(:)), 1.0/(s^3+s^4));
@@ -1501,7 +1501,7 @@ end
  
 b=[%t %t; %f %t];
  
-T = list(list(),list('double'));
+T = list(list(),list("double"));
  
 for typ=T
     assert_checkequal(prod(b, typ(:)), 0);
@@ -1523,11 +1523,11 @@ assert_checkequal(prod(b, 2, "native"), [%t;%f]);
 assert_checkequal(prod(b, 3, "native"), b);
  
  
-//with hypermatrices   
+//with hypermatrices
  
 b=[%t %t;%f %t];b(1,1,2)=%t;
  
-T = list(list(),list('double'));
+T = list(list(),list("double"));
  
 for typ=T
     assert_checkequal(prod(b, typ(:)), 0);
@@ -1558,7 +1558,7 @@ assert_checkequal(prod(b, 5, "native"), b);
  
 s=sparse([1 10 2;-1 254 9]);
  
-T=list(list(),list('native'),list('double'));
+T=list(list(),list("native"),list("double"));
  
 for typ=T
     assert_checkequal(prod(s, typ(:)), -45720);
@@ -1575,7 +1575,7 @@ end
  
 bs=sparse([%t %t %f;%t %t %t]);
  
-T = list(list(),list('double'));
+T = list(list(),list("double"));
  
 for typ=T
     assert_checkequal(prod(bs, typ(:)), 0);
index 94e0fc8..ccb19a1 100644 (file)
             in each entry of the column vector s of type size(x,'c')x1
             the sum of each row of x (ignoring the NANs).
         </para>
-        <para>
-            For the  last two cases,  if a row  or column is  in whole
-            composed of NAN, the corresponding place of s will contain
-            a NAN.
-        </para>
     </refsection>
     <refsection>
         <title>Examples</title>
index 96cfa85..c1248d7 100644 (file)
@@ -1,5 +1,6 @@
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2001 - INRIA - Carlos Klimann
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
@@ -24,18 +25,37 @@ function s=nansum(x,orient)
     //in each entry of the column vector s of type size(x,'c')x1
     //the sum of each row of x (ignoring the NANs).
     //
-    //For the  last two cases,  if a row  or column is  in whole
-    //composed of NAN, the corresponding place of s will contain
-    //a NAN.
-    //
     //
     //fixed: 2003/09/03
     //error texts and all NAN rows or columns
     //
-    if argn(2)==0 then error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"nansum",1,2)), end
-    if argn(2)==1 then  orient="*",end
+    rhs = argn(2);
+    if rhs < 1 | rhs > 2 then
+        error(msprintf(gettext("%s: Wrong number of input argument(s): %d to %d expected.\n"),"nansum",1,2))
+    end
+
+    if or(type(x) == [10 15 16]) then
+        error(msprintf(gettext("%s: Wrong type for input argument #%d: Real or complex, boolean, polynomial matrix expected.\n"), "nansum", 1));
+    end
+
+    if isempty(x) | and(isnan(x)) then
+        s = 0;
+        return
+    end
+
+    if rhs == 1 then
+        orient = "*";
+    else
+        if and(type(orient) <> [1  10])  then
+            error(msprintf(gettext("%s: Wrong type for input argument #%d: A string or scalar expected.\n"), "nansum", 2));
+        end
+
+        if ~or(orient == ["r", "*", "c"] | orient == [1, 2]) then
+            error(msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "nansum", 2, """r"", ""c"", ""*"", 1, 2"));
+        end
+    end
+
     isn=isnan(x)
     x(isn)=0
     s=sum(x,orient)
-    s(find(and(isn,orient)))=%nan
 endfunction
diff --git a/scilab/modules/statistics/tests/nonreg_tests/bug_7916.dia.ref b/scilab/modules/statistics/tests/nonreg_tests/bug_7916.dia.ref
new file mode 100644 (file)
index 0000000..f3bfec1
--- /dev/null
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7916 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7916
+//
+// <-- Short Description -->
+//    nansum([]) returned NaN value.
+// =============================================================================
+assert_checkequal(sum([]), 0);
+assert_checkequal(nansum([]), 0);
+assert_checkequal(nansum(%nan), 0);
+assert_checkequal(nansum([%nan %nan; 1 2]), 3);
+assert_checkequal(nansum([%nan %nan; 1 2], "*"), 3);
+assert_checkequal(nansum([%nan %nan; 1 2], "r"), [1 2]);
+assert_checkequal(nansum([%nan %nan; 1 2], "c"), [0; 3]);
+assert_checkequal(nansum([%nan %nan; 1 2], 1), [1 2]);
+assert_checkequal(nansum([%nan %nan; 1 2], 2), [0; 3]);
diff --git a/scilab/modules/statistics/tests/nonreg_tests/bug_7916.tst b/scilab/modules/statistics/tests/nonreg_tests/bug_7916.tst
new file mode 100644 (file)
index 0000000..4e4f271
--- /dev/null
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 7916 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7916
+//
+// <-- Short Description -->
+//    nansum([]) returned NaN value.
+// =============================================================================
+
+assert_checkequal(sum([]), 0);
+assert_checkequal(nansum([]), 0);
+assert_checkequal(nansum(%nan), 0);
+assert_checkequal(nansum([%nan %nan; 1 2]), 3);
+assert_checkequal(nansum([%nan %nan; 1 2], "*"), 3);
+assert_checkequal(nansum([%nan %nan; 1 2], "r"), [1 2]);
+assert_checkequal(nansum([%nan %nan; 1 2], "c"), [0; 3]);
+assert_checkequal(nansum([%nan %nan; 1 2], 1), [1 2]);
+assert_checkequal(nansum([%nan %nan; 1 2], 2), [0; 3]);
diff --git a/scilab/modules/statistics/tests/unit_tests/nansum.dia.ref b/scilab/modules/statistics/tests/unit_tests/nansum.dia.ref
new file mode 100644 (file)
index 0000000..5834a74
--- /dev/null
@@ -0,0 +1,48 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// unit tests for nansum function 
+// =============================================================================
+assert_checkfalse(execstr("nansum()"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "nansum", 1, 2);
+assert_checkerror("nansum()", refMsg);
+assert_checkfalse(execstr("nansum(""s"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: Real or complex, boolean, polynomial matrix expected.\n"), "nansum", 1);
+assert_checkerror("nansum(""s"")", refMsg);
+assert_checkfalse(execstr("nansum(1, ""p"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "nansum", 2, """r"", ""c"", ""*"", 1, 2");
+assert_checkerror("nansum(1, ""p"")", refMsg);
+assert_checkfalse(execstr("nansum(1, %s)"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A string or scalar expected.\n"), "nansum", 2);
+assert_checkerror("nansum(1, %s)", refMsg);
+assert_checkequal(nansum([]), 0);
+assert_checkequal(nansum(%nan), 0);
+assert_checkequal(nansum([%nan %nan; 1 1]), 2);
+assert_checkequal(nansum([%nan %nan; 1 1], "r"), [1 1]);
+assert_checkequal(nansum([%nan %nan; 1 1], "c"), [0; 2]);
+assert_checkequal(nansum([%nan %nan; 1 1], 1), [1 1]);
+assert_checkequal(nansum([%nan %nan; 1 1], 2), [0; 2]);
+assert_checkequal(nansum([%nan 1; %nan 1]), 2);
+assert_checkequal(nansum([%nan 1; %nan 1], "r"), [0 2]);
+assert_checkequal(nansum([%nan 1; %nan 1], "c"), [1; 1]);
+assert_checkequal(nansum([%nan 1; %nan 1], 1), [0 2]);
+assert_checkequal(nansum([%nan 1; %nan 1], 2), [1; 1]);
+assert_checkequal(nansum([1 3; %nan 6]), 10);
+assert_checkequal(nansum([1 3; %nan 6], "r"), [1 9]);
+assert_checkequal(nansum([1 3; %nan 6], "c"), [4; 6]);
+assert_checkequal(nansum([1 3; %nan 6], 1), [1 9]);
+assert_checkequal(nansum([1 3; %nan 6], 2), [4; 6]);
+assert_checkequal(nansum([%nan %s; 1 1]), 2+%s);
+assert_checkequal(nansum([%nan %s; 1 1], "r"), [1 1+%s]);
+assert_checkequal(nansum([%nan %s; 1 1], "c"), [%s; 2]);
+assert_checkequal(nansum([%nan %s; 1 1], 1), [1 1+%s]);
+assert_checkequal(nansum([%nan %s; 1 1], 2), [%s; 2]);
+assert_checkequal(nansum([%nan %t]), 1);
+assert_checkequal(nansum([%nan %t], "r"), [0 1]);
+assert_checkequal(nansum([%nan %t], "c"), 1);
+assert_checkequal(nansum([%nan %t], 1), [0 1]);
+assert_checkequal(nansum([%nan %t], 2), 1);
diff --git a/scilab/modules/statistics/tests/unit_tests/nansum.tst b/scilab/modules/statistics/tests/unit_tests/nansum.tst
new file mode 100644 (file)
index 0000000..b22a623
--- /dev/null
@@ -0,0 +1,59 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// unit tests for nansum function
+// =============================================================================
+
+assert_checkfalse(execstr("nansum()"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "nansum", 1, 2);
+assert_checkerror("nansum()", refMsg);
+
+assert_checkfalse(execstr("nansum(""s"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: Real or complex, boolean, polynomial matrix expected.\n"), "nansum", 1);
+assert_checkerror("nansum(""s"")", refMsg);
+
+assert_checkfalse(execstr("nansum(1, ""p"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "nansum", 2, """r"", ""c"", ""*"", 1, 2");
+assert_checkerror("nansum(1, ""p"")", refMsg);
+
+assert_checkfalse(execstr("nansum(1, %s)"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A string or scalar expected.\n"), "nansum", 2);
+assert_checkerror("nansum(1, %s)", refMsg);
+
+assert_checkequal(nansum([]), 0);
+assert_checkequal(nansum(%nan), 0);
+assert_checkequal(nansum([%nan %nan; 1 1]), 2);
+assert_checkequal(nansum([%nan %nan; 1 1], "r"), [1 1]);
+assert_checkequal(nansum([%nan %nan; 1 1], "c"), [0; 2]);
+assert_checkequal(nansum([%nan %nan; 1 1], 1), [1 1]);
+assert_checkequal(nansum([%nan %nan; 1 1], 2), [0; 2]);
+
+assert_checkequal(nansum([%nan 1; %nan 1]), 2);
+assert_checkequal(nansum([%nan 1; %nan 1], "r"), [0 2]);
+assert_checkequal(nansum([%nan 1; %nan 1], "c"), [1; 1]);
+assert_checkequal(nansum([%nan 1; %nan 1], 1), [0 2]);
+assert_checkequal(nansum([%nan 1; %nan 1], 2), [1; 1]);
+
+assert_checkequal(nansum([1 3; %nan 6]), 10);
+assert_checkequal(nansum([1 3; %nan 6], "r"), [1 9]);
+assert_checkequal(nansum([1 3; %nan 6], "c"), [4; 6]);
+assert_checkequal(nansum([1 3; %nan 6], 1), [1 9]);
+assert_checkequal(nansum([1 3; %nan 6], 2), [4; 6]);
+
+assert_checkequal(nansum([%nan %s; 1 1]), 2+%s);
+assert_checkequal(nansum([%nan %s; 1 1], "r"), [1 1+%s]);
+assert_checkequal(nansum([%nan %s; 1 1], "c"), [%s; 2]);
+assert_checkequal(nansum([%nan %s; 1 1], 1), [1 1+%s]);
+assert_checkequal(nansum([%nan %s; 1 1], 2), [%s; 2]);
+
+assert_checkequal(nansum([%nan %t]), 1);
+assert_checkequal(nansum([%nan %t], "r"), [0 1]);
+assert_checkequal(nansum([%nan %t], "c"), 1);
+assert_checkequal(nansum([%nan %t], 1), [0 1]);
+assert_checkequal(nansum([%nan %t], 2), 1);