The field dt in rlist was not initialized. Update rational test, detr test 68/12068/5
Adeline CARNIS [Fri, 19 Jul 2013 08:22:01 +0000 (10:22 +0200)]
added and update detr help page

This reverts commit 193f43aec0ff9d8ccc09458efbb1ff31fc5beb60.

Change-Id: Id5690e89b6a57f9ad071668f065a8ac4520cd4f8

scilab/modules/data_structures/macros/%_rlist.sci [new file with mode: 0644]
scilab/modules/data_structures/sci_gateway/c/sci_rlist.c
scilab/modules/data_structures/src/c/core_Import.def
scilab/modules/overloading/macros/%r_o_r.sci
scilab/modules/overloading/tests/unit_tests/rational.dia.ref
scilab/modules/overloading/tests/unit_tests/rational.tst
scilab/modules/polynomials/help/en_US/detr.xml
scilab/modules/polynomials/help/fr_FR/detr.xml
scilab/modules/polynomials/macros/detr.sci
scilab/modules/polynomials/tests/unit_tests/detr.dia.ref [new file with mode: 0644]
scilab/modules/polynomials/tests/unit_tests/detr.tst [new file with mode: 0644]

diff --git a/scilab/modules/data_structures/macros/%_rlist.sci b/scilab/modules/data_structures/macros/%_rlist.sci
new file mode 100644 (file)
index 0000000..2747ef6
--- /dev/null
@@ -0,0 +1,12 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// 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
+// you should have received as part of this distribution.  The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+
+function r = %_rlist(n, d)
+    r = rlist(n, d, []);
+endfunction
index aa747d2..4858112 100644 (file)
 
 /*--------------------------------------------------------------------------*/
 #include "gw_data_structures1.h"
+#include <api_scilab.h>
 /*--------------------------------------------------------------------------*/
 extern int C2F(rattyp)(); /* fortran */
 extern int C2F(mtlist)(); /* fortran */
 /*--------------------------------------------------------------------------*/
 int sci_rlist(char *fname, unsigned long fname_len)
 {
-    C2F(mtlist)(C2F(rattyp));
-    return 0;
+    if (nbInputArgument(pvApiCtx) == 2)
+    {
+        int lw = 0;
+        C2F(overload)(&lw, fname, fname_len);
+        return 0;
+    }
+    else
+    {
+        C2F(mtlist)(C2F(rattyp));
+        return 0;
+    }
+
+
 }
 /*--------------------------------------------------------------------------*/
index 33302f6..6cbd7d8 100644 (file)
@@ -11,10 +11,11 @@ function r=%r_o_r(l1,l2)
     // l1==l2 with l1 and l2 rationals
     //!
     //r=l1('dt')==l2('dt')&l1('num')==l2('num')&(l1('den')==l2('den')|l1('num')==0)
-
-    if varn([l1("num"),l1("den")])~=varn([l2("num"),l2("den")]) then
-        r=%f;
-    else
-        r=(l1("dt")==l2("dt"))&((l1-l2)==0)
-    end
+    r = and((l1.num == l2.num))&and((l1.den==l2.den))&(l1.dt==l2.dt);
+    
+//    if varn([l1("num"),l1("den")])~=varn([l2("num"),l2("den")]) then
+//        r=%f;
+//    else
+//        r=(l1("dt")==l2("dt"))&(numer(l1-l2)==0)
+//    end
 endfunction
index 4457269..a703a7a 100644 (file)
 // =============================================================================
 // <-- CLI SHELL MODE -->
 s=poly(0,'s');
+z = s^0;
 h=1/(2*s);
-if or(size(h)<>[1 1]) then bugmes();quit;end
-if h.num<>1|h.den<>2*s then bugmes();quit;end
-h=1/(2*s);
-if h.num<>1|h.den<>2*s then bugmes();quit;end
+assert_checkequal(size(h), [1 1]);
+assert_checkequal(h.num, 1*z);
+assert_checkequal(h.den, 2*s);
 //basic operations with 2D matrices
 H=[h h];
-if or(H.num<>[1 1])|or(H.den<>[2*s 2*s]) then bugmes();quit;end
+assert_checkequal(H.num, [1 1].*z);
+assert_checkequal(H.den, [2*s 2*s]);
 H=[h;h];
-if or(H.num<>[1;1])|or(H.den<>[2*s;2*s]) then bugmes();quit;end
+assert_checkequal(H.num, [1;1].*z);
+assert_checkequal(H.den, [2*s;2*s]);
 H=[h 3];
-if or(H.num<>[1 3])|or(H.den<>[2*s 1]) then bugmes();quit;end
+assert_checkequal(H.num, [1*z 3]);
+assert_checkequal(H.den, [2*s 1]);
 H=[h;5];
-if or(H.num<>[1;5])|or(H.den<>[2*s;1]) then bugmes();quit;end
+assert_checkequal(H.num, [1*z;5]);
+assert_checkequal(H.den, [2*s;1]);
 H=[3 h];
-if or(H.num<>[3 1])|or(H.den<>[1 2*s]) then bugmes();quit;end
+assert_checkequal(H.num, [3 1*z]);
+assert_checkequal(H.den, [1 2*s]);
 H=[5;h];
-if or(H.num<>[5;1])|or(H.den<>[1;2*s]) then bugmes();quit;end
+assert_checkequal(H.num, [5;1*z]);
+assert_checkequal(H.den, [1;2*s]);
 H=[3 h;s 2];
-if H(1,1)<>3 then bugmes();quit;end
-if H(1,2)<>h then bugmes();quit;end
-if or(H(1,[2 1])<>[h 3]) then bugmes();quit;end
-if or(H(1,[2 2])<>[h h]) then bugmes();quit;end
-if or(H(1,:)<>[3 h]) then bugmes();quit;end
-if or(H(:,1)<>[3;s]) then bugmes();quit;end
-if or(H([2 1],:)<>[s 2;3 h]) then bugmes();quit;end
-if or(H([1 1],:)<>[3 h;3 h]) then bugmes();quit;end
-if or(matrix(H,-1,1)<>[3;s;h;2]) then bugmes();quit;end
+assert_checkequal(H(1,1), rlist(3,1));
+assert_checkequal(H(1,2), h);
+assert_checkequal(H(1, [2 1]), [h rlist(3,1)]);
+assert_checkequal(H(1, [2 2]), [h h]);
+assert_checkequal(H(1,:), [rlist(3,1) h]);
+assert_checkequal(H(:,1), [rlist(3,1); s]);
+assert_checkequal(H([2 1], :), [s rlist(2,1);rlist(3,1) h]);
+assert_checkequal(H([1 1], :), [rlist(3,1) h;rlist(3,1) h]);
+assert_checkequal(matrix(H, -1, 1), [3*z;s;h;2*z]);
 H=h;H(1,3)=1/s;
-if or(H.num<>[1 0 1])|or(H.den<>[2*s 1 s]) then bugmes();quit;end
+assert_checkequal(H.num, [1 0 1].*z);
+assert_checkequal(H.den, [2*s 1 s]);
 H=h;H(3,1)=1/s;
-if or(H.num<>[1 0 1]')|or(H.den<>[2*s 1 s]') then bugmes();quit;end
+assert_checkequal(H.num, [1 0 1]'.*z);
+assert_checkequal(H.den, [2*s 1 s]');
 H=h;H(1,3)=1.5;
-if or(H.num<>[1 0 1.5])|or(H.den<>[2*s 1 1]) then bugmes();quit;end
+assert_checkequal(H.num, [1 0 1.5].*z);
+assert_checkequal(H.den, [2*s 1 1]);
 H=h;H(3,1)=1.5;
-if or(H.num<>[1 0 1.5]')|or(H.den<>[2*s 1 1]') then bugmes();quit;end
+assert_checkequal(H.num, [1 0 1.5]'.*z);
+assert_checkequal(H.den, [2*s 1 1]');
 H=1.5;H(1,3)=1/s;
-if or(H.num<>[1.5 0 1])|or(H.den<>[1 1 s]) then bugmes();quit;end
+assert_checkequal(H.num, [1.5 0 1].*z);
+assert_checkequal(H.den, [1 1 s]);
 H=1.5;H(3,1)=1/s;
-if or(H.num<>[1.5 0 1]')|or(H.den<>[1 1 s]') then bugmes();quit;end
+assert_checkequal(H.num, [1.5 0 1]'.*z);
+assert_checkequal(H.den, [1 1 s]');
 H=[h s;1 h];H(:,1)=[];
-if or(H<>[s;h]) then bugmes();quit;end
+assert_checkequal(H, [s;h]);
 H=[h s;1 h];H(2,:)=[];
-if or(H<>[h s]) then bugmes();quit;end
+assert_checkequal(H, [h s]);
 H=h+h;c=coeff(H.den,1);
-if H.num/c<>1|H.den/c<>s then bugmes();quit;end
+assert_checkequal(H.num/c, 1*z);
+assert_checkequal(H.den/c, s);
 H=h+1;
-if H.num<>1+2*s|H.den<>2*s then bugmes();quit;end
+assert_checkequal(H.num, 1+2*s);
+assert_checkequal(H.den, 2*s);
 H=1+h;
-if H.num<>1+2*s|H.den<>2*s then bugmes();quit;end
+assert_checkequal(H.num, 1+2*s);
+assert_checkequal(H.den, 2*s);
 H=h+[];
-if H<>h then bugmes();quit;end
+assert_checkequal(H, h);
 H=[]+h;
-if H<>h then bugmes();quit;end
+assert_checkequal(H, h);
 H=h+s;
-if H.num<>1+2*s^2|H.den<>2*s then bugmes();quit;end
+assert_checkequal(H.num, 1+2*s^2);
+assert_checkequal(H.den, 2*s);
 H=s+h;
-if H.num<>1+2*s^2|H.den<>2*s then bugmes();quit;end
+assert_checkequal(H.num, 1+2*s^2);
+assert_checkequal(H.den, 2*s);
 H=h-h;
-if H.num<>0|H.den<>1 then bugmes();quit;end
+assert_checkequal(H.num, 0*z);
+assert_checkequal(H.den, 1*s^0);
 H=h-1;
-if H.num<>1-2*s|H.den<>2*s then bugmes();quit;end
+assert_checkequal(H.num, 1-2*s);
+assert_checkequal(H.den, 2*s);
 H=1-h;
-if H.num<>-1+2*s|H.den<>2*s then bugmes();quit;end
+assert_checkequal(H.num, -1+2*s);
+assert_checkequal(H.den, 2*s);
 H=[h h+1]-1;
-if H(1,1)<>h-1 then bugmes();quit;end
-if H(1,2)<>h then bugmes();quit;end
+assert_checkequal(H(1,1), h-1);
+assert_checkequal(H(1,2), h);
 H=[h h+1]-2*h;
-if or(H.num<>[-2 -2+4*s])|or(H.den<>[4*s 4*s]) then bugmes();quit;end
+assert_checkequal(H.num, [-2 -2+4*s]);
+assert_checkequal(H.den, [4*s 4*s]);
 H=-2*h+[h h+1];
-if or(H.num<>[-2 -2+4*s])|or(H.den<>[4*s 4*s]) then bugmes();quit;end
+assert_checkequal(H.num, [-2 -2+4*s]);
+assert_checkequal(H.den, [4*s 4*s]);
 // *
 H=h*h;
-if or(H.num<>1)|or(H.den<>4*s^2) then bugmes();quit;end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 4*s^2);
 H=h*2;
-if or(H.num<>2)|or(H.den<>2*s) then bugmes();quit;end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2*s);
 H=2*h;
-if or(H.num<>2)|or(H.den<>2*s) then bugmes();quit;end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2*s);
 H=h*s;
-if or(H.num<>1)|or(H.den<>2) then bugmes();quit;end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*z);
 H=s*h;
-if or(H.num<>1)|or(H.den<>2) then bugmes();quit;end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*z);
 H=[h h+1]*h;
-if or(H<>[h*h, (h+1)*h]) then bugmes();quit;end
+assert_checkequal(H, [h*h (h+1)*h]);
 H=h*[h h+1];
-if or(H<>[h*h, (h+1)*h]) then bugmes();quit;end
+assert_checkequal(H, [h*h, (h+1)*h]);
 H=[h h+1]*2;
-if or(H<>[h*2, (h+1)*2]) then bugmes();quit;end
+assert_checkequal(H, [h*2, (h+1)*2]);
 H=2*[h h+1];
-if or(H<>[h*2, (h+1)*2]) then bugmes();quit;end
+assert_checkequal(H, [h*2, (h+1)*2]);
 H=[h h+1]*s;
-if or(H<>[h*s, (h+1)*s]) then bugmes();quit;end
+assert_checkequal(H, [h*s, (h+1)*s]);
 H=s*[h h+1];
-if or(H<>[h*s, (h+1)*s]) then bugmes();quit;end
+assert_checkequal(H, [h*s, (h+1)*s]);
 H=[h 1;s 3]*[1;h];
-if or(H<>[h+h;s+3*h]) then bugmes();quit;end
+assert_checkequal(H, [h+h;s+3*h]);
 H=[h 1]*[h 1;s 3];
-if or(H<>[h*h+s,h+3]) then bugmes();quit;end
+assert_checkequal(H, [h*h+s, h+3]);
 H=[h 1;s 3]*[1;2];
-if or(H<>[h+2;s+6]) then bugmes();quit;end
+assert_checkequal(H, [h+2;s+6]);
 H=[2 1]*[h 1;s 3];
-if or(H<>[2*h+s,2+3]) then bugmes();quit;end
+assert_checkequal(H, [2*h+s, 2+3]);
 // .*
 H=h.*h;
-if or(H.num<>1)|or(H.den<>4*s^2) then bugmes();quit;end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 4*s^2);
 H=h.*2;
-if or(H.num<>2)|or(H.den<>2*s) then bugmes();quit;end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2*s);
 H=2 .*h;
-if or(H.num<>2)|or(H.den<>2*s) then bugmes();quit;end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2*s);
 H=h.*s;
-if or(H.num<>1)|or(H.den<>2) then bugmes();quit;end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*z);
 H=s.*h;
-if or(H.num<>1)|or(H.den<>2) then bugmes();quit;end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*z);
 H=[h h+1].*h;
-if or(H<>[h*h, (h+1)*h]) then bugmes();quit;end
+assert_checkequal(H, [h*h (h+1)*h]);
 H=h.*[h h+1];
-if or(H<>[h*h, (h+1)*h]) then bugmes();quit;end
+assert_checkequal(H, [h*h (h+1)*h]);
 H=[h h+1].*2;
-if or(H<>[h*2, (h+1)*2]) then bugmes();quit;end
+assert_checkequal(H, [h*2, (h+1)*2]);
 H=2 .*[h h+1];
-if or(H<>[h*2, (h+1)*2]) then bugmes();quit;end
+assert_checkequal(H, [h*2, (h+1)*2]);
 H=[h h+1].*s;
-if or(H<>[h*s, (h+1)*s]) then bugmes();quit;end
+assert_checkequal(H, [h*s, (h+1)*s]);
 H=s.*[h h+1];
-if or(H<>[h*s, (h+1)*s]) then bugmes();quit;end
+assert_checkequal(H, [h*s, (h+1)*s]);
 H=[3 h;s 2].*[3 h;s 2];
-if or(H<>[9 h*h;s*s 4]) then bugmes();quit;end
+assert_checkequal(H, [9 h*h; s*s 4]);
 // /
 H=h/2;
-if or(H.num<>0.5)|or(H.den<>2*s) then bugmes();quit;end
+assert_checkequal(H.num, 0.5*z);
+assert_checkequal(H.den, 2*s);
 H=h/s;
-if or(H.num<>1)|or(H.den<>2*s^2) then bugmes();quit;end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*s^2);
 H=h/(h+1);
-if or(H.num<>2)|or(H.den<>2+4*s) then bugmes();quit;end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2+4*s);
 H=[h h-1]/2;
-if or(H<>[h/2 (h-1)/2]) then bugmes();quit;end
+assert_checkequal(H, [h/2 (h-1)/2]);
 H=[h h-1]/s;
-if or(H<>[h/s (h-1)/s]) then bugmes();quit;end
+assert_checkequal(H, [h/s (h-1)/s]);
 H=1/h;
-if or(H.num<>2*s)|or(H.den<>1) then bugmes();quit;end
+assert_checkequal(H.num, 2*s);
+assert_checkequal(H.den, 1*z);
 H=[1 2]/h;
-if or(H<>[1/h 2/h]) then bugmes();quit;end
+assert_checkequal(H, [1/h 2/h]);
 H=[s+1 s-2]/h;
-if or(H<>[(s+1)/h (s-2)/h]) then bugmes();quit;end
+assert_checkequal(H, [(s+1)/h (s-2)/h]);
 H=[h+1 (h+1)*(h-1)]/h;
-if or(H<>[(h+1)/h ((h+1)*(h-1))/h]) then bugmes();quit;end
+assert_checkequal(H, [(h+1)/h ((h+1)*(h-1))/h]);
 H=(eye(2,2)/[3 h;s 2])*[3 h;s 2];
-if or(coeff(H.num)./coeff(H.den)<>eye(2,2)) then bugmes();quit;end
+assert_checkequal(coeff(H.num)./(coeff(H.den, 0) + coeff(H.den, 2)), eye(2,2));
 // ./
 H=h./2;
-if or(H.num<>0.5)|or(H.den<>2*s) then bugmes();quit;end
+assert_checkequal(H.num, 0.5*z);
+assert_checkequal(H.den, 2*s);
 H=h./s;
-if or(H.num<>1)|or(H.den<>2*s^2) then bugmes();quit;end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*s^2);
 H=h./(h+1);
-if or(H.num<>2)|or(H.den<>2+4*s) then bugmes();quit;end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2+4*s);
 H=[h h-1]./2;
-if or(H<>[h/2 (h-1)/2]) then bugmes();quit;end
+assert_checkequal(H, [h/2 (h-1)/2]);
 H=[h h-1]./s;
-if or(H<>[h/s (h-1)/s]) then bugmes();quit;end
+assert_checkequal(H, [h/s (h-1)/s]);
 H=1 ./h;
-if or(H.num<>2*s)|or(H.den<>1) then bugmes();quit;end
+assert_checkequal(H.num, 2*s);
+assert_checkequal(H.den, 1*z);
 H=[1 2]./h;
-if or(H<>[1/h 2/h]) then bugmes();quit;end
+assert_checkequal(H, [1/h 2/h]);
 H=[s+1 s-2]./h;
-if or(H<>[(s+1)/h (s-2)/h]) then bugmes();quit;end
+assert_checkequal(H, [(s+1)/h (s-2)/h]);
 H=[h+1 (h+1)*(h-1)]./h;
-if or(H<>[(h+1)/h ((h+1)*(h-1))/h]) then bugmes();quit;end
+assert_checkequal(H, [(h+1)/h ((h+1)*(h-1))/h]);
 H=[3 h;s 2]./[3 h;s 2];
-if or(coeff(H.num)./coeff(H.den)<>ones(2,2)) then bugmes();quit;end
+assert_checkequal(coeff(H.num)./coeff(H.den), ones(2,2));
 // .\
 H=2 .\h;
-if or(H.num<>0.5)|or(H.den<>2*s) then bugmes();quit;end
+assert_checkequal(H.num, 0.5*z);
+assert_checkequal(H.den, 2*s);
 H=s.\h;
-if or(H.num<>1)|or(H.den<>2*s^2) then bugmes();quit;end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*s^2);
 H=(h+1).\h;
-if or(H.num<>2)|or(H.den<>2+4*s) then bugmes();quit;end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2+4*s);
 H=2 .\[h h-1];
-if or(H<>[h/2 (h-1)/2]) then bugmes();quit;end
+assert_checkequal(H, [h/2 (h-1)/2]);
 H=s.\[h h-1];
-if or(H<>[h/s (h-1)/s]) then bugmes();quit;end
+assert_checkequal(H, [h/s (h-1)/s]);
 H=1 ./h;
-if or(H.num<>2*s)|or(H.den<>1) then bugmes();quit;end
+assert_checkequal(H.num, 2*s);
+assert_checkequal(H.den, 1*z);
 H=h.\[1 2];
-if or(H<>[1/h 2/h]) then bugmes();quit;end
+assert_checkequal(H, [1/h 2/h]);
 H=h.\[s+1 s-2];
-if or(H<>[(s+1)/h (s-2)/h]) then bugmes();quit;end
+assert_checkequal(H, [(s+1)/h (s-2)/h]);
 H=h.\[h+1 (h+1)*(h-1)];
-if or(H<>[(h+1)/h ((h+1)*(h-1))/h]) then bugmes();quit;end
+assert_checkequal(H, [(h+1)/h ((h+1)*(h-1))/h]);
 H=[3 h;s 2]./[3 h;s 2];
-if or(coeff(H.num)./coeff(H.den)<>ones(2,2)) then bugmes();quit;end
+assert_checkequal(coeff(H.num)./coeff(H.den), ones(2,2));
 // hypermatrices of rationnals
 clear H;H(1,1,2)=h;
-if H(1,1,1)<>rlist(0,1,[]) |H(1,1,2)<>h then bugmes();quit;end
+assert_checkequal(H(1,1,1), rlist(0, 1, []));
+assert_checkequal(H(1,1,2), h);
 H(2,1,2)=h+1;
-if or(size(H)<>[2 1 2]) then bugmes();quit;end
-if or(H(:,1,1)<>[0;0]) then bugmes();quit;end
-if or(H([2 2],1,2)<>[h+1;h+1]) then bugmes();quit;end
+assert_checkequal(size(H), [2 1 2]);
+assert_checkequal(H(:,1,1), rlist([0; 0], [1; 1]));
+assert_checkequal(H([2 2], 1, 2), [h+1;h+1]);
 clear H;H(1,1,2)=h;H(2,1,1)=1;
-if or(H(:,1,1)<>[0;1])|or(H(:,1,2)<>[h;0]) then bugmes();quit;end
+assert_checkequal(H(:,1,1), rlist([0; 1], [1; 1]));
+assert_checkequal(H(:,1,2), [h;0]);
 clear H;H(1,1,2)=h;H(1,1,:)=3;
-if or(H(1,1,1)<>3)|or(H(1,1,2)<>3) then bugmes();quit;end
+assert_checkequal(H(1,1,1), rlist(3,1));
+assert_checkequal(H(1,1,2), rlist(3,1));
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;
-if or(H(1:2,1,1)<>[%s;%s]) then bugmes();quit;end
+assert_checkequal(H(1:2,1,1), rlist([%s;%s], [1;1]));
 clear H;H(2,2,2)=s;H(2,1,1)=h;
-if or(H(:,:,1)<>[0 0;h 0])|or(H(:,:,2)<>[0 0;0 s]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), [0 0;h 0]);
+assert_checkequal(H(:,:,2), rlist([0 0;0 s], [1 1;1 1]));
 clear H;H(2,2,2)=8;H(2,1,1)=h;
-if or(H(:,:,1)<>[0 0;h 0])|or(H(:,:,2)<>[0 0;0 8]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), [0 0;h 0]);
+assert_checkequal(H(:,:,2), rlist([0 0;0 8], [1 1;1 1]));
 clear H;H(2,2,2)=8;H(2,1,1)=h;
 H(:,:,1)=[];
-if or(H<>[0 0;0 8]) then bugmes();quit;end
+assert_checkequal(H, rlist([0 0;0 8], [1 1;1 1]));
 clear H;H(2,2,2)=8;H(2,1,1)=h;
 H2=H(2,:,:);H(1,:,:)=[];
-if or(H<>H2) then bugmes();quit;end
+assert_checkequal(H, H2);
 clear H;H(2,2,2)=8;H(2,1,1)=h;
 H2=H(:,2,:);H(:,1,:)=[];
-if or(H<>H2) then bugmes();quit;end
+assert_checkequal(H, H2);
 clear H;H(2,2,2)=h;H=H+1;
-if or(H(:,:,1)<>ones(2,2))|or(H(:,:,2)<>[1 1;1 h+1]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([1 1;1 1], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [1 1;1 h+1]);
 clear H;H(2,2,2)=h;H=1+H;
-if or(H(:,:,1)<>ones(2,2))|or(H(:,:,2)<>[1 1;1 h+1]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([1 1;1 1], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [1 1;1 h+1]);
 clear H;H(2,2,2)=h;H=H+s;
-if or(H(:,:,1)<>s*ones(2,2))|or(H(:,:,2)<>[s s;s h+s]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s s;s s], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [s s;s h+s]);
 clear H;H(2,2,2)=h;H=s+H;
-if or(H(:,:,1)<>s*ones(2,2))|or(H(:,:,2)<>[s s;s h+s]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s s; s s], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [s s;s h+s]);
 clear H;H(2,2,2)=h;H=H-1;
-if or(H(:,:,1)<>-ones(2,2))|or(H(:,:,2)<>[-1 -1;-1 h-1]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), -1*rlist([1 1;1 1], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [-1 -1;-1 h-1]);
 clear H;H(2,2,2)=h;H=1-H;
-if or(H(:,:,1)<>ones(2,2))|or(H(:,:,2)<>[1 1;1 1-h]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([1 1;1 1], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [1 1;1 1-h]);
 clear H;H(2,2,2)=h;H=H-s;
-if or(H(:,:,1)<>-s*ones(2,2))|or(H(:,:,2)<>[-s -s;-s h-s]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([-s -s;-s -s], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [-s -s;-s h-s]);
 clear H;H(2,2,2)=h;H=s-H;
-if or(H(:,:,1)<>s*ones(2,2))|or(H(:,:,2)<>[s s;s -h+s]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s s;s s], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [s s;s -h+s]);
 clear H;H(2,2,2)=s;H(2,1,1)=h;H=H+H;
-if or(H(:,:,1)<>[0 0;h+h 0])|or(H(:,:,2)<>[0 0;0 s+s]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), [0 0;h+h 0]);
+assert_checkequal(H(:,:,2), rlist([0 0;0 s+s], [1 1;1 1]));
 clear H;H(2,2,2)=s;H(2,1,1)=h;H=H-H;
-if or(H(:,:,1)<>[0 0;0 0])|or(H(:,:,2)<>[0 0;0 0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), [0 0;h-h 0]);
+assert_checkequal(H(:,:,2), rlist([0 0;0 0], [1 1;1 1]));
 // *
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H*h;
-if or(H(:,:,1)<>[s*h;s*h])|or(H(:,:,2)<>[h*h;0]) then bugmes();quit;end
-clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=h*H;
-if or(H(:,:,1)<>[s*h;s*h])|or(H(:,:,2)<>[h*h;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), [s*h;s*h]);
+assert_checkequal(H(:,:,2), [h*h; 0/1]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H*2;
-if or(H(:,:,1)<>[s*2;s*2])|or(H(:,:,2)<>[h*2;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s*2;s*2], [1;1]));
+assert_checkequal(H(:,:,2), [h*2;0]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=2*H;
-if or(H(:,:,1)<>[s*2;s*2])|or(H(:,:,2)<>[h*2;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s*2;s*2], [1;1]));
+assert_checkequal(H(:,:,2), [h*2;0]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H*s;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*s;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*s;0]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=s*H;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*s;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*s;0]);
 // .*
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H.*h;
-if or(H(:,:,1)<>[s*h;s*h])|or(H(:,:,2)<>[h*h;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), [s*h;s*h]);
+assert_checkequal(H(:,:,2), [h*h;0/1]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=h.*H;
-if or(H(:,:,1)<>[s*h;s*h])|or(H(:,:,2)<>[h*h;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), [s*h;s*h]);
+assert_checkequal(H(:,:,2), [h*h;0/1]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H.*2;
-if or(H(:,:,1)<>[s*2;s*2])|or(H(:,:,2)<>[h*2;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s*2;s*2], [1;1]));
+assert_checkequal(H(:,:,2), [h*2;0]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=2 .*H;
-if or(H(:,:,1)<>[s*2;s*2])|or(H(:,:,2)<>[h*2;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s*2;s*2], [1;1]));
+assert_checkequal(H(:,:,2), [h*2;0]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H.*s;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*s;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*s;0]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=s.*H;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*s;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*s;0]);
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H.*H;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*h;0]) then bugmes();quit;end
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*h;0]);
index cdbf483..3685cf7 100644 (file)
 
 
 s=poly(0,'s');
+z = s^0;
 h=1/(2*s);
-if or(size(h)<>[1 1]) then pause,end
-if h.num<>1|h.den<>2*s then pause,end
-h=1/(2*s);
-if h.num<>1|h.den<>2*s then pause,end
+assert_checkequal(size(h), [1 1]);
+assert_checkequal(h.num, 1*z);
+assert_checkequal(h.den, 2*s);
 
 //basic operations with 2D matrices
 H=[h h];
-if or(H.num<>[1 1])|or(H.den<>[2*s 2*s]) then pause,end
+assert_checkequal(H.num, [1 1].*z);
+assert_checkequal(H.den, [2*s 2*s]);
+
 H=[h;h];
-if or(H.num<>[1;1])|or(H.den<>[2*s;2*s]) then pause,end
+assert_checkequal(H.num, [1;1].*z);
+assert_checkequal(H.den, [2*s;2*s]);
 
 H=[h 3];
-if or(H.num<>[1 3])|or(H.den<>[2*s 1]) then pause,end
+assert_checkequal(H.num, [1*z 3]);
+assert_checkequal(H.den, [2*s 1]);
+
 H=[h;5];
-if or(H.num<>[1;5])|or(H.den<>[2*s;1]) then pause,end
+assert_checkequal(H.num, [1*z;5]);
+assert_checkequal(H.den, [2*s;1]);
 
 H=[3 h];
-if or(H.num<>[3 1])|or(H.den<>[1 2*s]) then pause,end
+assert_checkequal(H.num, [3 1*z]);
+assert_checkequal(H.den, [1 2*s]);
+
 H=[5;h];
-if or(H.num<>[5;1])|or(H.den<>[1;2*s]) then pause,end
+assert_checkequal(H.num, [5;1*z]);
+assert_checkequal(H.den, [1;2*s]);
 
 H=[3 h;s 2];
-if H(1,1)<>3 then pause,end
-if H(1,2)<>h then pause,end
-if or(H(1,[2 1])<>[h 3]) then pause,end
-if or(H(1,[2 2])<>[h h]) then pause,end
+assert_checkequal(H(1,1), rlist(3,1));
+assert_checkequal(H(1,2), h);
+assert_checkequal(H(1, [2 1]), [h rlist(3,1)]);
+assert_checkequal(H(1, [2 2]), [h h]);
+assert_checkequal(H(1,:), [rlist(3,1) h]);
+assert_checkequal(H(:,1), [rlist(3,1); s]);
+assert_checkequal(H([2 1], :), [s rlist(2,1);rlist(3,1) h]);
+assert_checkequal(H([1 1], :), [rlist(3,1) h;rlist(3,1) h]);
 
-if or(H(1,:)<>[3 h]) then pause,end
-if or(H(:,1)<>[3;s]) then pause,end
-if or(H([2 1],:)<>[s 2;3 h]) then pause,end
-if or(H([1 1],:)<>[3 h;3 h]) then pause,end
-
-if or(matrix(H,-1,1)<>[3;s;h;2]) then pause,end
+assert_checkequal(matrix(H, -1, 1), [3*z;s;h;2*z]);
 
 H=h;H(1,3)=1/s;
-if or(H.num<>[1 0 1])|or(H.den<>[2*s 1 s]) then pause,end
+assert_checkequal(H.num, [1 0 1].*z);
+assert_checkequal(H.den, [2*s 1 s]);
 
 H=h;H(3,1)=1/s;
-if or(H.num<>[1 0 1]')|or(H.den<>[2*s 1 s]') then pause,end
+assert_checkequal(H.num, [1 0 1]'.*z);
+assert_checkequal(H.den, [2*s 1 s]');
 
 H=h;H(1,3)=1.5;
-if or(H.num<>[1 0 1.5])|or(H.den<>[2*s 1 1]) then pause,end
+assert_checkequal(H.num, [1 0 1.5].*z);
+assert_checkequal(H.den, [2*s 1 1]);
 
 H=h;H(3,1)=1.5;
-if or(H.num<>[1 0 1.5]')|or(H.den<>[2*s 1 1]') then pause,end
+assert_checkequal(H.num, [1 0 1.5]'.*z);
+assert_checkequal(H.den, [2*s 1 1]');
 
 H=1.5;H(1,3)=1/s;
-if or(H.num<>[1.5 0 1])|or(H.den<>[1 1 s]) then pause,end
+assert_checkequal(H.num, [1.5 0 1].*z);
+assert_checkequal(H.den, [1 1 s]);
+
 H=1.5;H(3,1)=1/s;
-if or(H.num<>[1.5 0 1]')|or(H.den<>[1 1 s]') then pause,end
+assert_checkequal(H.num, [1.5 0 1]'.*z);
+assert_checkequal(H.den, [1 1 s]');
 
 H=[h s;1 h];H(:,1)=[];
-if or(H<>[s;h]) then pause,end
+assert_checkequal(H, [s;h]);
 
 H=[h s;1 h];H(2,:)=[];
-if or(H<>[h s]) then pause,end
-
+assert_checkequal(H, [h s]);
 
 H=h+h;c=coeff(H.den,1);
-if H.num/c<>1|H.den/c<>s then pause,end
+assert_checkequal(H.num/c, 1*z);
+assert_checkequal(H.den/c, s);
 
 H=h+1;
-if H.num<>1+2*s|H.den<>2*s then pause,end
+assert_checkequal(H.num, 1+2*s);
+assert_checkequal(H.den, 2*s);
 
 H=1+h;
-if H.num<>1+2*s|H.den<>2*s then pause,end
+assert_checkequal(H.num, 1+2*s);
+assert_checkequal(H.den, 2*s);
 
 H=h+[];
-if H<>h then pause,end
+assert_checkequal(H, h);
+
 H=[]+h;
-if H<>h then pause,end
+assert_checkequal(H, h);
 
 H=h+s;
-if H.num<>1+2*s^2|H.den<>2*s then pause,end
+assert_checkequal(H.num, 1+2*s^2);
+assert_checkequal(H.den, 2*s);
 
 H=s+h;
-if H.num<>1+2*s^2|H.den<>2*s then pause,end
-
+assert_checkequal(H.num, 1+2*s^2);
+assert_checkequal(H.den, 2*s);
 
 H=h-h;
-if H.num<>0|H.den<>1 then pause,end
+assert_checkequal(H.num, 0*z);
+assert_checkequal(H.den, 1*s^0);
 
 H=h-1;
-if H.num<>1-2*s|H.den<>2*s then pause,end
+assert_checkequal(H.num, 1-2*s);
+assert_checkequal(H.den, 2*s);
 
 H=1-h;
-if H.num<>-1+2*s|H.den<>2*s then pause,end
+assert_checkequal(H.num, -1+2*s);
+assert_checkequal(H.den, 2*s);
 
 H=[h h+1]-1;
-if H(1,1)<>h-1 then pause,end
-if H(1,2)<>h then pause,end
+assert_checkequal(H(1,1), h-1);
+assert_checkequal(H(1,2), h);
 
 H=[h h+1]-2*h;
-if or(H.num<>[-2 -2+4*s])|or(H.den<>[4*s 4*s]) then pause,end
+assert_checkequal(H.num, [-2 -2+4*s]);
+assert_checkequal(H.den, [4*s 4*s]);
 
 H=-2*h+[h h+1];
-if or(H.num<>[-2 -2+4*s])|or(H.den<>[4*s 4*s]) then pause,end
+assert_checkequal(H.num, [-2 -2+4*s]);
+assert_checkequal(H.den, [4*s 4*s]);
 
 // *
 
 H=h*h;
-if or(H.num<>1)|or(H.den<>4*s^2) then pause,end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 4*s^2);
 
 H=h*2;
-if or(H.num<>2)|or(H.den<>2*s) then pause,end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2*s);
 
 H=2*h;
-if or(H.num<>2)|or(H.den<>2*s) then pause,end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2*s);
 
 H=h*s;
-if or(H.num<>1)|or(H.den<>2) then pause,end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*z);
 
 H=s*h;
-if or(H.num<>1)|or(H.den<>2) then pause,end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*z);
 
 H=[h h+1]*h;
-if or(H<>[h*h, (h+1)*h]) then pause,end
+assert_checkequal(H, [h*h (h+1)*h]);
 
 H=h*[h h+1];
-if or(H<>[h*h, (h+1)*h]) then pause,end
+assert_checkequal(H, [h*h, (h+1)*h]);
 
 H=[h h+1]*2;
-if or(H<>[h*2, (h+1)*2]) then pause,end
+assert_checkequal(H, [h*2, (h+1)*2]);
 
 H=2*[h h+1];
-if or(H<>[h*2, (h+1)*2]) then pause,end
-
+assert_checkequal(H, [h*2, (h+1)*2]);
 
 H=[h h+1]*s;
-if or(H<>[h*s, (h+1)*s]) then pause,end
+assert_checkequal(H, [h*s, (h+1)*s]);
 
 H=s*[h h+1];
-if or(H<>[h*s, (h+1)*s]) then pause,end
+assert_checkequal(H, [h*s, (h+1)*s]);
 
 H=[h 1;s 3]*[1;h];
-if or(H<>[h+h;s+3*h]) then pause,end
+assert_checkequal(H, [h+h;s+3*h]);
 
 H=[h 1]*[h 1;s 3];
-if or(H<>[h*h+s,h+3]) then pause,end
+assert_checkequal(H, [h*h+s, h+3]);
 
 H=[h 1;s 3]*[1;2];
-if or(H<>[h+2;s+6]) then pause,end
+assert_checkequal(H, [h+2;s+6]);
 
 H=[2 1]*[h 1;s 3];
-if or(H<>[2*h+s,2+3]) then pause,end
+assert_checkequal(H, [2*h+s, 2+3]);
 
 // .*
 
 H=h.*h;
-if or(H.num<>1)|or(H.den<>4*s^2) then pause,end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 4*s^2);
 
 H=h.*2;
-if or(H.num<>2)|or(H.den<>2*s) then pause,end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2*s);
 
 H=2 .*h;
-if or(H.num<>2)|or(H.den<>2*s) then pause,end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2*s);
 
 H=h.*s;
-if or(H.num<>1)|or(H.den<>2) then pause,end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*z);
 
 H=s.*h;
-if or(H.num<>1)|or(H.den<>2) then pause,end
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*z);
 
 H=[h h+1].*h;
-if or(H<>[h*h, (h+1)*h]) then pause,end
+assert_checkequal(H, [h*h (h+1)*h]);
 
 H=h.*[h h+1];
-if or(H<>[h*h, (h+1)*h]) then pause,end
+assert_checkequal(H, [h*h (h+1)*h]);
 
 H=[h h+1].*2;
-if or(H<>[h*2, (h+1)*2]) then pause,end
+assert_checkequal(H, [h*2, (h+1)*2]);
 
 H=2 .*[h h+1];
-if or(H<>[h*2, (h+1)*2]) then pause,end
-
+assert_checkequal(H, [h*2, (h+1)*2]);
 
 H=[h h+1].*s;
-if or(H<>[h*s, (h+1)*s]) then pause,end
+assert_checkequal(H, [h*s, (h+1)*s]);
 
 H=s.*[h h+1];
-if or(H<>[h*s, (h+1)*s]) then pause,end
+assert_checkequal(H, [h*s, (h+1)*s]);
 
 H=[3 h;s 2].*[3 h;s 2];
-if or(H<>[9 h*h;s*s 4]) then pause,end
+assert_checkequal(H, [9 h*h; s*s 4]);
 
 
 // /
 
 H=h/2;
-if or(H.num<>0.5)|or(H.den<>2*s) then pause,end
+assert_checkequal(H.num, 0.5*z);
+assert_checkequal(H.den, 2*s);
 
 H=h/s;
-if or(H.num<>1)|or(H.den<>2*s^2) then pause,end
-
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*s^2);
 
 H=h/(h+1);
-if or(H.num<>2)|or(H.den<>2+4*s) then pause,end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2+4*s);
 
 H=[h h-1]/2;
-if or(H<>[h/2 (h-1)/2]) then pause,end
+assert_checkequal(H, [h/2 (h-1)/2]);
 
 H=[h h-1]/s;
-if or(H<>[h/s (h-1)/s]) then pause,end
+assert_checkequal(H, [h/s (h-1)/s]);
 
 H=1/h;
-if or(H.num<>2*s)|or(H.den<>1) then pause,end
+assert_checkequal(H.num, 2*s);
+assert_checkequal(H.den, 1*z);
 
 H=[1 2]/h;
-if or(H<>[1/h 2/h]) then pause,end
+assert_checkequal(H, [1/h 2/h]);
 
 H=[s+1 s-2]/h;
-if or(H<>[(s+1)/h (s-2)/h]) then pause,end
+assert_checkequal(H, [(s+1)/h (s-2)/h]);
 
 H=[h+1 (h+1)*(h-1)]/h;
-if or(H<>[(h+1)/h ((h+1)*(h-1))/h]) then pause,end
+assert_checkequal(H, [(h+1)/h ((h+1)*(h-1))/h]);
 
 H=(eye(2,2)/[3 h;s 2])*[3 h;s 2];
-if or(coeff(H.num)./coeff(H.den)<>eye(2,2)) then pause,end
-
+assert_checkequal(coeff(H.num)./(coeff(H.den, 0) + coeff(H.den, 2)), eye(2,2));
 
 // ./
-
 H=h./2;
-if or(H.num<>0.5)|or(H.den<>2*s) then pause,end
+assert_checkequal(H.num, 0.5*z);
+assert_checkequal(H.den, 2*s);
 
 H=h./s;
-if or(H.num<>1)|or(H.den<>2*s^2) then pause,end
-
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*s^2);
 
 H=h./(h+1);
-if or(H.num<>2)|or(H.den<>2+4*s) then pause,end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2+4*s);
 
 H=[h h-1]./2;
-if or(H<>[h/2 (h-1)/2]) then pause,end
+assert_checkequal(H, [h/2 (h-1)/2]);
 
 H=[h h-1]./s;
-if or(H<>[h/s (h-1)/s]) then pause,end
+assert_checkequal(H, [h/s (h-1)/s]);
 
 H=1 ./h;
-if or(H.num<>2*s)|or(H.den<>1) then pause,end
+assert_checkequal(H.num, 2*s);
+assert_checkequal(H.den, 1*z);
 
 H=[1 2]./h;
-if or(H<>[1/h 2/h]) then pause,end
+assert_checkequal(H, [1/h 2/h]);
 
 H=[s+1 s-2]./h;
-if or(H<>[(s+1)/h (s-2)/h]) then pause,end
+assert_checkequal(H, [(s+1)/h (s-2)/h]);
 
 H=[h+1 (h+1)*(h-1)]./h;
-if or(H<>[(h+1)/h ((h+1)*(h-1))/h]) then pause,end
+assert_checkequal(H, [(h+1)/h ((h+1)*(h-1))/h]);
 
 H=[3 h;s 2]./[3 h;s 2];
-if or(coeff(H.num)./coeff(H.den)<>ones(2,2)) then pause,end
+assert_checkequal(coeff(H.num)./coeff(H.den), ones(2,2));
 
 // .\
 
 H=2 .\h;
-if or(H.num<>0.5)|or(H.den<>2*s) then pause,end
+assert_checkequal(H.num, 0.5*z);
+assert_checkequal(H.den, 2*s);
 
 H=s.\h;
-if or(H.num<>1)|or(H.den<>2*s^2) then pause,end
-
+assert_checkequal(H.num, 1*z);
+assert_checkequal(H.den, 2*s^2);
 
 H=(h+1).\h;
-if or(H.num<>2)|or(H.den<>2+4*s) then pause,end
+assert_checkequal(H.num, 2*z);
+assert_checkequal(H.den, 2+4*s);
 
 H=2 .\[h h-1];
-if or(H<>[h/2 (h-1)/2]) then pause,end
+assert_checkequal(H, [h/2 (h-1)/2]);
 
 H=s.\[h h-1];
-if or(H<>[h/s (h-1)/s]) then pause,end
+assert_checkequal(H, [h/s (h-1)/s]);
 
 H=1 ./h;
-if or(H.num<>2*s)|or(H.den<>1) then pause,end
+assert_checkequal(H.num, 2*s);
+assert_checkequal(H.den, 1*z);
 
 H=h.\[1 2];
-if or(H<>[1/h 2/h]) then pause,end
+assert_checkequal(H, [1/h 2/h]);
 
 H=h.\[s+1 s-2];
-if or(H<>[(s+1)/h (s-2)/h]) then pause,end
+assert_checkequal(H, [(s+1)/h (s-2)/h]);
 
 H=h.\[h+1 (h+1)*(h-1)];
-if or(H<>[(h+1)/h ((h+1)*(h-1))/h]) then pause,end
+assert_checkequal(H, [(h+1)/h ((h+1)*(h-1))/h]);
 
 H=[3 h;s 2]./[3 h;s 2];
-if or(coeff(H.num)./coeff(H.den)<>ones(2,2)) then pause,end
+assert_checkequal(coeff(H.num)./coeff(H.den), ones(2,2));
 
 // hypermatrices of rationnals
 
 clear H;H(1,1,2)=h;
-if H(1,1,1)<>rlist(0,1,[]) |H(1,1,2)<>h then pause,end
-H(2,1,2)=h+1;
-if or(size(H)<>[2 1 2]) then pause,end
+assert_checkequal(H(1,1,1), rlist(0, 1, []));
+assert_checkequal(H(1,1,2), h);
 
-if or(H(:,1,1)<>[0;0]) then pause,end
-if or(H([2 2],1,2)<>[h+1;h+1]) then pause,end
+H(2,1,2)=h+1;
+assert_checkequal(size(H), [2 1 2]);
+assert_checkequal(H(:,1,1), rlist([0; 0], [1; 1]));
+assert_checkequal(H([2 2], 1, 2), [h+1;h+1]);
 
 clear H;H(1,1,2)=h;H(2,1,1)=1;
-if or(H(:,1,1)<>[0;1])|or(H(:,1,2)<>[h;0]) then pause,end
+assert_checkequal(H(:,1,1), rlist([0; 1], [1; 1]));
+assert_checkequal(H(:,1,2), [h;0]);
 
 clear H;H(1,1,2)=h;H(1,1,:)=3;
-if or(H(1,1,1)<>3)|or(H(1,1,2)<>3) then pause,end
-
+assert_checkequal(H(1,1,1), rlist(3,1));
+assert_checkequal(H(1,1,2), rlist(3,1));
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;
-if or(H(1:2,1,1)<>[%s;%s]) then pause,end
+assert_checkequal(H(1:2,1,1), rlist([%s;%s], [1;1]));
 
 clear H;H(2,2,2)=s;H(2,1,1)=h;
-if or(H(:,:,1)<>[0 0;h 0])|or(H(:,:,2)<>[0 0;0 s]) then pause,end
+assert_checkequal(H(:,:,1), [0 0;h 0]);
+assert_checkequal(H(:,:,2), rlist([0 0;0 s], [1 1;1 1]));
 
 clear H;H(2,2,2)=8;H(2,1,1)=h;
-if or(H(:,:,1)<>[0 0;h 0])|or(H(:,:,2)<>[0 0;0 8]) then pause,end
+assert_checkequal(H(:,:,1), [0 0;h 0]);
+assert_checkequal(H(:,:,2), rlist([0 0;0 8], [1 1;1 1]));
 
 clear H;H(2,2,2)=8;H(2,1,1)=h;
 H(:,:,1)=[];
-if or(H<>[0 0;0 8]) then pause,end
+assert_checkequal(H, rlist([0 0;0 8], [1 1;1 1]));
 
 clear H;H(2,2,2)=8;H(2,1,1)=h;
 H2=H(2,:,:);H(1,:,:)=[];
-if or(H<>H2) then pause,end
+assert_checkequal(H, H2);
 
 clear H;H(2,2,2)=8;H(2,1,1)=h;
 H2=H(:,2,:);H(:,1,:)=[];
-if or(H<>H2) then pause,end
-
+assert_checkequal(H, H2);
 
 clear H;H(2,2,2)=h;H=H+1;
-if or(H(:,:,1)<>ones(2,2))|or(H(:,:,2)<>[1 1;1 h+1]) then pause,end
+assert_checkequal(H(:,:,1), rlist([1 1;1 1], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [1 1;1 h+1]);
 
 clear H;H(2,2,2)=h;H=1+H;
-if or(H(:,:,1)<>ones(2,2))|or(H(:,:,2)<>[1 1;1 h+1]) then pause,end
+assert_checkequal(H(:,:,1), rlist([1 1;1 1], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [1 1;1 h+1]);
 
 clear H;H(2,2,2)=h;H=H+s;
-if or(H(:,:,1)<>s*ones(2,2))|or(H(:,:,2)<>[s s;s h+s]) then pause,end
+assert_checkequal(H(:,:,1), rlist([s s;s s], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [s s;s h+s]);
 
 clear H;H(2,2,2)=h;H=s+H;
-if or(H(:,:,1)<>s*ones(2,2))|or(H(:,:,2)<>[s s;s h+s]) then pause,end
+assert_checkequal(H(:,:,1), rlist([s s; s s], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [s s;s h+s]);
 
 clear H;H(2,2,2)=h;H=H-1;
-if or(H(:,:,1)<>-ones(2,2))|or(H(:,:,2)<>[-1 -1;-1 h-1]) then pause,end
+assert_checkequal(H(:,:,1), -1*rlist([1 1;1 1], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [-1 -1;-1 h-1]);
 
 clear H;H(2,2,2)=h;H=1-H;
-if or(H(:,:,1)<>ones(2,2))|or(H(:,:,2)<>[1 1;1 1-h]) then pause,end
+assert_checkequal(H(:,:,1), rlist([1 1;1 1], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [1 1;1 1-h]);
 
 clear H;H(2,2,2)=h;H=H-s;
-if or(H(:,:,1)<>-s*ones(2,2))|or(H(:,:,2)<>[-s -s;-s h-s]) then pause,end
+assert_checkequal(H(:,:,1), rlist([-s -s;-s -s], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [-s -s;-s h-s]);
 
 clear H;H(2,2,2)=h;H=s-H;
-if or(H(:,:,1)<>s*ones(2,2))|or(H(:,:,2)<>[s s;s -h+s]) then pause,end
+assert_checkequal(H(:,:,1), rlist([s s;s s], [1 1;1 1]));
+assert_checkequal(H(:,:,2), [s s;s -h+s]);
 
 clear H;H(2,2,2)=s;H(2,1,1)=h;H=H+H;
-if or(H(:,:,1)<>[0 0;h+h 0])|or(H(:,:,2)<>[0 0;0 s+s]) then pause,end
+assert_checkequal(H(:,:,1), [0 0;h+h 0]);
+assert_checkequal(H(:,:,2), rlist([0 0;0 s+s], [1 1;1 1]));
 
 clear H;H(2,2,2)=s;H(2,1,1)=h;H=H-H;
-if or(H(:,:,1)<>[0 0;0 0])|or(H(:,:,2)<>[0 0;0 0]) then pause,end
+assert_checkequal(H(:,:,1), [0 0;h-h 0]);
+assert_checkequal(H(:,:,2), rlist([0 0;0 0], [1 1;1 1]));
 
 // *
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H*h;
-if or(H(:,:,1)<>[s*h;s*h])|or(H(:,:,2)<>[h*h;0]) then pause,end
-
-clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=h*H;
-if or(H(:,:,1)<>[s*h;s*h])|or(H(:,:,2)<>[h*h;0]) then pause,end
+assert_checkequal(H(:,:,1), [s*h;s*h]);
+assert_checkequal(H(:,:,2), [h*h; 0/1]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H*2;
-if or(H(:,:,1)<>[s*2;s*2])|or(H(:,:,2)<>[h*2;0]) then pause,end
+assert_checkequal(H(:,:,1), rlist([s*2;s*2], [1;1]));
+assert_checkequal(H(:,:,2), [h*2;0]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=2*H;
-if or(H(:,:,1)<>[s*2;s*2])|or(H(:,:,2)<>[h*2;0]) then pause,end
-
+assert_checkequal(H(:,:,1), rlist([s*2;s*2], [1;1]));
+assert_checkequal(H(:,:,2), [h*2;0]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H*s;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*s;0]) then pause,end
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*s;0]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=s*H;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*s;0]) then pause,end
-
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*s;0]);
 
 // .*
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H.*h;
-if or(H(:,:,1)<>[s*h;s*h])|or(H(:,:,2)<>[h*h;0]) then pause,end
+assert_checkequal(H(:,:,1), [s*h;s*h]);
+assert_checkequal(H(:,:,2), [h*h;0/1]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=h.*H;
-if or(H(:,:,1)<>[s*h;s*h])|or(H(:,:,2)<>[h*h;0]) then pause,end
+assert_checkequal(H(:,:,1), [s*h;s*h]);
+assert_checkequal(H(:,:,2), [h*h;0/1]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H.*2;
-if or(H(:,:,1)<>[s*2;s*2])|or(H(:,:,2)<>[h*2;0]) then pause,end
+assert_checkequal(H(:,:,1), rlist([s*2;s*2], [1;1]));
+assert_checkequal(H(:,:,2), [h*2;0]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=2 .*H;
-if or(H(:,:,1)<>[s*2;s*2])|or(H(:,:,2)<>[h*2;0]) then pause,end
-
+assert_checkequal(H(:,:,1), rlist([s*2;s*2], [1;1]));
+assert_checkequal(H(:,:,2), [h*2;0]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H.*s;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*s;0]) then pause,end
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*s;0]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=s.*H;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*s;0]) then pause,end
-
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*s;0]);
 
 clear H;H(1,1,2)=h;H(1:2,1,1)=%s;H=H.*H;
-if or(H(:,:,1)<>[s*s;s*s])|or(H(:,:,2)<>[h*h;0]) then pause,end
+assert_checkequal(H(:,:,1), rlist([s*s;s*s], [1;1]));
+assert_checkequal(H(:,:,2), [h*h;0]);
 
 
index c724fc2..ff03789 100644 (file)
@@ -25,7 +25,7 @@
             <varlistentry>
                 <term>h</term>
                 <listitem>
-                    <para>polynomial or rational square matrix</para>
+                    <para>double or polynomial or rational square matrix</para>
                 </listitem>
             </varlistentry>
         </variablelist>
     <refsection>
         <title>Description</title>
         <para>
-            <literal>d=detr(h)</literal> returns the determinant <literal>d</literal> of the polynomial or
-            rational function matrix <literal>h</literal>. Based on Leverrier's algorithm.
+            <literal>d=detr(h)</literal> returns the determinant <literal>d</literal> of the double
+            or polynomial or rational function matrix <literal>h</literal>.
+            Based on Leverrier's algorithm.
         </para>
     </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example">
+            <![CDATA[
+// Matrix of doubles
+A = rand(5,5);
+detr(A)
+
+A = A+%i;
+detr(A)
+
+// Matrix of polynomials
+x = poly(0, 'x')
+A = [1+x 2 5; 3 4-x 3+x; x^2 1 x];
+detr(A)
+
+// Matrix of rationals
+A = [1/x 2 3; 3 4/x 3/x; 1/x^2 1 1/x];
+detr(A)
+ ]]>
+        </programlisting>
+    </refsection>
     <refsection role="see also">
         <title>See Also</title>
         <simplelist type="inline">
index 9ff62a7..3d98742 100644 (file)
@@ -14,7 +14,8 @@
             <varlistentry>
                 <term>h  </term>
                 <listitem>
-                    <para>matrice carrée de polynômes ou de fractions rationnelles
+                    <para>
+                        matrice carrée de doubles ou de polynômes ou de fractions rationnelles.
                     </para>
                 </listitem>
             </varlistentry>
             matrice <literal>h</literal>. Basé sur l'algorithme de Leverrier.
         </para>
     </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example">
+            <![CDATA[
+// Matrice de doubles
+A = rand(5,5);
+detr(A)
+
+A = A+%i;
+detr(A)
+
+// Matrice de polynômes
+x = poly(0, 'x')
+A = [1+x 2 5; 3 4-x 3+x; x^2 1 x];
+detr(A)
+
+// Matrice de fractions rationnelles
+A = [1/x 2 3; 3 4/x 3/x; 1/x^2 1 1/x];
+detr(A)
+ ]]>
+        </programlisting>
+    </refsection>
     <refsection role="see also">
         <title>Voir aussi</title>
         <simplelist type="inline">
index 3fe4ce9..c8cfd8b 100644 (file)
@@ -12,8 +12,13 @@ function [d]=detr(h)
     //[d]=detr(h)  computes the determinant of a polynomial or
     //rational function matrix h using Leverrier's method
     //!
+    rhs = argn(2);
+    if rhs <> 1 then
+        error(msprintf(gettext("%s: Wrong number of input argument: %d expected.\n"), "detr", 1));
+    end
+    
     tof=typeof(h)
-    if or(tof==["polynomial","constant"]) then
+    if or(tof==["polynomial","constant", "rational"]) then
         [m,n]=size(h);
         if m<>n then
             error(msprintf(gettext("%s: Wrong size for input argument #%d: A square matrix expected.\n"),"detr",1))
@@ -26,19 +31,6 @@ function [d]=detr(h)
         end
         d=-sum(diag(h*f))/n;
         if 2*int(n/2)<>n then d=-d;end
-    elseif tof=="rational" then //
-        [m,n]=size(h(2));
-        if m<>n then
-            error(msprintf(gettext("%s: Wrong size for input argument #%d: A square matrix expected.\n"),"detr",1))
-        end
-        f=eye(n,n);
-        for k=1:n-1,
-            b=h*f,
-            d=0;for l=1:n,d=d+b(l,l),end,d=-d/k;
-            f=b+eye(n,n)*d,
-        end
-        b=h*f;d=0;for l=1:n,d=d+b(l,l),end;d=-d/n;
-        if 2*int(n/2)<>n then d=-d;end
     else
         error(msprintf(gettext("%s: Wrong type for input argument #%d: A floating point number or polynomial or rational fraction array expected.\n"),"detr",1))
     end
diff --git a/scilab/modules/polynomials/tests/unit_tests/detr.dia.ref b/scilab/modules/polynomials/tests/unit_tests/detr.dia.ref
new file mode 100644 (file)
index 0000000..6960835
--- /dev/null
@@ -0,0 +1,52 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// unit tests for detr function 
+// =============================================================================
+assert_checkfalse(execstr("detr()"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument: %d expected.\n"), "detr", 1);
+assert_checkerror("detr()", refMsg);
+assert_checkfalse(execstr("detr(""r"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A floating point number or polynomial or rational fraction array expected.\n"), "detr", 1);
+assert_checkerror("detr(""r"")", refMsg);
+assert_checkfalse(execstr("detr([1;2])"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong size for input argument #%d: A square matrix expected.\n"), "detr", 1);
+assert_checkerror("detr([1;2])", refMsg);
+A = [1 1;1 2];
+d = detr(A);
+assert_checkequal(d, 1);
+assert_checkequal(d, det(A));
+A = %i*A;
+d = detr(A);
+assert_checkequal(d, complex(-1, 0));
+assert_checkequal(d, det(A));
+A = [1 3 5;2 3 4;8 4 9];
+d = detr(A);
+assert_checkequal(d, -27);
+assert_checkequal(d, det(A));
+A=  A-%i;
+d = detr(A);
+assert_checkequal(d, complex(-27,9));
+assert_checkalmostequal(d, det(A), [], %eps);
+A = [1+%s 1; 1 2+%s];
+d = detr(A);
+assert_checkequal(d, 1+3*%s+%s^2);
+assert_checkequal(d, det(A));
+A = [1*%s 3 5*%s^2;2 3*%s 4; 8*%s^3 4*%s^2 9*%s];
+d = detr(A);
+assert_checkequal(d, -54*%s+107*%s^3+40*%s^4-120*%s^6);
+assert_checkalmostequal(coeff(d), coeff(det(A)), [], %eps);
+A = [1/%s 1; 1 2/%s];
+d = detr(A);
+assert_checkequal(d, (2-%s^2)/%s^2);
+assert_checkequal(d, det(A));
+A = [1/%s 3 5/%s^2;2 3/%s 4; 8/%s^3 4/%s^2 9/%s];
+d = detr(A);
+assert_checkequal(d, (-120 +40*%s^2+107*%s^3-54*%s^5)/%s^6);
+d2 = det(A);
+assert_checkalmostequal(coeff(d.num), coeff(d2.num), [], %eps);
+assert_checkalmostequal(coeff(d.den), coeff(d2.den), [], %eps);
diff --git a/scilab/modules/polynomials/tests/unit_tests/detr.tst b/scilab/modules/polynomials/tests/unit_tests/detr.tst
new file mode 100644 (file)
index 0000000..7d9599a
--- /dev/null
@@ -0,0 +1,65 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// unit tests for detr function 
+// =============================================================================
+
+assert_checkfalse(execstr("detr()"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument: %d expected.\n"), "detr", 1);
+assert_checkerror("detr()", refMsg);
+
+assert_checkfalse(execstr("detr(""r"")"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A floating point number or polynomial or rational fraction array expected.\n"), "detr", 1);
+assert_checkerror("detr(""r"")", refMsg);
+
+assert_checkfalse(execstr("detr([1;2])"   ,"errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong size for input argument #%d: A square matrix expected.\n"), "detr", 1);
+assert_checkerror("detr([1;2])", refMsg);
+
+A = [1 1;1 2];
+d = detr(A);
+assert_checkequal(d, 1);
+assert_checkequal(d, det(A));
+
+A = %i*A;
+d = detr(A);
+assert_checkequal(d, complex(-1, 0));
+assert_checkequal(d, det(A));
+
+A = [1 3 5;2 3 4;8 4 9];
+d = detr(A);
+assert_checkequal(d, -27);
+assert_checkequal(d, det(A));
+
+A=  A-%i;
+d = detr(A);
+assert_checkequal(d, complex(-27,9));
+assert_checkalmostequal(d, det(A), [], %eps);
+
+A = [1+%s 1; 1 2+%s];
+d = detr(A);
+assert_checkequal(d, 1+3*%s+%s^2);
+assert_checkequal(d, det(A));
+
+A = [1*%s 3 5*%s^2;2 3*%s 4; 8*%s^3 4*%s^2 9*%s];
+d = detr(A);
+assert_checkequal(d, -54*%s+107*%s^3+40*%s^4-120*%s^6);
+assert_checkalmostequal(coeff(d), coeff(det(A)), [], %eps);
+
+A = [1/%s 1; 1 2/%s];
+d = detr(A);
+assert_checkequal(d, (2-%s^2)/%s^2);
+assert_checkequal(d, det(A));
+
+A = [1/%s 3 5/%s^2;2 3/%s 4; 8/%s^3 4/%s^2 9/%s];
+d = detr(A);
+assert_checkequal(d, (-120 +40*%s^2+107*%s^3-54*%s^5)/%s^6);
+d2 = det(A);
+assert_checkalmostequal(coeff(d.num), coeff(d2.num), [], %eps);
+assert_checkalmostequal(coeff(d.den), coeff(d2.den), [], %eps);