Adding or substracting the empty matrix now return an empty matrix 05/17405/7
Pierre-Aime Agnel [Tue, 27 Oct 2015 16:48:42 +0000 (17:48 +0100)]
Change-Id: Ib2d41ea4fc44ea3624c849231c01f65aa49bd0c6

18 files changed:
scilab/CHANGES_6.0.X
scilab/modules/ast/src/cpp/operations/types_addition.cpp
scilab/modules/ast/src/cpp/operations/types_subtraction.cpp
scilab/modules/ast/tests/unit_tests/addition.dia.ref
scilab/modules/ast/tests/unit_tests/addition.tst
scilab/modules/ast/tests/unit_tests/subtraction.dia.ref
scilab/modules/ast/tests/unit_tests/subtraction.tst
scilab/modules/core/help/en_US/1_keywords/empty.xml
scilab/modules/core/help/en_US/1_keywords/minus.xml
scilab/modules/core/help/en_US/1_keywords/plus.xml
scilab/modules/core/help/fr_FR/1_keywords/empty.xml
scilab/modules/core/help/ja_JP/1_keywords/empty.xml
scilab/modules/core/help/pt_BR/1_keywords/empty.xml
scilab/modules/core/help/ru_RU/1_keywords/empty.xml
scilab/modules/m2sci/help/en_US/m2sci_equivalents/operators/addition.xml
scilab/modules/m2sci/help/en_US/m2sci_equivalents/operators/subtraction.xml
scilab/modules/scicos_blocks/macros/Electrical/buildmacros.sce
scilab/modules/string/macros/sci2exp.sci

index 36d92c9..cdc01f8 100644 (file)
@@ -24,6 +24,7 @@ Deprecated Behaviors
 
 * <-- JVM NOT MANDATORY --> is obsolete, use <-- CLI SHELL MODE --> instead.
 
+* Addition or subtraction with an empty matrix now return an empty matrix.
 
 Scilab Bug Fixes
 ================
index 8a3993b..fb736e3 100644 (file)
@@ -154,10 +154,10 @@ void fillAddFunction()
     scilab_fill_add(Empty, UInt64, E_M, Double, UInt64, UInt64);
     scilab_fill_add(Empty, Bool, E_M, Double, Bool, Double);
     scilab_fill_add(Empty, String, E_M, Double, String, String);
-    scilab_fill_add(Empty, Polynom, M_M, Double, Polynom, Polynom);
-    scilab_fill_add(Empty, PolynomComplex, M_M, Double, Polynom, Polynom);
-    scilab_fill_add(Empty, Sparse, M_M, Double, Sparse, Sparse);
-    scilab_fill_add(Empty, SparseComplex, M_M, Double, Sparse, Sparse);
+    scilab_fill_add(Empty, Polynom, E_M, Double, Polynom, Polynom);
+    scilab_fill_add(Empty, PolynomComplex, E_M, Double, Polynom, Polynom);
+    scilab_fill_add(Empty, Sparse, E_M, Double, Sparse, Sparse);
+    scilab_fill_add(Empty, SparseComplex, E_M, Double, Sparse, Sparse);
 
     //Empty + Matrix Complex
     scilab_fill_add(Empty, DoubleComplex, E_MC, Double, Double, Double);
@@ -173,11 +173,11 @@ void fillAddFunction()
     scilab_fill_add(Empty, ScalarUInt64, E_S, Double, UInt64, UInt64);
     scilab_fill_add(Empty, ScalarBool, E_S, Double, Bool, Double);
     scilab_fill_add(Empty, ScalarString, E_S, Double, String, String);
-    scilab_fill_add(Empty, ScalarPolynom, M_M, Double, Polynom, Polynom);
+    scilab_fill_add(Empty, ScalarPolynom, E_S, Double, Polynom, Polynom);
 
     //Empty + Scalar Complex
     scilab_fill_add(Empty, ScalarDoubleComplex, E_SC, Double, Double, Double);
-    scilab_fill_add(Empty, ScalarPolynomComplex, M_M, Double, Polynom, Polynom);
+    scilab_fill_add(Empty, ScalarPolynomComplex, E_M, Double, Polynom, Polynom);
     //Empty + Empty
     scilab_fill_add(Empty, Empty, E_E, Double, Double, Double);
     //Empty + eye
@@ -721,8 +721,8 @@ void fillAddFunction()
     scilab_fill_add(PolynomComplex, ScalarDoubleComplex, M_M, Polynom, Double, Polynom);
 
     //poly + []
-    scilab_fill_add(Polynom, Empty, M_M, Polynom, Double, Polynom);
-    scilab_fill_add(PolynomComplex, Empty, M_M, Polynom, Double, Polynom);
+    scilab_fill_add(Polynom, Empty, M_E, Polynom, Double, Polynom);
+    scilab_fill_add(PolynomComplex, Empty, M_E, Polynom, Double, Polynom);
 
     //poly + eye
     scilab_fill_add(Polynom, Identity, M_I, Polynom, Double, Polynom);
@@ -755,8 +755,8 @@ void fillAddFunction()
     scilab_fill_add(ScalarPolynomComplex, ScalarDoubleComplex, M_M, Polynom, Double, Polynom);
 
     //scalar poly + []
-    scilab_fill_add(ScalarPolynom, Empty, M_M, Polynom, Double, Polynom);
-    scilab_fill_add(ScalarPolynomComplex, Empty, M_M, Polynom, Double, Polynom);
+    scilab_fill_add(ScalarPolynom, Empty, M_E, Polynom, Double, Polynom);
+    scilab_fill_add(ScalarPolynomComplex, Empty, M_E, Polynom, Double, Polynom);
 
     //scalar poly + eye
     scilab_fill_add(ScalarPolynom, Identity, M_I, Polynom, Double, Polynom);
@@ -772,7 +772,7 @@ void fillAddFunction()
     scilab_fill_add(Sparse, ScalarDouble, M_M, Sparse, Double, Double);
     scilab_fill_add(Sparse, ScalarDoubleComplex, M_M, Sparse, Double, Double);
 
-    scilab_fill_add(Sparse, Empty, M_M, Sparse, Double, Sparse);
+    scilab_fill_add(Sparse, Empty, M_E, Sparse, Double, Sparse);
     scilab_fill_add(Sparse, Identity, M_M, Sparse, Double, Sparse);
     scilab_fill_add(Sparse, IdentityComplex, M_M, Sparse, Double, Sparse);
 
@@ -783,7 +783,7 @@ void fillAddFunction()
     scilab_fill_add(SparseComplex, ScalarDouble, M_M, Sparse, Double, Double);
     scilab_fill_add(SparseComplex, ScalarDoubleComplex, M_M, Sparse, Double, Double);
 
-    scilab_fill_add(SparseComplex, Empty, M_M, Sparse, Double, Sparse);
+    scilab_fill_add(SparseComplex, Empty, M_E, Sparse, Double, Sparse);
     scilab_fill_add(SparseComplex, Identity, M_M, Sparse, Double, Sparse);
     scilab_fill_add(SparseComplex, IdentityComplex, M_M, Sparse, Double, Sparse);
 
@@ -1131,7 +1131,9 @@ InternalType* add_M_SC(T *_pL, U *_pR)
 template<class T, class U, class O>
 InternalType* add_M_E(T *_pL, U * /*_pR*/)
 {
-    return _pL;
+    Double* pOut = Double::Empty();
+    add();
+    return pOut;
 }
 
 
@@ -1188,8 +1190,8 @@ InternalType* add_MC_SC(T *_pL, U *_pR)
 template<class T, class U, class O>
 InternalType* add_MC_E(T *_pL, U * /*_pR*/)
 {
-    O* pOut = new O(_pL->getDims(), _pL->getDimsArray(), true);
-    add(_pL->get(), _pL->getImg(), (size_t)_pL->getSize(), pOut->get(), pOut->getImg());
+    Double* pOut = Double::Empty();
+    add();
     return pOut;
 }
 
@@ -1225,8 +1227,8 @@ InternalType* add_S_SC(T *_pL, U *_pR)
 template<class T, class U, class O>
 InternalType* add_S_E(T *_pL, U * /*_pR*/)
 {
-    O* pOut = new O(0);
-    add(_pL->get(0), pOut->get());
+    Double* pOut = Double::Empty();
+    add();
     return pOut;
 }
 
@@ -1260,8 +1262,8 @@ InternalType* add_SC_SC(T *_pL, U *_pR)
 template<class T, class U, class O>
 InternalType* add_SC_E(T *_pL, U * /*_pR*/)
 {
-    O* pOut = new O(0.0, 0.0);
-    add(_pL->get(0), _pL->getImg(0), pOut->get(), pOut->getImg());
+    Double* pOut = Double::Empty();
+    add();
     return pOut;
 }
 
@@ -1269,25 +1271,33 @@ InternalType* add_SC_E(T *_pL, U * /*_pR*/)
 template<class T, class U, class O>
 InternalType* add_E_M(T *_pL, U *_pR)
 {
-    return add_M_E<U, T, O>(_pR, _pL);
+    Double* pOut = Double::Empty();
+    add();
+    return pOut;
 }
 
 template<class T, class U, class O>
 InternalType* add_E_MC(T *_pL, U *_pR)
 {
-    return add_MC_E<U, T, O>(_pR, _pL);
+    Double* pOut = Double::Empty();
+    add();
+    return pOut;
 }
 
 template<class T, class U, class O>
 InternalType* add_E_S(T *_pL, U *_pR)
 {
-    return add_S_E<U, T, O>(_pR, _pL);
+    Double* pOut = Double::Empty();
+    add();
+    return pOut;
 }
 
 template<class T, class U, class O>
 InternalType* add_E_SC(T *_pL, U *_pR)
 {
-    return add_SC_E<U, T, O>(_pR, _pL);
+    Double* pOut = Double::Empty();
+    add();
+    return pOut;
 }
 
 template<class T, class U, class O>
@@ -1518,25 +1528,29 @@ template<class T, class U, class O> InternalType* add_IC_IC(T *_pL, U *_pR)
 
 template<class T, class U, class O> types::InternalType* add_I_E(T *_pL, U * /*_pR*/)
 {
-    O* pOut = (O*)_pL->clone();
+    Double* pOut = Double::Empty();
+    add();
     return pOut;
 }
 
 template<class T, class U, class O> types::InternalType* add_IC_E(T *_pL, U * /*_pR*/)
 {
-    O* pOut = (O*)_pL->clone();
+    Double* pOut = Double::Empty();
+    add();
     return pOut;
 }
 
 template<class T, class U, class O> types::InternalType* add_E_I(T * /*_pL*/, U *_pR)
 {
-    O* pOut = (O*)_pR->clone();
+    Double* pOut = Double::Empty();
+    add();
     return pOut;
 }
 
 template<class T, class U, class O> types::InternalType* add_E_IC(T * /*_pL*/, U *_pR)
 {
-    O* pOut = (O*)_pR->clone();
+    Double* pOut = Double::Empty();
+    add();
     return pOut;
 }
 
@@ -1657,25 +1671,33 @@ InternalType* add_S_S<String, String, String>(String* _pL, String* _pR)
 template<>
 InternalType* add_M_E<String, Double, String>(String* _pL, Double* /*_pR*/)
 {
-    return _pL;
+    Double* pOut = Double::Empty();
+    add();
+    return pOut;
 }
 
 template<>
 InternalType* add_S_E<String, Double, String>(String* _pL, Double* /*_pR*/)
 {
-    return _pL;
+    Double* pOut = Double::Empty();
+    add();
+    return pOut;
 }
 
 template<>
 InternalType* add_E_M<Double, String, String>(Double* /*_pL*/, String* _pR)
 {
-    return _pR;
+    Double* pOut = Double::Empty();
+    add();
+    return pOut;
 }
 
 template<>
 InternalType* add_E_S<Double, String, String>(Double* /*_pL*/, String* _pR)
 {
-    return _pR;
+    Double* pOut = Double::Empty();
+    add();
+    return pOut;
 }
 
 template<> InternalType* add_M_M<Polynom, Polynom, Polynom>(Polynom* _pL, Polynom* _pR)
index 2489a47..7fde377 100644 (file)
@@ -731,8 +731,8 @@ void fillSubtractFunction()
     scilab_fill_sub(PolynomComplex, ScalarDoubleComplex, M_M, Polynom, Double, Polynom);
 
     //poly - []
-    scilab_fill_sub(Polynom, Empty, M_M, Polynom, Double, Polynom);
-    scilab_fill_sub(PolynomComplex, Empty, M_M, Polynom, Double, Polynom);
+    scilab_fill_sub(Polynom, Empty, M_E, Polynom, Double, Polynom);
+    scilab_fill_sub(PolynomComplex, Empty, M_E, Polynom, Double, Polynom);
 
     //poly - eye
     scilab_fill_sub(Polynom, Identity, M_M, Polynom, Double, Polynom);
@@ -765,8 +765,8 @@ void fillSubtractFunction()
     scilab_fill_sub(ScalarPolynomComplex, ScalarDoubleComplex, M_M, Polynom, Double, Polynom);
 
     //scalar poly - []
-    scilab_fill_sub(ScalarPolynom, Empty, M_M, Polynom, Double, Polynom);
-    scilab_fill_sub(ScalarPolynomComplex, Empty, M_M, Polynom, Double, Polynom);
+    scilab_fill_sub(ScalarPolynom, Empty, M_E, Polynom, Double, Polynom);
+    scilab_fill_sub(ScalarPolynomComplex, Empty, M_E, Polynom, Double, Polynom);
 
     //scalar poly - eye
     scilab_fill_sub(ScalarPolynom, Identity, M_M, Polynom, Double, Polynom);
@@ -782,7 +782,7 @@ void fillSubtractFunction()
     scilab_fill_sub(Sparse, ScalarDouble, M_M, Sparse, Double, Double);
     scilab_fill_sub(Sparse, ScalarDoubleComplex, M_M, Sparse, Double, Double);
 
-    scilab_fill_sub(Sparse, Empty, M_M, Sparse, Double, Sparse);
+    scilab_fill_sub(Sparse, Empty, M_E, Sparse, Double, Sparse);
     scilab_fill_sub(Sparse, Identity, M_M, Sparse, Double, Sparse);
     scilab_fill_sub(Sparse, IdentityComplex, M_M, Sparse, Double, Sparse);
 
@@ -793,7 +793,7 @@ void fillSubtractFunction()
     scilab_fill_sub(SparseComplex, ScalarDouble, M_M, Sparse, Double, Double);
     scilab_fill_sub(SparseComplex, ScalarDoubleComplex, M_M, Sparse, Double, Double);
 
-    scilab_fill_sub(SparseComplex, Empty, M_M, Sparse, Double, Sparse);
+    scilab_fill_sub(SparseComplex, Empty, M_E, Sparse, Double, Sparse);
     scilab_fill_sub(SparseComplex, Identity, M_M, Sparse, Double, Sparse);
     scilab_fill_sub(SparseComplex, IdentityComplex, M_M, Sparse, Double, Sparse);
 
@@ -895,7 +895,9 @@ InternalType* sub_M_SC(T *_pL, U *_pR)
 template<class T, class U, class O>
 InternalType* sub_M_E(T *_pL, U * /*_pR*/)
 {
-    return _pL;
+    Double* pOut = Double::Empty();
+    sub();
+    return pOut;
 }
 
 
@@ -974,7 +976,9 @@ InternalType* sub_MC_SC(T *_pL, U *_pR)
 template<class T, class U, class O>
 InternalType* sub_MC_E(T *_pL, U * /*_pR*/)
 {
-    return _pL;
+    Double* pOut = Double::Empty();
+    sub();
+    return pOut;
 }
 
 
@@ -1013,8 +1017,8 @@ InternalType* sub_S_SC(T *_pL, U *_pR)
 template<class T, class U, class O>
 InternalType* sub_S_E(T *_pL, U * /*_pR*/)
 {
-    O* pOut = new O(0);
-    sub(_pL->get(0), pOut->get());
+    Double* pOut = Double::Empty();
+    sub();
     return pOut;
 }
 
@@ -1054,8 +1058,8 @@ InternalType* sub_SC_SC(T *_pL, U *_pR)
 template<class T, class U, class O>
 InternalType* sub_SC_E(T *_pL, U * /*_pR*/)
 {
-    O* pOut = new O(0.0, 0.0);
-    sub(_pL->get(0), _pL->getImg(0), (size_t)1, pOut->get(), pOut->getImg());
+    Double* pOut = Double::Empty();
+    sub();
     return pOut;
 }
 
@@ -1063,13 +1067,17 @@ InternalType* sub_SC_E(T *_pL, U * /*_pR*/)
 template<class T, class U, class O>
 InternalType* sub_E_M(T * /*_pL*/, U *_pR)
 {
-    return opposite_M<U, O>(_pR);
+    Double* pOut = Double::Empty();
+    sub();
+    return pOut;
 }
 
 template<class T, class U, class O>
 InternalType* sub_E_MC(T * /*_pL*/, U *_pR)
 {
-    return opposite_MC<U, O>(_pR);
+    Double* pOut = Double::Empty();
+    sub();
+    return pOut;
 }
 
 template<class T, class U, class O>
@@ -1449,22 +1457,30 @@ template<class T, class U, class O> InternalType* sub_IC_IC(T *_pL, U *_pR)
 
 template<class T, class U, class O> types::InternalType* sub_I_E(T *_pL, U * /*_pR*/)
 {
-    return (O*)_pL;
+    Double* pOut = Double::Empty();
+    sub();
+    return pOut;
 }
 
 template<class T, class U, class O> types::InternalType* sub_IC_E(T *_pL, U * /*_pR*/)
 {
-    return (O*)_pL;
+    Double* pOut = Double::Empty();
+    sub();
+    return pOut;
 }
 
 template<class T, class U, class O> types::InternalType* sub_E_I(T * /*_pL*/, U *_pR)
 {
-    return opposite_I<U, O>(_pR);
+    Double* pOut = Double::Empty();
+    sub();
+    return pOut;
 }
 
 template<class T, class U, class O> types::InternalType* sub_E_IC(T * /*_pL*/, U *_pR)
 {
-    return opposite_IC<U, O>(_pR);
+    Double* pOut = Double::Empty();
+    sub();
+    return pOut;
 }
 
 template<> InternalType* sub_M_M<Polynom, Polynom, Polynom>(Polynom* _pL, Polynom* _pR)
index 5dc4dc3..2b22696 100644 (file)
@@ -38,31 +38,31 @@ UI32 = uint32([32 64 ; 96 128]);
 str = "string";
 STR = ["string1" "string2";"string3" "string4"];
 assert_checkequal(empty + empty, []);
-assert_checkequal(empty + r, 2);
-assert_checkequal(empty + c,  1+%i*2);
-assert_checkequal(empty + R, [1,2;3,4]);
-assert_checkequal(empty + C, [ 1+%i*2, 2+%i*4; 3+%i*6, 4+%i*8]);
-assert_checkequal(empty + e, eye());
-assert_checkequal(empty + ec, ( 5+%i)*eye());
-assert_checkequal(empty + p, 1+s-s^2);
-assert_checkequal(empty + pc, 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
-assert_checkequal(empty + P, [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
-assert_checkequal(empty + PC, [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
-assert_checkequal(empty + SP, sparse([1,2;3,10;4,5],[1;3;2],[4,10]));
-assert_checkequal(empty + SPC, sparse([1,2;3,10;4,5],[ 1+%i*4; 3+%i*12; 2+%i*8],[4,10]));
-assert_checkequal(empty + i8, int8(-8));
-assert_checkequal(empty + I8, int8([-8,-16;-24,-32]));
-assert_checkequal(empty + ui8, uint8(8));
-assert_checkequal(empty + UI8, uint8([8,16;24,32]));
-assert_checkequal(empty + i16, int16(-16));
-assert_checkequal(empty + I16, int16([-16,-32;-48,-64]));
-assert_checkequal(empty + ui16, uint16(16));
-assert_checkequal(empty + UI16, uint16([16,32;48,64]));
-assert_checkequal(empty + i32, int32(-32));
-assert_checkequal(empty + I32, int32([-32,-64;-96,-128]));
-assert_checkequal(empty + ui32, uint32(32));
-assert_checkequal(empty + UI32, uint32([32,64;96,128]));
-assert_checkequal(r + empty, 2);
+assert_checkequal(empty + r, []);
+assert_checkequal(empty + c,  empty);
+assert_checkequal(empty + R, []);
+assert_checkequal(empty + C, []);
+assert_checkequal(empty + e, []);
+assert_checkequal(empty + ec, []);
+assert_checkequal(empty + p, []);
+assert_checkequal(empty + pc, []);
+assert_checkequal(empty + P, []);
+assert_checkequal(empty + PC, []);
+assert_checkequal(empty + SP, []);
+assert_checkequal(empty + SPC, []);
+assert_checkequal(empty + i8, []);
+assert_checkequal(empty + I8, []);
+assert_checkequal(empty + ui8, []);
+assert_checkequal(empty + UI8, []);
+assert_checkequal(empty + i16, []);
+assert_checkequal(empty + I16, []);
+assert_checkequal(empty + ui16, []);
+assert_checkequal(empty + UI16, []);
+assert_checkequal(empty + i32, []);
+assert_checkequal(empty + I32, []);
+assert_checkequal(empty + ui32, []);
+assert_checkequal(empty + UI32, []);
+assert_checkequal(r + empty, []);
 assert_checkequal(r + r, 4);
 assert_checkequal(r + c,  3+%i*2);
 assert_checkequal(r + R, [3,4;5,6]);
@@ -87,7 +87,7 @@ assert_checkequal(r + i32, int32(-30));
 assert_checkequal(r + I32, int32([-30,-62;-94,-126]));
 assert_checkequal(r + ui32, uint32(34));
 assert_checkequal(r + UI32, uint32([34,66;98,130]));
-assert_checkequal(c + empty,  1+%i*2);
+assert_checkequal(c + empty,  empty);
 assert_checkequal(c + r,  3+%i*2);
 assert_checkequal(c + c,  2+%i*4);
 assert_checkequal(c + R, [ 2+%i*2, 3+%i*2; 4+%i*2, 5+%i*2]);
@@ -100,7 +100,7 @@ assert_checkequal(c + P, [3+%i*2+2*s-2*s^2,-2+%i*2-3*s+3*s^2;5+%i*2+4*s-4*s^2,-4
 assert_checkequal(c + PC, [3+%i*6+(2-%i*6)*s+(-2+%i*8)*s^2,-2-%i*4+(-3+%i*9)*s+(3-%i*12)*s^2;5+%i*10+(4-%i*12)*s+(-4+%i*16)*s^2,-4-%i*8+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(c + SP, [ 1+%i*2, 2+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 4+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 3+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 assert_checkequal(c + SPC, [ 1+%i*2, 2+%i*6, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 4+%i*14; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 3+%i*10, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
-assert_checkequal(R + empty, [1,2;3,4]);
+assert_checkequal(R + empty, []);
 assert_checkequal(R + r, [3,4;5,6]);
 assert_checkequal(R + c, [ 2+%i*2, 3+%i*2; 4+%i*2, 5+%i*2]);
 assert_checkequal(R + R, [2,4;6,8]);
@@ -123,7 +123,7 @@ assert_checkequal(R + i32, int32([-31,-30;-29,-28]));
 assert_checkequal(R + I32, int32([-31,-62;-93,-124]));
 assert_checkequal(R + ui32, uint32([33,34;35,36]));
 assert_checkequal(R + UI32, uint32([33,66;99,132]));
-assert_checkequal(C + empty, [ 1+%i*2, 2+%i*4; 3+%i*6, 4+%i*8]);
+assert_checkequal(C + empty, []);
 assert_checkequal(C + r, [ 3+%i*2, 4+%i*4; 5+%i*6, 6+%i*8]);
 assert_checkequal(C + c, [ 2+%i*4, 3+%i*6; 4+%i*8, 5+%i*10]);
 assert_checkequal(C + R, [ 2+%i*2, 4+%i*4; 6+%i*6, 8+%i*8]);
@@ -134,7 +134,7 @@ assert_checkequal(C + p, [2+%i*2+s-s^2,3+%i*4+s-s^2;4+%i*6+s-s^2,5+%i*8+s-s^2]);
 assert_checkequal(C + pc, [2+%i*4+(1-%i*3)*s+(-1+%i*4)*s^2,3+%i*6+(1-%i*3)*s+(-1+%i*4)*s^2;4+%i*8+(1-%i*3)*s+(-1+%i*4)*s^2,5+%i*10+(1-%i*3)*s+(-1+%i*4)*s^2]);
 assert_checkequal(C + P, [3+%i*2+2*s-2*s^2,-1+%i*4-3*s+3*s^2;7+%i*6+4*s-4*s^2,-1+%i*8-5*s+5*s^2]);
 assert_checkequal(C + PC, [3+%i*6+(2-%i*6)*s+(-2+%i*8)*s^2,-1-%i*2+(-3+%i*9)*s+(3-%i*12)*s^2;7+%i*14+(4-%i*12)*s+(-4+%i*16)*s^2,-1-%i*2+(-5+%i*15)*s+(5-%i*20)*s^2]);
-assert_checkequal(e + empty, eye());
+assert_checkequal(e + empty, []);
 assert_checkequal(e + r, 3);
 assert_checkequal(e + c,  2+%i*2);
 assert_checkequal(e + R, [2,2;3,5]);
@@ -147,7 +147,7 @@ assert_checkequal(e + P, [3+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-4-5*s+5*s^2]);
 assert_checkequal(e + PC, [3+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-4-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(e + SP, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[1;1;1;1;3;1;2],[4,10]));
 assert_checkequal(e + SPC, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 1; 1+%i*4; 1; 1; 3+%i*12; 1; 2+%i*8],[4,10]));
-assert_checkequal(ec + empty, ( 5+%i)*eye());
+assert_checkequal(ec + empty, []);
 assert_checkequal(ec + r,  7+%i);
 assert_checkequal(ec + c,  6+%i*3);
 assert_checkequal(ec + R, [ 6+%i, 2; 3, 9+%i]);
@@ -160,7 +160,7 @@ assert_checkequal(ec + P, [7+%i+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,%i-5*s+5*s^2]
 assert_checkequal(ec + PC, [7+%i*5+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-%i*9+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(ec + SP, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i; 1; 5+%i; 5+%i; 3; 5+%i; 2],[4,10]));
 assert_checkequal(ec + SPC, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i; 1+%i*4; 5+%i; 5+%i; 3+%i*12; 5+%i; 2+%i*8],[4,10]));
-assert_checkequal(p + empty, 1+s-s^2);
+assert_checkequal(p + empty, []);
 assert_checkequal(p + r, 3+s-s^2);
 assert_checkequal(p + c, 2+%i*2+s-s^2);
 assert_checkequal(p + R, [2+s-s^2,3+s-s^2;4+s-s^2,5+s-s^2]);
@@ -171,7 +171,7 @@ assert_checkequal(p + p, 2+2*s-2*s^2);
 assert_checkequal(p + pc, 2+%i*2+(2-%i*3)*s+(-2+%i*4)*s^2);
 assert_checkequal(p + P, [3+3*s-3*s^2,-2-2*s+2*s^2;5+5*s-5*s^2,-4-4*s+4*s^2]);
 assert_checkequal(p + PC, [3+%i*4+(3-%i*6)*s+(-3+%i*8)*s^2,-2-%i*6+(-2+%i*9)*s+(2-%i*12)*s^2;5+%i*8+(5-%i*12)*s+(-5+%i*16)*s^2,-4-%i*10+(-4+%i*15)*s+(4-%i*20)*s^2]);
-assert_checkequal(pc + empty, 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
+assert_checkequal(pc + empty, []);
 assert_checkequal(pc + r, 3+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
 assert_checkequal(pc + c, 2+%i*4+(1-%i*3)*s+(-1+%i*4)*s^2);
 assert_checkequal(pc + R, [2+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,3+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;4+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,5+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
@@ -182,7 +182,7 @@ assert_checkequal(pc + p, 2+%i*2+(2-%i*3)*s+(-2+%i*4)*s^2);
 assert_checkequal(pc + pc, 2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2);
 assert_checkequal(pc + P, [3+%i*2+(3-%i*3)*s+(-3+%i*4)*s^2,-2+%i*2+(-2-%i*3)*s+(2+%i*4)*s^2;5+%i*2+(5-%i*3)*s+(-5+%i*4)*s^2,-4+%i*2+(-4-%i*3)*s+(4+%i*4)*s^2]);
 assert_checkequal(pc + PC, [3+%i*6+(3-%i*9)*s+(-3+%i*12)*s^2,-2-%i*4+(-2+%i*6)*s+(2-%i*8)*s^2;5+%i*10+(5-%i*15)*s+(-5+%i*20)*s^2,-4-%i*8+(-4+%i*12)*s+(4-%i*16)*s^2]);
-assert_checkequal(P + empty, [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
+assert_checkequal(P + empty, []);
 assert_checkequal(P + r, [4+2*s-2*s^2,-1-3*s+3*s^2;6+4*s-4*s^2,-3-5*s+5*s^2]);
 assert_checkequal(P + c, [3+%i*2+2*s-2*s^2,-2+%i*2-3*s+3*s^2;5+%i*2+4*s-4*s^2,-4+%i*2-5*s+5*s^2]);
 assert_checkequal(P + R, [3+2*s-2*s^2,-1-3*s+3*s^2;7+4*s-4*s^2,-1-5*s+5*s^2]);
@@ -193,7 +193,7 @@ assert_checkequal(P + p, [3+3*s-3*s^2,-2-2*s+2*s^2;5+5*s-5*s^2,-4-4*s+4*s^2]);
 assert_checkequal(P + pc, [3+%i*2+(3-%i*3)*s+(-3+%i*4)*s^2,-2+%i*2+(-2-%i*3)*s+(2+%i*4)*s^2;5+%i*2+(5-%i*3)*s+(-5+%i*4)*s^2,-4+%i*2+(-4-%i*3)*s+(4+%i*4)*s^2]);
 assert_checkequal(P + P, [4+4*s-4*s^2,-6-6*s+6*s^2;8+8*s-8*s^2,-10-10*s+10*s^2]);
 assert_checkequal(P + PC, [4+%i*4+(4-%i*6)*s+(-4+%i*8)*s^2,-6-%i*6+(-6+%i*9)*s+(6-%i*12)*s^2;8+%i*8+(8-%i*12)*s+(-8+%i*16)*s^2,-10-%i*10+(-10+%i*15)*s+(10-%i*20)*s^2]);
-assert_checkequal(PC + empty, [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
+assert_checkequal(PC + empty, []);
 assert_checkequal(PC + r, [4+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-1-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;6+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-3-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(PC + c, [3+%i*6+(2-%i*6)*s+(-2+%i*8)*s^2,-2-%i*4+(-3+%i*9)*s+(3-%i*12)*s^2;5+%i*10+(4-%i*12)*s+(-4+%i*16)*s^2,-4-%i*8+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(PC + R, [3+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-1-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;7+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-1-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
@@ -204,21 +204,21 @@ assert_checkequal(PC + p, [3+%i*4+(3-%i*6)*s+(-3+%i*8)*s^2,-2-%i*6+(-2+%i*9)*s+(
 assert_checkequal(PC + pc, [3+%i*6+(3-%i*9)*s+(-3+%i*12)*s^2,-2-%i*4+(-2+%i*6)*s+(2-%i*8)*s^2;5+%i*10+(5-%i*15)*s+(-5+%i*20)*s^2,-4-%i*8+(-4+%i*12)*s+(4-%i*16)*s^2]);
 assert_checkequal(PC + P, [4+%i*4+(4-%i*6)*s+(-4+%i*8)*s^2,-6-%i*6+(-6+%i*9)*s+(6-%i*12)*s^2;8+%i*8+(8-%i*12)*s+(-8+%i*16)*s^2,-10-%i*10+(-10+%i*15)*s+(10-%i*20)*s^2]);
 assert_checkequal(PC + PC, [4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-6-%i*12+(-6+%i*18)*s+(6-%i*24)*s^2;8+%i*16+(8-%i*24)*s+(-8+%i*32)*s^2,-10-%i*20+(-10+%i*30)*s+(10-%i*40)*s^2]);
-assert_checkequal(SP + empty, sparse([1,2;3,10;4,5],[1;3;2],[4,10]));
+assert_checkequal(SP + empty, []);
 assert_checkequal(SP + r, [2,3,2,2,2,2,2,2,2,2;2,2,2,2,2,2,2,2,2,2;2,2,2,2,2,2,2,2,2,5;2,2,2,2,4,2,2,2,2,2]);
 assert_checkequal(SP + c, [ 1+%i*2, 2+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 4+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 3+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 assert_checkequal(SP + e, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[1;1;1;1;3;1;2],[4,10]));
 assert_checkequal(SP + ec, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i; 1; 5+%i; 5+%i; 3; 5+%i; 2],[4,10]));
 assert_checkequal(SP + SP, sparse([1,2;3,10;4,5],[2;6;4],[4,10]));
 assert_checkequal(SP + SPC, sparse([1,2;3,10;4,5],[ 2+%i*4; 6+%i*12; 4+%i*8],[4,10]));
-assert_checkequal(SPC + empty, sparse([1,2;3,10;4,5],[ 1+%i*4; 3+%i*12; 2+%i*8],[4,10]));
+assert_checkequal(SPC + empty, []);
 assert_checkequal(SPC + r, [ 2, 3+%i*4, 2, 2, 2, 2, 2, 2, 2, 2; 2, 2, 2, 2, 2, 2, 2, 2, 2, 2; 2, 2, 2, 2, 2, 2, 2, 2, 2, 5+%i*12; 2, 2, 2, 2, 4+%i*8, 2, 2, 2, 2, 2]);
 assert_checkequal(SPC + c, [ 1+%i*2, 2+%i*6, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 4+%i*14; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 3+%i*10, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 assert_checkequal(SPC + e, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 1; 1+%i*4; 1; 1; 3+%i*12; 1; 2+%i*8],[4,10]));
 assert_checkequal(SPC + ec, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i; 1+%i*4; 5+%i; 5+%i; 3+%i*12; 5+%i; 2+%i*8],[4,10]));
 assert_checkequal(SPC + SP, sparse([1,2;3,10;4,5],[ 2+%i*4; 6+%i*12; 4+%i*8],[4,10]));
 assert_checkequal(SPC + SPC, sparse([1,2;3,10;4,5],[ 2+%i*8; 6+%i*24; 4+%i*16],[4,10]));
-assert_checkequal(i8 + empty, int8(-8));
+assert_checkequal(i8 + empty, []);
 assert_checkequal(i8 + r, int8(-6));
 assert_checkequal(i8 + R, int8([-7,-6;-5,-4]));
 assert_checkequal(i8 + i8, int8(-16));
@@ -233,7 +233,7 @@ assert_checkequal(i8 + i32, int32(-40));
 assert_checkequal(i8 + I32, int32([-40,-72;-104,-136]));
 assert_checkequal(i8 + ui32, uint32(24));
 assert_checkequal(i8 + UI32, uint32([24,56;88,120]));
-assert_checkequal(I8 + empty, int8([-8,-16;-24,-32]));
+assert_checkequal(I8 + empty, []);
 assert_checkequal(I8 + r, int8([-6,-14;-22,-30]));
 assert_checkequal(I8 + R, int8([-7,-14;-21,-28]));
 assert_checkequal(I8 + i8, int8([-16,-24;-32,-40]));
@@ -248,7 +248,7 @@ assert_checkequal(I8 + i32, int32([-40,-48;-56,-64]));
 assert_checkequal(I8 + I32, int32([-40,-80;-120,-160]));
 assert_checkequal(I8 + ui32, uint32([24,16;8,0]));
 assert_checkequal(I8 + UI32, uint32([24,48;72,96]));
-assert_checkequal(ui8 + empty, uint8(8));
+assert_checkequal(ui8 + empty, []);
 assert_checkequal(ui8 + r, uint8(10));
 assert_checkequal(ui8 + R, uint8([9,10;11,12]));
 assert_checkequal(ui8 + i8, uint8(0));
@@ -263,7 +263,7 @@ assert_checkequal(ui8 + i32, uint32(4294967272));
 assert_checkequal(ui8 + I32, uint32([4294967272,4294967240;4294967208,4294967176]));
 assert_checkequal(ui8 + ui32, uint32(40));
 assert_checkequal(ui8 + UI32, uint32([40,72;104,136]));
-assert_checkequal(UI8 + empty, uint8([8,16;24,32]));
+assert_checkequal(UI8 + empty, []);
 assert_checkequal(UI8 + r, uint8([10,18;26,34]));
 assert_checkequal(UI8 + R, uint8([9,18;27,36]));
 assert_checkequal(UI8 + i8, uint8([0,8;16,24]));
@@ -278,7 +278,7 @@ assert_checkequal(UI8 + i32, uint32([4294967272,4294967280;4294967288,0]));
 assert_checkequal(UI8 + I32, uint32([4294967272,4294967248;4294967224,4294967200]));
 assert_checkequal(UI8 + ui32, uint32([40,48;56,64]));
 assert_checkequal(UI8 + UI32, uint32([40,80;120,160]));
-assert_checkequal(i16 + empty, int16(-16));
+assert_checkequal(i16 + empty, []);
 assert_checkequal(i16 + r, int16(-14));
 assert_checkequal(i16 + R, int16([-15,-14;-13,-12]));
 assert_checkequal(i16 + i8, int16(-24));
@@ -293,7 +293,7 @@ assert_checkequal(i16 + i32, int32(-48));
 assert_checkequal(i16 + I32, int32([-48,-80;-112,-144]));
 assert_checkequal(i16 + ui32, uint32(16));
 assert_checkequal(i16 + UI32, uint32([16,48;80,112]));
-assert_checkequal(I16 + empty, int16([-16,-32;-48,-64]));
+assert_checkequal(I16 + empty, []);
 assert_checkequal(I16 + r, int16([-14,-30;-46,-62]));
 assert_checkequal(I16 + R, int16([-15,-30;-45,-60]));
 assert_checkequal(I16 + i8, int16([-24,-40;-56,-72]));
@@ -308,7 +308,7 @@ assert_checkequal(I16 + i32, int32([-48,-64;-80,-96]));
 assert_checkequal(I16 + I32, int32([-48,-96;-144,-192]));
 assert_checkequal(I16 + ui32, uint32([16,0;4294967280,4294967264]));
 assert_checkequal(I16 + UI32, uint32([16,32;48,64]));
-assert_checkequal(ui16 + empty, uint16(16));
+assert_checkequal(ui16 + empty, []);
 assert_checkequal(ui16 + r, uint16(18));
 assert_checkequal(ui16 + R, uint16([17,18;19,20]));
 assert_checkequal(ui16 + i8, uint16(8));
@@ -323,7 +323,7 @@ assert_checkequal(ui16 + i32, uint32(4294967280));
 assert_checkequal(ui16 + I32, uint32([4294967280,4294967248;4294967216,4294967184]));
 assert_checkequal(ui16 + ui32, uint32(48));
 assert_checkequal(ui16 + UI32, uint32([48,80;112,144]));
-assert_checkequal(UI16 + empty, uint16([16,32;48,64]));
+assert_checkequal(UI16 + empty, []);
 assert_checkequal(UI16 + r, uint16([18,34;50,66]));
 assert_checkequal(UI16 + R, uint16([17,34;51,68]));
 assert_checkequal(UI16 + i8, uint16([8,24;40,56]));
@@ -338,7 +338,7 @@ assert_checkequal(UI16 + i32, uint32([4294967280,0;16,32]));
 assert_checkequal(UI16 + I32, uint32([4294967280,4294967264;4294967248,4294967232]));
 assert_checkequal(UI16 + ui32, uint32([48,64;80,96]));
 assert_checkequal(UI16 + UI32, uint32([48,96;144,192]));
-assert_checkequal(i32 + empty, int32(-32));
+assert_checkequal(i32 + empty, []);
 assert_checkequal(i32 + r, int32(-30));
 assert_checkequal(i32 + R, int32([-31,-30;-29,-28]));
 assert_checkequal(i32 + i8, int32(-40));
@@ -353,7 +353,7 @@ assert_checkequal(i32 + i32, int32(-64));
 assert_checkequal(i32 + I32, int32([-64,-96;-128,-160]));
 assert_checkequal(i32 + ui32, uint32(0));
 assert_checkequal(i32 + UI32, uint32([0,32;64,96]));
-assert_checkequal(I32 + empty, int32([-32,-64;-96,-128]));
+assert_checkequal(I32 + empty, []);
 assert_checkequal(I32 + r, int32([-30,-62;-94,-126]));
 assert_checkequal(I32 + R, int32([-31,-62;-93,-124]));
 assert_checkequal(I32 + i8, int32([-40,-72;-104,-136]));
@@ -368,7 +368,7 @@ assert_checkequal(I32 + i32, int32([-64,-96;-128,-160]));
 assert_checkequal(I32 + I32, int32([-64,-128;-192,-256]));
 assert_checkequal(I32 + ui32, uint32([0,4294967264;4294967232,4294967200]));
 assert_checkequal(I32 + UI32, uint32([0,0;0,0]));
-assert_checkequal(ui32 + empty, uint32(32));
+assert_checkequal(ui32 + empty, []);
 assert_checkequal(ui32 + r, uint32(34));
 assert_checkequal(ui32 + R, uint32([33,34;35,36]));
 assert_checkequal(ui32 + i8, uint32(24));
@@ -383,7 +383,7 @@ assert_checkequal(ui32 + i32, uint32(0));
 assert_checkequal(ui32 + I32, uint32([0,4294967264;4294967232,4294967200]));
 assert_checkequal(ui32 + ui32, uint32(64));
 assert_checkequal(ui32 + UI32, uint32([64,96;128,160]));
-assert_checkequal(UI32 + empty, uint32([32,64;96,128]));
+assert_checkequal(UI32 + empty, []);
 assert_checkequal(UI32 + r, uint32([34,66;98,130]));
 assert_checkequal(UI32 + R, uint32([33,66;99,132]));
 assert_checkequal(UI32 + i8, uint32([24,56;88,120]));
@@ -398,9 +398,9 @@ assert_checkequal(UI32 + i32, uint32([0,32;64,96]));
 assert_checkequal(UI32 + I32, uint32([0,0;0,0]));
 assert_checkequal(UI32 + ui32, uint32([64,96;128,160]));
 assert_checkequal(UI32 + UI32, uint32([64,128;192,256]));
-assert_checkequal(str + empty, "string");
+assert_checkequal(str + empty, []);
 assert_checkequal(str + str, "stringstring");
 assert_checkequal(str + STR, ["stringstring1","stringstring2";"stringstring3","stringstring4"]);
-assert_checkequal(STR + empty, ["string1","string2";"string3","string4"]);
+assert_checkequal(STR + empty, []);
 assert_checkequal(STR + str, ["string1string","string2string";"string3string","string4string"]);
 assert_checkequal(STR + STR, ["string1string1","string2string2";"string3string3","string4string4"]);
index 77816dd..759410e 100644 (file)
@@ -45,32 +45,32 @@ str = "string";
 STR = ["string1" "string2";"string3" "string4"];
 
 assert_checkequal(empty + empty, []);
-assert_checkequal(empty + r, 2);
-assert_checkequal(empty + c,  1+%i*2);
-assert_checkequal(empty + R, [1,2;3,4]);
-assert_checkequal(empty + C, [ 1+%i*2, 2+%i*4; 3+%i*6, 4+%i*8]);
-assert_checkequal(empty + e, eye());
-assert_checkequal(empty + ec, ( 5+%i)*eye());
-assert_checkequal(empty + p, 1+s-s^2);
-assert_checkequal(empty + pc, 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
-assert_checkequal(empty + P, [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
-assert_checkequal(empty + PC, [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
-assert_checkequal(empty + SP, sparse([1,2;3,10;4,5],[1;3;2],[4,10]));
-assert_checkequal(empty + SPC, sparse([1,2;3,10;4,5],[ 1+%i*4; 3+%i*12; 2+%i*8],[4,10]));
-assert_checkequal(empty + i8, int8(-8));
-assert_checkequal(empty + I8, int8([-8,-16;-24,-32]));
-assert_checkequal(empty + ui8, uint8(8));
-assert_checkequal(empty + UI8, uint8([8,16;24,32]));
-assert_checkequal(empty + i16, int16(-16));
-assert_checkequal(empty + I16, int16([-16,-32;-48,-64]));
-assert_checkequal(empty + ui16, uint16(16));
-assert_checkequal(empty + UI16, uint16([16,32;48,64]));
-assert_checkequal(empty + i32, int32(-32));
-assert_checkequal(empty + I32, int32([-32,-64;-96,-128]));
-assert_checkequal(empty + ui32, uint32(32));
-assert_checkequal(empty + UI32, uint32([32,64;96,128]));
-
-assert_checkequal(r + empty, 2);
+assert_checkequal(empty + r, []);
+assert_checkequal(empty + c,  empty);
+assert_checkequal(empty + R, []);
+assert_checkequal(empty + C, []);
+assert_checkequal(empty + e, []);
+assert_checkequal(empty + ec, []);
+assert_checkequal(empty + p, []);
+assert_checkequal(empty + pc, []);
+assert_checkequal(empty + P, []);
+assert_checkequal(empty + PC, []);
+assert_checkequal(empty + SP, []);
+assert_checkequal(empty + SPC, []);
+assert_checkequal(empty + i8, []);
+assert_checkequal(empty + I8, []);
+assert_checkequal(empty + ui8, []);
+assert_checkequal(empty + UI8, []);
+assert_checkequal(empty + i16, []);
+assert_checkequal(empty + I16, []);
+assert_checkequal(empty + ui16, []);
+assert_checkequal(empty + UI16, []);
+assert_checkequal(empty + i32, []);
+assert_checkequal(empty + I32, []);
+assert_checkequal(empty + ui32, []);
+assert_checkequal(empty + UI32, []);
+
+assert_checkequal(r + empty, []);
 assert_checkequal(r + r, 4);
 assert_checkequal(r + c,  3+%i*2);
 assert_checkequal(r + R, [3,4;5,6]);
@@ -96,7 +96,7 @@ assert_checkequal(r + I32, int32([-30,-62;-94,-126]));
 assert_checkequal(r + ui32, uint32(34));
 assert_checkequal(r + UI32, uint32([34,66;98,130]));
 
-assert_checkequal(c + empty,  1+%i*2);
+assert_checkequal(c + empty,  empty);
 assert_checkequal(c + r,  3+%i*2);
 assert_checkequal(c + c,  2+%i*4);
 assert_checkequal(c + R, [ 2+%i*2, 3+%i*2; 4+%i*2, 5+%i*2]);
@@ -110,7 +110,7 @@ assert_checkequal(c + PC, [3+%i*6+(2-%i*6)*s+(-2+%i*8)*s^2,-2-%i*4+(-3+%i*9)*s+(
 assert_checkequal(c + SP, [ 1+%i*2, 2+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 4+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 3+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 assert_checkequal(c + SPC, [ 1+%i*2, 2+%i*6, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 4+%i*14; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 3+%i*10, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 
-assert_checkequal(R + empty, [1,2;3,4]);
+assert_checkequal(R + empty, []);
 assert_checkequal(R + r, [3,4;5,6]);
 assert_checkequal(R + c, [ 2+%i*2, 3+%i*2; 4+%i*2, 5+%i*2]);
 assert_checkequal(R + R, [2,4;6,8]);
@@ -134,7 +134,7 @@ assert_checkequal(R + I32, int32([-31,-62;-93,-124]));
 assert_checkequal(R + ui32, uint32([33,34;35,36]));
 assert_checkequal(R + UI32, uint32([33,66;99,132]));
 
-assert_checkequal(C + empty, [ 1+%i*2, 2+%i*4; 3+%i*6, 4+%i*8]);
+assert_checkequal(C + empty, []);
 assert_checkequal(C + r, [ 3+%i*2, 4+%i*4; 5+%i*6, 6+%i*8]);
 assert_checkequal(C + c, [ 2+%i*4, 3+%i*6; 4+%i*8, 5+%i*10]);
 assert_checkequal(C + R, [ 2+%i*2, 4+%i*4; 6+%i*6, 8+%i*8]);
@@ -146,7 +146,7 @@ assert_checkequal(C + pc, [2+%i*4+(1-%i*3)*s+(-1+%i*4)*s^2,3+%i*6+(1-%i*3)*s+(-1
 assert_checkequal(C + P, [3+%i*2+2*s-2*s^2,-1+%i*4-3*s+3*s^2;7+%i*6+4*s-4*s^2,-1+%i*8-5*s+5*s^2]);
 assert_checkequal(C + PC, [3+%i*6+(2-%i*6)*s+(-2+%i*8)*s^2,-1-%i*2+(-3+%i*9)*s+(3-%i*12)*s^2;7+%i*14+(4-%i*12)*s+(-4+%i*16)*s^2,-1-%i*2+(-5+%i*15)*s+(5-%i*20)*s^2]);
 
-assert_checkequal(e + empty, eye());
+assert_checkequal(e + empty, []);
 assert_checkequal(e + r, 3);
 assert_checkequal(e + c,  2+%i*2);
 assert_checkequal(e + R, [2,2;3,5]);
@@ -160,7 +160,7 @@ assert_checkequal(e + PC, [3+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(
 assert_checkequal(e + SP, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[1;1;1;1;3;1;2],[4,10]));
 assert_checkequal(e + SPC, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 1; 1+%i*4; 1; 1; 3+%i*12; 1; 2+%i*8],[4,10]));
 
-assert_checkequal(ec + empty, ( 5+%i)*eye());
+assert_checkequal(ec + empty, []);
 assert_checkequal(ec + r,  7+%i);
 assert_checkequal(ec + c,  6+%i*3);
 assert_checkequal(ec + R, [ 6+%i, 2; 3, 9+%i]);
@@ -174,7 +174,7 @@ assert_checkequal(ec + PC, [7+%i*5+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+
 assert_checkequal(ec + SP, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i; 1; 5+%i; 5+%i; 3; 5+%i; 2],[4,10]));
 assert_checkequal(ec + SPC, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i; 1+%i*4; 5+%i; 5+%i; 3+%i*12; 5+%i; 2+%i*8],[4,10]));
 
-assert_checkequal(p + empty, 1+s-s^2);
+assert_checkequal(p + empty, []);
 assert_checkequal(p + r, 3+s-s^2);
 assert_checkequal(p + c, 2+%i*2+s-s^2);
 assert_checkequal(p + R, [2+s-s^2,3+s-s^2;4+s-s^2,5+s-s^2]);
@@ -186,7 +186,7 @@ assert_checkequal(p + pc, 2+%i*2+(2-%i*3)*s+(-2+%i*4)*s^2);
 assert_checkequal(p + P, [3+3*s-3*s^2,-2-2*s+2*s^2;5+5*s-5*s^2,-4-4*s+4*s^2]);
 assert_checkequal(p + PC, [3+%i*4+(3-%i*6)*s+(-3+%i*8)*s^2,-2-%i*6+(-2+%i*9)*s+(2-%i*12)*s^2;5+%i*8+(5-%i*12)*s+(-5+%i*16)*s^2,-4-%i*10+(-4+%i*15)*s+(4-%i*20)*s^2]);
 
-assert_checkequal(pc + empty, 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
+assert_checkequal(pc + empty, []);
 assert_checkequal(pc + r, 3+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
 assert_checkequal(pc + c, 2+%i*4+(1-%i*3)*s+(-1+%i*4)*s^2);
 assert_checkequal(pc + R, [2+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,3+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;4+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,5+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
@@ -198,7 +198,7 @@ assert_checkequal(pc + pc, 2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2);
 assert_checkequal(pc + P, [3+%i*2+(3-%i*3)*s+(-3+%i*4)*s^2,-2+%i*2+(-2-%i*3)*s+(2+%i*4)*s^2;5+%i*2+(5-%i*3)*s+(-5+%i*4)*s^2,-4+%i*2+(-4-%i*3)*s+(4+%i*4)*s^2]);
 assert_checkequal(pc + PC, [3+%i*6+(3-%i*9)*s+(-3+%i*12)*s^2,-2-%i*4+(-2+%i*6)*s+(2-%i*8)*s^2;5+%i*10+(5-%i*15)*s+(-5+%i*20)*s^2,-4-%i*8+(-4+%i*12)*s+(4-%i*16)*s^2]);
 
-assert_checkequal(P + empty, [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
+assert_checkequal(P + empty, []);
 assert_checkequal(P + r, [4+2*s-2*s^2,-1-3*s+3*s^2;6+4*s-4*s^2,-3-5*s+5*s^2]);
 assert_checkequal(P + c, [3+%i*2+2*s-2*s^2,-2+%i*2-3*s+3*s^2;5+%i*2+4*s-4*s^2,-4+%i*2-5*s+5*s^2]);
 assert_checkequal(P + R, [3+2*s-2*s^2,-1-3*s+3*s^2;7+4*s-4*s^2,-1-5*s+5*s^2]);
@@ -210,7 +210,7 @@ assert_checkequal(P + pc, [3+%i*2+(3-%i*3)*s+(-3+%i*4)*s^2,-2+%i*2+(-2-%i*3)*s+(
 assert_checkequal(P + P, [4+4*s-4*s^2,-6-6*s+6*s^2;8+8*s-8*s^2,-10-10*s+10*s^2]);
 assert_checkequal(P + PC, [4+%i*4+(4-%i*6)*s+(-4+%i*8)*s^2,-6-%i*6+(-6+%i*9)*s+(6-%i*12)*s^2;8+%i*8+(8-%i*12)*s+(-8+%i*16)*s^2,-10-%i*10+(-10+%i*15)*s+(10-%i*20)*s^2]);
 
-assert_checkequal(PC + empty, [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
+assert_checkequal(PC + empty, []);
 assert_checkequal(PC + r, [4+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-1-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;6+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-3-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(PC + c, [3+%i*6+(2-%i*6)*s+(-2+%i*8)*s^2,-2-%i*4+(-3+%i*9)*s+(3-%i*12)*s^2;5+%i*10+(4-%i*12)*s+(-4+%i*16)*s^2,-4-%i*8+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(PC + R, [3+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-1-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;7+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-1-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
@@ -222,7 +222,7 @@ assert_checkequal(PC + pc, [3+%i*6+(3-%i*9)*s+(-3+%i*12)*s^2,-2-%i*4+(-2+%i*6)*s
 assert_checkequal(PC + P, [4+%i*4+(4-%i*6)*s+(-4+%i*8)*s^2,-6-%i*6+(-6+%i*9)*s+(6-%i*12)*s^2;8+%i*8+(8-%i*12)*s+(-8+%i*16)*s^2,-10-%i*10+(-10+%i*15)*s+(10-%i*20)*s^2]);
 assert_checkequal(PC + PC, [4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-6-%i*12+(-6+%i*18)*s+(6-%i*24)*s^2;8+%i*16+(8-%i*24)*s+(-8+%i*32)*s^2,-10-%i*20+(-10+%i*30)*s+(10-%i*40)*s^2]);
 
-assert_checkequal(SP + empty, sparse([1,2;3,10;4,5],[1;3;2],[4,10]));
+assert_checkequal(SP + empty, []);
 assert_checkequal(SP + r, [2,3,2,2,2,2,2,2,2,2;2,2,2,2,2,2,2,2,2,2;2,2,2,2,2,2,2,2,2,5;2,2,2,2,4,2,2,2,2,2]);
 assert_checkequal(SP + c, [ 1+%i*2, 2+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 4+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 3+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 assert_checkequal(SP + e, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[1;1;1;1;3;1;2],[4,10]));
@@ -230,7 +230,7 @@ assert_checkequal(SP + ec, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i; 1; 5+%i
 assert_checkequal(SP + SP, sparse([1,2;3,10;4,5],[2;6;4],[4,10]));
 assert_checkequal(SP + SPC, sparse([1,2;3,10;4,5],[ 2+%i*4; 6+%i*12; 4+%i*8],[4,10]));
 
-assert_checkequal(SPC + empty, sparse([1,2;3,10;4,5],[ 1+%i*4; 3+%i*12; 2+%i*8],[4,10]));
+assert_checkequal(SPC + empty, []);
 assert_checkequal(SPC + r, [ 2, 3+%i*4, 2, 2, 2, 2, 2, 2, 2, 2; 2, 2, 2, 2, 2, 2, 2, 2, 2, 2; 2, 2, 2, 2, 2, 2, 2, 2, 2, 5+%i*12; 2, 2, 2, 2, 4+%i*8, 2, 2, 2, 2, 2]);
 assert_checkequal(SPC + c, [ 1+%i*2, 2+%i*6, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 4+%i*14; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 3+%i*10, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 assert_checkequal(SPC + e, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 1; 1+%i*4; 1; 1; 3+%i*12; 1; 2+%i*8],[4,10]));
@@ -238,7 +238,7 @@ assert_checkequal(SPC + ec, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i; 1+%i*4
 assert_checkequal(SPC + SP, sparse([1,2;3,10;4,5],[ 2+%i*4; 6+%i*12; 4+%i*8],[4,10]));
 assert_checkequal(SPC + SPC, sparse([1,2;3,10;4,5],[ 2+%i*8; 6+%i*24; 4+%i*16],[4,10]));
 
-assert_checkequal(i8 + empty, int8(-8));
+assert_checkequal(i8 + empty, []);
 assert_checkequal(i8 + r, int8(-6));
 assert_checkequal(i8 + R, int8([-7,-6;-5,-4]));
 assert_checkequal(i8 + i8, int8(-16));
@@ -254,7 +254,7 @@ assert_checkequal(i8 + I32, int32([-40,-72;-104,-136]));
 assert_checkequal(i8 + ui32, uint32(24));
 assert_checkequal(i8 + UI32, uint32([24,56;88,120]));
 
-assert_checkequal(I8 + empty, int8([-8,-16;-24,-32]));
+assert_checkequal(I8 + empty, []);
 assert_checkequal(I8 + r, int8([-6,-14;-22,-30]));
 assert_checkequal(I8 + R, int8([-7,-14;-21,-28]));
 assert_checkequal(I8 + i8, int8([-16,-24;-32,-40]));
@@ -270,7 +270,7 @@ assert_checkequal(I8 + I32, int32([-40,-80;-120,-160]));
 assert_checkequal(I8 + ui32, uint32([24,16;8,0]));
 assert_checkequal(I8 + UI32, uint32([24,48;72,96]));
 
-assert_checkequal(ui8 + empty, uint8(8));
+assert_checkequal(ui8 + empty, []);
 assert_checkequal(ui8 + r, uint8(10));
 assert_checkequal(ui8 + R, uint8([9,10;11,12]));
 assert_checkequal(ui8 + i8, uint8(0));
@@ -286,7 +286,7 @@ assert_checkequal(ui8 + I32, uint32([4294967272,4294967240;4294967208,4294967176
 assert_checkequal(ui8 + ui32, uint32(40));
 assert_checkequal(ui8 + UI32, uint32([40,72;104,136]));
 
-assert_checkequal(UI8 + empty, uint8([8,16;24,32]));
+assert_checkequal(UI8 + empty, []);
 assert_checkequal(UI8 + r, uint8([10,18;26,34]));
 assert_checkequal(UI8 + R, uint8([9,18;27,36]));
 assert_checkequal(UI8 + i8, uint8([0,8;16,24]));
@@ -302,7 +302,7 @@ assert_checkequal(UI8 + I32, uint32([4294967272,4294967248;4294967224,4294967200
 assert_checkequal(UI8 + ui32, uint32([40,48;56,64]));
 assert_checkequal(UI8 + UI32, uint32([40,80;120,160]));
 
-assert_checkequal(i16 + empty, int16(-16));
+assert_checkequal(i16 + empty, []);
 assert_checkequal(i16 + r, int16(-14));
 assert_checkequal(i16 + R, int16([-15,-14;-13,-12]));
 assert_checkequal(i16 + i8, int16(-24));
@@ -318,7 +318,7 @@ assert_checkequal(i16 + I32, int32([-48,-80;-112,-144]));
 assert_checkequal(i16 + ui32, uint32(16));
 assert_checkequal(i16 + UI32, uint32([16,48;80,112]));
 
-assert_checkequal(I16 + empty, int16([-16,-32;-48,-64]));
+assert_checkequal(I16 + empty, []);
 assert_checkequal(I16 + r, int16([-14,-30;-46,-62]));
 assert_checkequal(I16 + R, int16([-15,-30;-45,-60]));
 assert_checkequal(I16 + i8, int16([-24,-40;-56,-72]));
@@ -334,7 +334,7 @@ assert_checkequal(I16 + I32, int32([-48,-96;-144,-192]));
 assert_checkequal(I16 + ui32, uint32([16,0;4294967280,4294967264]));
 assert_checkequal(I16 + UI32, uint32([16,32;48,64]));
 
-assert_checkequal(ui16 + empty, uint16(16));
+assert_checkequal(ui16 + empty, []);
 assert_checkequal(ui16 + r, uint16(18));
 assert_checkequal(ui16 + R, uint16([17,18;19,20]));
 assert_checkequal(ui16 + i8, uint16(8));
@@ -350,7 +350,7 @@ assert_checkequal(ui16 + I32, uint32([4294967280,4294967248;4294967216,429496718
 assert_checkequal(ui16 + ui32, uint32(48));
 assert_checkequal(ui16 + UI32, uint32([48,80;112,144]));
 
-assert_checkequal(UI16 + empty, uint16([16,32;48,64]));
+assert_checkequal(UI16 + empty, []);
 assert_checkequal(UI16 + r, uint16([18,34;50,66]));
 assert_checkequal(UI16 + R, uint16([17,34;51,68]));
 assert_checkequal(UI16 + i8, uint16([8,24;40,56]));
@@ -366,7 +366,7 @@ assert_checkequal(UI16 + I32, uint32([4294967280,4294967264;4294967248,429496723
 assert_checkequal(UI16 + ui32, uint32([48,64;80,96]));
 assert_checkequal(UI16 + UI32, uint32([48,96;144,192]));
 
-assert_checkequal(i32 + empty, int32(-32));
+assert_checkequal(i32 + empty, []);
 assert_checkequal(i32 + r, int32(-30));
 assert_checkequal(i32 + R, int32([-31,-30;-29,-28]));
 assert_checkequal(i32 + i8, int32(-40));
@@ -382,7 +382,7 @@ assert_checkequal(i32 + I32, int32([-64,-96;-128,-160]));
 assert_checkequal(i32 + ui32, uint32(0));
 assert_checkequal(i32 + UI32, uint32([0,32;64,96]));
 
-assert_checkequal(I32 + empty, int32([-32,-64;-96,-128]));
+assert_checkequal(I32 + empty, []);
 assert_checkequal(I32 + r, int32([-30,-62;-94,-126]));
 assert_checkequal(I32 + R, int32([-31,-62;-93,-124]));
 assert_checkequal(I32 + i8, int32([-40,-72;-104,-136]));
@@ -398,7 +398,7 @@ assert_checkequal(I32 + I32, int32([-64,-128;-192,-256]));
 assert_checkequal(I32 + ui32, uint32([0,4294967264;4294967232,4294967200]));
 assert_checkequal(I32 + UI32, uint32([0,0;0,0]));
 
-assert_checkequal(ui32 + empty, uint32(32));
+assert_checkequal(ui32 + empty, []);
 assert_checkequal(ui32 + r, uint32(34));
 assert_checkequal(ui32 + R, uint32([33,34;35,36]));
 assert_checkequal(ui32 + i8, uint32(24));
@@ -414,7 +414,7 @@ assert_checkequal(ui32 + I32, uint32([0,4294967264;4294967232,4294967200]));
 assert_checkequal(ui32 + ui32, uint32(64));
 assert_checkequal(ui32 + UI32, uint32([64,96;128,160]));
 
-assert_checkequal(UI32 + empty, uint32([32,64;96,128]));
+assert_checkequal(UI32 + empty, []);
 assert_checkequal(UI32 + r, uint32([34,66;98,130]));
 assert_checkequal(UI32 + R, uint32([33,66;99,132]));
 assert_checkequal(UI32 + i8, uint32([24,56;88,120]));
@@ -430,10 +430,10 @@ assert_checkequal(UI32 + I32, uint32([0,0;0,0]));
 assert_checkequal(UI32 + ui32, uint32([64,96;128,160]));
 assert_checkequal(UI32 + UI32, uint32([64,128;192,256]));
 
-assert_checkequal(str + empty, "string");
+assert_checkequal(str + empty, []);
 assert_checkequal(str + str, "stringstring");
 assert_checkequal(str + STR, ["stringstring1","stringstring2";"stringstring3","stringstring4"]);
 
-assert_checkequal(STR + empty, ["string1","string2";"string3","string4"]);
+assert_checkequal(STR + empty, []);
 assert_checkequal(STR + str, ["string1string","string2string";"string3string","string4string"]);
 assert_checkequal(STR + STR, ["string1string1","string2string2";"string3string3","string4string4"]);
index ac08816..e7816db 100644 (file)
@@ -36,31 +36,31 @@ ui32 = uint32(32);
 I32 = int32([-32 -64 ; -96 -128]);
 UI32 = uint32([32 64 ; 96 128]);
 assert_checkequal(empty - empty, []);
-assert_checkequal(empty - r, -2);
-assert_checkequal(empty - c, -1-%i*2);
-assert_checkequal(empty - R, [-1,-2;-3,-4]);
-assert_checkequal(empty - C, [-1-%i*2,-2-%i*4;-3-%i*6,-4-%i*8]);
-assert_checkequal(empty - e, (-1)*eye());
-assert_checkequal(empty - ec, (-5-%i)*eye());
-assert_checkequal(empty - p, -1-s+s^2);
-assert_checkequal(empty - pc, -1-%i*2+(-1+%i*3)*s+(1-%i*4)*s^2);
-assert_checkequal(empty - P, [-2-2*s+2*s^2,3+3*s-3*s^2;-4-4*s+4*s^2,5+5*s-5*s^2]);
-assert_checkequal(empty - PC, [-2-%i*4+(-2+%i*6)*s+(2-%i*8)*s^2,3+%i*6+(3-%i*9)*s+(-3+%i*12)*s^2;-4-%i*8+(-4+%i*12)*s+(4-%i*16)*s^2,5+%i*10+(5-%i*15)*s+(-5+%i*20)*s^2]);
-assert_checkequal(empty - SP, sparse([1,2;3,10;4,5],[-1;-3;-2],[4,10]));
-assert_checkequal(empty - SPC, sparse([1,2;3,10;4,5],[-1-%i*4;-3-%i*12;-2-%i*8],[4,10]));
-assert_checkequal(empty - i8, int8(8));
-assert_checkequal(empty - I8, int8([8,16;24,32]));
-assert_checkequal(empty - ui8, uint8(248));
-assert_checkequal(empty - UI8, uint8([248,240;232,224]));
-assert_checkequal(empty - i16, int16(16));
-assert_checkequal(empty - I16, int16([16,32;48,64]));
-assert_checkequal(empty - ui16, uint16(65520));
-assert_checkequal(empty - UI16, uint16([65520,65504;65488,65472]));
-assert_checkequal(empty - i32, int32(32));
-assert_checkequal(empty - I32, int32([32,64;96,128]));
-assert_checkequal(empty - ui32, uint32(4294967264));
-assert_checkequal(empty - UI32, uint32([4294967264,4294967232;4294967200,4294967168]));
-assert_checkequal(r - empty, 2);
+assert_checkequal(empty - r, []);
+assert_checkequal(empty - c, []);
+assert_checkequal(empty - R, []);
+assert_checkequal(empty - C, []);
+assert_checkequal(empty - e, []);
+assert_checkequal(empty - ec, []);
+assert_checkequal(empty - p, []);
+assert_checkequal(empty - pc, []);
+assert_checkequal(empty - P, []);
+assert_checkequal(empty - PC, []);
+assert_checkequal(empty - SP, []);
+assert_checkequal(empty - SPC, []);
+assert_checkequal(empty - i8, []);
+assert_checkequal(empty - I8, []);
+assert_checkequal(empty - ui8, []);
+assert_checkequal(empty - UI8, []);
+assert_checkequal(empty - i16, []);
+assert_checkequal(empty - I16, []);
+assert_checkequal(empty - ui16, []);
+assert_checkequal(empty - UI16, []);
+assert_checkequal(empty - i32, []);
+assert_checkequal(empty - I32, []);
+assert_checkequal(empty - ui32, []);
+assert_checkequal(empty - UI32, []);
+assert_checkequal(r - empty, []);
 assert_checkequal(r - r, 0);
 assert_checkequal(r - c,  1-%i*2);
 assert_checkequal(r - R, [1,0;-1,-2]);
@@ -85,7 +85,7 @@ assert_checkequal(r - i32, int32(34));
 assert_checkequal(r - I32, int32([34,66;98,130]));
 assert_checkequal(r - ui32, uint32(4294967266));
 assert_checkequal(r - UI32, uint32([4294967266,4294967234;4294967202,4294967170]));
-assert_checkequal(c - empty,  1+%i*2);
+assert_checkequal(c - empty, []);
 assert_checkequal(c - r, -1+%i*2);
 assert_checkequal(c - c, 0*%i);
 assert_checkequal(c - R, [%i*2,-1+%i*2;-2+%i*2,-3+%i*2]);
@@ -98,7 +98,7 @@ assert_checkequal(c - P, [-1+%i*2-2*s+2*s^2,4+%i*2+3*s-3*s^2;-3+%i*2-4*s+4*s^2,6
 assert_checkequal(c - PC, [-1-%i*2+(-2+%i*6)*s+(2-%i*8)*s^2,4+%i*8+(3-%i*9)*s+(-3+%i*12)*s^2;-3-%i*6+(-4+%i*12)*s+(4-%i*16)*s^2,6+%i*12+(5-%i*15)*s+(-5+%i*20)*s^2]);
 assert_checkequal(c - SP, [ 1+%i*2,%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2,-2+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2,-1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 assert_checkequal(c - SPC, [ 1+%i*2,-%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2,-2-%i*10; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2,-1-%i*6, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
-assert_checkequal(R - empty, [1,2;3,4]);
+assert_checkequal(R - empty, []);
 assert_checkequal(R - r, [-1,0;1,2]);
 assert_checkequal(R - c, [-%i*2, 1-%i*2; 2-%i*2, 3-%i*2]);
 assert_checkequal(R - R, [0,0;0,0]);
@@ -121,7 +121,7 @@ assert_checkequal(R - i32, int32([33,34;35,36]));
 assert_checkequal(R - I32, int32([33,66;99,132]));
 assert_checkequal(R - ui32, uint32([4294967265,4294967266;4294967267,4294967268]));
 assert_checkequal(R - UI32, uint32([4294967265,4294967234;4294967203,4294967172]));
-assert_checkequal(C - empty, [ 1+%i*2, 2+%i*4; 3+%i*6, 4+%i*8]);
+assert_checkequal(C - empty, []);
 assert_checkequal(C - r, [-1+%i*2,%i*4; 1+%i*6, 2+%i*8]);
 assert_checkequal(C - c, [0, 1+%i*2; 2+%i*4, 3+%i*6]);
 assert_checkequal(C - R, [%i*2,%i*4;%i*6,%i*8]);
@@ -132,7 +132,7 @@ assert_checkequal(C - p, [%i*2-s+s^2,1+%i*4-s+s^2;2+%i*6-s+s^2,3+%i*8-s+s^2]);
 assert_checkequal(C - pc, [(-1+%i*3)*s+(1-%i*4)*s^2,1+%i*2+(-1+%i*3)*s+(1-%i*4)*s^2;2+%i*4+(-1+%i*3)*s+(1-%i*4)*s^2,3+%i*6+(-1+%i*3)*s+(1-%i*4)*s^2]);
 assert_checkequal(C - P, [-1+%i*2-2*s+2*s^2,5+%i*4+3*s-3*s^2;-1+%i*6-4*s+4*s^2,9+%i*8+5*s-5*s^2]);
 assert_checkequal(C - PC, [-1-%i*2+(-2+%i*6)*s+(2-%i*8)*s^2,5+%i*10+(3-%i*9)*s+(-3+%i*12)*s^2;-1-%i*2+(-4+%i*12)*s+(4-%i*16)*s^2,9+%i*18+(5-%i*15)*s+(-5+%i*20)*s^2]);
-assert_checkequal(e - empty, eye());
+assert_checkequal(e - empty, []);
 assert_checkequal(e - r, -1);
 assert_checkequal(e - c, -%i*2);
 assert_checkequal(e - R, [0,-2;-3,-3]);
@@ -145,7 +145,7 @@ assert_checkequal(e - P, [-1-2*s+2*s^2,3+3*s-3*s^2;-4-4*s+4*s^2,6+5*s-5*s^2]);
 assert_checkequal(e - PC, [-1-%i*4+(-2+%i*6)*s+(2-%i*8)*s^2,3+%i*6+(3-%i*9)*s+(-3+%i*12)*s^2;-4-%i*8+(-4+%i*12)*s+(4-%i*16)*s^2,6+%i*10+(5-%i*15)*s+(-5+%i*20)*s^2]);
 assert_checkequal(e - SP, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[1;-1;1;1;-3;1;-2],[4,10]));
 assert_checkequal(e - SPC, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 1;-1-%i*4; 1; 1;-3-%i*12; 1;-2-%i*8],[4,10]));
-assert_checkequal(ec - empty, ( 5+%i)*eye());
+assert_checkequal(ec - empty, []);
 assert_checkequal(ec - r,  3+%i);
 assert_checkequal(ec - c,  4-%i);
 assert_checkequal(ec - R, [ 4+%i,-2;-3, 1+%i]);
@@ -158,7 +158,7 @@ assert_checkequal(ec - P, [3+%i-2*s+2*s^2,3+3*s-3*s^2;-4-4*s+4*s^2,10+%i+5*s-5*s
 assert_checkequal(ec - PC, [3-%i*3+(-2+%i*6)*s+(2-%i*8)*s^2,3+%i*6+(3-%i*9)*s+(-3+%i*12)*s^2;-4-%i*8+(-4+%i*12)*s+(4-%i*16)*s^2,10+%i*11+(5-%i*15)*s+(-5+%i*20)*s^2]);
 assert_checkequal(ec - SP, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i;-1; 5+%i; 5+%i;-3; 5+%i;-2],[4,10]));
 assert_checkequal(ec - SPC, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i;-1-%i*4; 5+%i; 5+%i;-3-%i*12; 5+%i;-2-%i*8],[4,10]));
-assert_checkequal(p - empty, 1+s-s^2);
+assert_checkequal(p - empty, []);
 assert_checkequal(p - r, -1+s-s^2);
 assert_checkequal(p - c, -%i*2+s-s^2);
 assert_checkequal(p - R, [s-s^2,-1+s-s^2;-2+s-s^2,-3+s-s^2]);
@@ -169,7 +169,7 @@ assert_checkequal(p - p, 0*s);
 assert_checkequal(p - pc, -%i*2+(%i*3)*s+(-%i*4)*s^2);
 assert_checkequal(p - P, [-1-s+s^2,4+4*s-4*s^2;-3-3*s+3*s^2,6+6*s-6*s^2]);
 assert_checkequal(p - PC, [-1-%i*4+(-1+%i*6)*s+(1-%i*8)*s^2,4+%i*6+(4-%i*9)*s+(-4+%i*12)*s^2;-3-%i*8+(-3+%i*12)*s+(3-%i*16)*s^2,6+%i*10+(6-%i*15)*s+(-6+%i*20)*s^2]);
-assert_checkequal(pc - empty, 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
+assert_checkequal(pc - empty, []);
 assert_checkequal(pc - r, -1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
 assert_checkequal(pc - c, (1-%i*3)*s+(-1+%i*4)*s^2);
 assert_checkequal(pc - R, [%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,-1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;-2+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,-3+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
@@ -180,7 +180,7 @@ assert_checkequal(pc - p, %i*2+(-%i*3)*s+(%i*4)*s^2);
 assert_checkequal(pc - pc, 0*s);
 assert_checkequal(pc - P, [-1+%i*2+(-1-%i*3)*s+(1+%i*4)*s^2,4+%i*2+(4-%i*3)*s+(-4+%i*4)*s^2;-3+%i*2+(-3-%i*3)*s+(3+%i*4)*s^2,6+%i*2+(6-%i*3)*s+(-6+%i*4)*s^2]);
 assert_checkequal(pc - PC, [-1-%i*2+(-1+%i*3)*s+(1-%i*4)*s^2,4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2;-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2,6+%i*12+(6-%i*18)*s+(-6+%i*24)*s^2]);
-assert_checkequal(P - empty, [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
+assert_checkequal(P - empty, []);
 assert_checkequal(P - r, [2*s-2*s^2,-5-3*s+3*s^2;2+4*s-4*s^2,-7-5*s+5*s^2]);
 assert_checkequal(P - c, [1-%i*2+2*s-2*s^2,-4-%i*2-3*s+3*s^2;3-%i*2+4*s-4*s^2,-6-%i*2-5*s+5*s^2]);
 assert_checkequal(P - R, [1+2*s-2*s^2,-5-3*s+3*s^2;1+4*s-4*s^2,-9-5*s+5*s^2]);
@@ -191,7 +191,7 @@ assert_checkequal(P - p, [1+s-s^2,-4-4*s+4*s^2;3+3*s-3*s^2,-6-6*s+6*s^2]);
 assert_checkequal(P - pc, [1-%i*2+(1+%i*3)*s+(-1-%i*4)*s^2,-4-%i*2+(-4+%i*3)*s+(4-%i*4)*s^2;3-%i*2+(3+%i*3)*s+(-3-%i*4)*s^2,-6-%i*2+(-6+%i*3)*s+(6-%i*4)*s^2]);
 assert_checkequal(P - P, [0*s,0*s;0*s,0*s]);
 assert_checkequal(P - PC, [-%i*4+(%i*6)*s+(-%i*8)*s^2,%i*6+(-%i*9)*s+(%i*12)*s^2;-%i*8+(%i*12)*s+(-%i*16)*s^2,%i*10+(-%i*15)*s+(%i*20)*s^2]);
-assert_checkequal(PC - empty, [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
+assert_checkequal(PC - empty, []);
 assert_checkequal(PC - r, [%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-5-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;2+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-7-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(PC - c, [1+%i*2+(2-%i*6)*s+(-2+%i*8)*s^2,-4-%i*8+(-3+%i*9)*s+(3-%i*12)*s^2;3+%i*6+(4-%i*12)*s+(-4+%i*16)*s^2,-6-%i*12+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(PC - R, [1+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-5-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;1+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-9-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
@@ -202,21 +202,21 @@ assert_checkequal(PC - p, [1+%i*4+(1-%i*6)*s+(-1+%i*8)*s^2,-4-%i*6+(-4+%i*9)*s+(
 assert_checkequal(PC - pc, [1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,-4-%i*8+(-4+%i*12)*s+(4-%i*16)*s^2;3+%i*6+(3-%i*9)*s+(-3+%i*12)*s^2,-6-%i*12+(-6+%i*18)*s+(6-%i*24)*s^2]);
 assert_checkequal(PC - P, [%i*4+(-%i*6)*s+(%i*8)*s^2,-%i*6+(%i*9)*s+(-%i*12)*s^2;%i*8+(-%i*12)*s+(%i*16)*s^2,-%i*10+(%i*15)*s+(-%i*20)*s^2]);
 assert_checkequal(PC - PC, [0*s,0*s;0*s,0*s]);
-assert_checkequal(SP - empty, sparse([1,2;3,10;4,5],[1;3;2],[4,10]));
+assert_checkequal(SP - empty, []);
 assert_checkequal(SP - r, [-2,-1,-2,-2,-2,-2,-2,-2,-2,-2;-2,-2,-2,-2,-2,-2,-2,-2,-2,-2;-2,-2,-2,-2,-2,-2,-2,-2,-2,1;-2,-2,-2,-2,0,-2,-2,-2,-2,-2]);
 assert_checkequal(SP - c, [-1-%i*2,-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2, 2-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2, 1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2]);
 assert_checkequal(SP - e, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[-1;1;-1;-1;3;-1;2],[4,10]));
 assert_checkequal(SP - ec, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[-5-%i; 1;-5-%i;-5-%i; 3;-5-%i; 2],[4,10]));
 assert_checkequal(SP - SP, sparse([],[],[4,10]));
 assert_checkequal(SP - SPC, sparse([1,2;3,10;4,5],[-%i*4;-%i*12;-%i*8],[4,10]));
-assert_checkequal(SPC - empty, sparse([1,2;3,10;4,5],[ 1+%i*4; 3+%i*12; 2+%i*8],[4,10]));
+assert_checkequal(SPC - empty, []);
 assert_checkequal(SPC - r, [-2,-1+%i*4,-2,-2,-2,-2,-2,-2,-2,-2;-2,-2,-2,-2,-2,-2,-2,-2,-2,-2;-2,-2,-2,-2,-2,-2,-2,-2,-2, 1+%i*12;-2,-2,-2,-2,%i*8,-2,-2,-2,-2,-2]);
 assert_checkequal(SPC - c, [-1-%i*2,%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2, 2+%i*10;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2, 1+%i*6,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2]);
 assert_checkequal(SPC - e, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[-1; 1+%i*4;-1;-1; 3+%i*12;-1; 2+%i*8],[4,10]));
 assert_checkequal(SPC - ec, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[-5-%i; 1+%i*4;-5-%i;-5-%i; 3+%i*12;-5-%i; 2+%i*8],[4,10]));
 assert_checkequal(SPC - SP, sparse([1,2;3,10;4,5],[%i*4;%i*12;%i*8],[4,10]));
 assert_checkequal(SPC - SPC, sparse([],[],[4,10]));
-assert_checkequal(i8 - empty, int8(-8));
+assert_checkequal(i8 - empty, []);
 assert_checkequal(i8 - r, int8(-10));
 assert_checkequal(i8 - R, int8([-9,-10;-11,-12]));
 assert_checkequal(i8 - i8, int8(0));
@@ -231,7 +231,7 @@ assert_checkequal(i8 - i32, int32(24));
 assert_checkequal(i8 - I32, int32([24,56;88,120]));
 assert_checkequal(i8 - ui32, uint32(4294967256));
 assert_checkequal(i8 - UI32, uint32([4294967256,4294967224;4294967192,4294967160]));
-assert_checkequal(I8 - empty, int8([-8,-16;-24,-32]));
+assert_checkequal(I8 - empty, []);
 assert_checkequal(I8 - r, int8([-10,-18;-26,-34]));
 assert_checkequal(I8 - R, int8([-9,-18;-27,-36]));
 assert_checkequal(I8 - i8, int8([0,-8;-16,-24]));
@@ -246,7 +246,7 @@ assert_checkequal(I8 - i32, int32([24,16;8,0]));
 assert_checkequal(I8 - I32, int32([24,48;72,96]));
 assert_checkequal(I8 - ui32, uint32([4294967256,4294967248;4294967240,4294967232]));
 assert_checkequal(I8 - UI32, uint32([4294967256,4294967216;4294967176,4294967136]));
-assert_checkequal(ui8 - empty, uint8(8));
+assert_checkequal(ui8 - empty, []);
 assert_checkequal(ui8 - r, uint8(6));
 assert_checkequal(ui8 - R, uint8([7,6;5,4]));
 assert_checkequal(ui8 - i8, uint8(16));
@@ -261,7 +261,7 @@ assert_checkequal(ui8 - i32, uint32(40));
 assert_checkequal(ui8 - I32, uint32([40,72;104,136]));
 assert_checkequal(ui8 - ui32, uint32(4294967272));
 assert_checkequal(ui8 - UI32, uint32([4294967272,4294967240;4294967208,4294967176]));
-assert_checkequal(UI8 - empty, uint8([8,16;24,32]));
+assert_checkequal(UI8 - empty, []);
 assert_checkequal(UI8 - r, uint8([6,14;22,30]));
 assert_checkequal(UI8 - R, uint8([7,14;21,28]));
 assert_checkequal(UI8 - i8, uint8([16,24;32,40]));
@@ -276,7 +276,7 @@ assert_checkequal(UI8 - i32, uint32([40,48;56,64]));
 assert_checkequal(UI8 - I32, uint32([40,80;120,160]));
 assert_checkequal(UI8 - ui32, uint32([4294967272,4294967280;4294967288,0]));
 assert_checkequal(UI8 - UI32, uint32([4294967272,4294967248;4294967224,4294967200]));
-assert_checkequal(i16 - empty, int16(-16));
+assert_checkequal(i16 - empty, []);
 assert_checkequal(i16 - r, int16(-18));
 assert_checkequal(i16 - R, int16([-17,-18;-19,-20]));
 assert_checkequal(i16 - i8, int16(-8));
@@ -291,7 +291,7 @@ assert_checkequal(i16 - i32, int32(16));
 assert_checkequal(i16 - I32, int32([16,48;80,112]));
 assert_checkequal(i16 - ui32, uint32(4294967248));
 assert_checkequal(i16 - UI32, uint32([4294967248,4294967216;4294967184,4294967152]));
-assert_checkequal(I16 - empty, int16([-16,-32;-48,-64]));
+assert_checkequal(I16 - empty, []);
 assert_checkequal(I16 - r, int16([-18,-34;-50,-66]));
 assert_checkequal(I16 - R, int16([-17,-34;-51,-68]));
 assert_checkequal(I16 - i8, int16([-8,-24;-40,-56]));
@@ -306,7 +306,7 @@ assert_checkequal(I16 - i32, int32([16,0;-16,-32]));
 assert_checkequal(I16 - I32, int32([16,32;48,64]));
 assert_checkequal(I16 - ui32, uint32([4294967248,4294967232;4294967216,4294967200]));
 assert_checkequal(I16 - UI32, uint32([4294967248,4294967200;4294967152,4294967104]));
-assert_checkequal(ui16 - empty, uint16(16));
+assert_checkequal(ui16 - empty, []);
 assert_checkequal(ui16 - r, uint16(14));
 assert_checkequal(ui16 - R, uint16([15,14;13,12]));
 assert_checkequal(ui16 - i8, uint16(24));
@@ -321,7 +321,7 @@ assert_checkequal(ui16 - i32, uint32(48));
 assert_checkequal(ui16 - I32, uint32([48,80;112,144]));
 assert_checkequal(ui16 - ui32, uint32(4294967280));
 assert_checkequal(ui16 - UI32, uint32([4294967280,4294967248;4294967216,4294967184]));
-assert_checkequal(UI16 - empty, uint16([16,32;48,64]));
+assert_checkequal(UI16 - empty, []);
 assert_checkequal(UI16 - r, uint16([14,30;46,62]));
 assert_checkequal(UI16 - R, uint16([15,30;45,60]));
 assert_checkequal(UI16 - i8, uint16([24,40;56,72]));
@@ -336,7 +336,7 @@ assert_checkequal(UI16 - i32, uint32([48,64;80,96]));
 assert_checkequal(UI16 - I32, uint32([48,96;144,192]));
 assert_checkequal(UI16 - ui32, uint32([4294967280,0;16,32]));
 assert_checkequal(UI16 - UI32, uint32([4294967280,4294967264;4294967248,4294967232]));
-assert_checkequal(i32 - empty, int32(-32));
+assert_checkequal(i32 - empty, []);
 assert_checkequal(i32 - r, int32(-34));
 assert_checkequal(i32 - R, int32([-33,-34;-35,-36]));
 assert_checkequal(i32 - i8, int32(-24));
@@ -351,7 +351,7 @@ assert_checkequal(i32 - i32, int32(0));
 assert_checkequal(i32 - I32, int32([0,32;64,96]));
 assert_checkequal(i32 - ui32, uint32(4294967232));
 assert_checkequal(i32 - UI32, uint32([4294967232,4294967200;4294967168,4294967136]));
-assert_checkequal(I32 - empty, int32([-32,-64;-96,-128]));
+assert_checkequal(I32 - empty, []);
 assert_checkequal(I32 - r, int32([-34,-66;-98,-130]));
 assert_checkequal(I32 - R, int32([-33,-66;-99,-132]));
 assert_checkequal(I32 - i8, int32([-24,-56;-88,-120]));
@@ -366,7 +366,7 @@ assert_checkequal(I32 - i32, int32([0,-32;-64,-96]));
 assert_checkequal(I32 - I32, int32([0,0;0,0]));
 assert_checkequal(I32 - ui32, uint32([4294967232,4294967200;4294967168,4294967136]));
 assert_checkequal(I32 - UI32, uint32([4294967232,4294967168;4294967104,4294967040]));
-assert_checkequal(ui32 - empty, uint32(32));
+assert_checkequal(ui32 - empty, []);
 assert_checkequal(ui32 - r, uint32(30));
 assert_checkequal(ui32 - R, uint32([31,30;29,28]));
 assert_checkequal(ui32 - i8, uint32(40));
@@ -381,7 +381,7 @@ assert_checkequal(ui32 - i32, uint32(64));
 assert_checkequal(ui32 - I32, uint32([64,96;128,160]));
 assert_checkequal(ui32 - ui32, uint32(0));
 assert_checkequal(ui32 - UI32, uint32([0,4294967264;4294967232,4294967200]));
-assert_checkequal(UI32 - empty, uint32([32,64;96,128]));
+assert_checkequal(UI32 - empty, []);
 assert_checkequal(UI32 - r, uint32([30,62;94,126]));
 assert_checkequal(UI32 - R, uint32([31,62;93,124]));
 assert_checkequal(UI32 - i8, uint32([40,72;104,136]));
index 01a72ec..7c73a06 100644 (file)
@@ -42,32 +42,32 @@ I32 = int32([-32 -64 ; -96 -128]);
 UI32 = uint32([32 64 ; 96 128]);
 
 assert_checkequal(empty - empty, []);
-assert_checkequal(empty - r, -2);
-assert_checkequal(empty - c, -1-%i*2);
-assert_checkequal(empty - R, [-1,-2;-3,-4]);
-assert_checkequal(empty - C, [-1-%i*2,-2-%i*4;-3-%i*6,-4-%i*8]);
-assert_checkequal(empty - e, (-1)*eye());
-assert_checkequal(empty - ec, (-5-%i)*eye());
-assert_checkequal(empty - p, -1-s+s^2);
-assert_checkequal(empty - pc, -1-%i*2+(-1+%i*3)*s+(1-%i*4)*s^2);
-assert_checkequal(empty - P, [-2-2*s+2*s^2,3+3*s-3*s^2;-4-4*s+4*s^2,5+5*s-5*s^2]);
-assert_checkequal(empty - PC, [-2-%i*4+(-2+%i*6)*s+(2-%i*8)*s^2,3+%i*6+(3-%i*9)*s+(-3+%i*12)*s^2;-4-%i*8+(-4+%i*12)*s+(4-%i*16)*s^2,5+%i*10+(5-%i*15)*s+(-5+%i*20)*s^2]);
-assert_checkequal(empty - SP, sparse([1,2;3,10;4,5],[-1;-3;-2],[4,10]));
-assert_checkequal(empty - SPC, sparse([1,2;3,10;4,5],[-1-%i*4;-3-%i*12;-2-%i*8],[4,10]));
-assert_checkequal(empty - i8, int8(8));
-assert_checkequal(empty - I8, int8([8,16;24,32]));
-assert_checkequal(empty - ui8, uint8(248));
-assert_checkequal(empty - UI8, uint8([248,240;232,224]));
-assert_checkequal(empty - i16, int16(16));
-assert_checkequal(empty - I16, int16([16,32;48,64]));
-assert_checkequal(empty - ui16, uint16(65520));
-assert_checkequal(empty - UI16, uint16([65520,65504;65488,65472]));
-assert_checkequal(empty - i32, int32(32));
-assert_checkequal(empty - I32, int32([32,64;96,128]));
-assert_checkequal(empty - ui32, uint32(4294967264));
-assert_checkequal(empty - UI32, uint32([4294967264,4294967232;4294967200,4294967168]));
-
-assert_checkequal(r - empty, 2);
+assert_checkequal(empty - r, []);
+assert_checkequal(empty - c, []);
+assert_checkequal(empty - R, []);
+assert_checkequal(empty - C, []);
+assert_checkequal(empty - e, []);
+assert_checkequal(empty - ec, []);
+assert_checkequal(empty - p, []);
+assert_checkequal(empty - pc, []);
+assert_checkequal(empty - P, []);
+assert_checkequal(empty - PC, []);
+assert_checkequal(empty - SP, []);
+assert_checkequal(empty - SPC, []);
+assert_checkequal(empty - i8, []);
+assert_checkequal(empty - I8, []);
+assert_checkequal(empty - ui8, []);
+assert_checkequal(empty - UI8, []);
+assert_checkequal(empty - i16, []);
+assert_checkequal(empty - I16, []);
+assert_checkequal(empty - ui16, []);
+assert_checkequal(empty - UI16, []);
+assert_checkequal(empty - i32, []);
+assert_checkequal(empty - I32, []);
+assert_checkequal(empty - ui32, []);
+assert_checkequal(empty - UI32, []);
+
+assert_checkequal(r - empty, []);
 assert_checkequal(r - r, 0);
 assert_checkequal(r - c,  1-%i*2);
 assert_checkequal(r - R, [1,0;-1,-2]);
@@ -93,7 +93,7 @@ assert_checkequal(r - I32, int32([34,66;98,130]));
 assert_checkequal(r - ui32, uint32(4294967266));
 assert_checkequal(r - UI32, uint32([4294967266,4294967234;4294967202,4294967170]));
 
-assert_checkequal(c - empty,  1+%i*2);
+assert_checkequal(c - empty, []);
 assert_checkequal(c - r, -1+%i*2);
 assert_checkequal(c - c, 0*%i);
 assert_checkequal(c - R, [%i*2,-1+%i*2;-2+%i*2,-3+%i*2]);
@@ -107,7 +107,7 @@ assert_checkequal(c - PC, [-1-%i*2+(-2+%i*6)*s+(2-%i*8)*s^2,4+%i*8+(3-%i*9)*s+(-
 assert_checkequal(c - SP, [ 1+%i*2,%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2,-2+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2,-1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 assert_checkequal(c - SPC, [ 1+%i*2,-%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2,-2-%i*10; 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2,-1-%i*6, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2, 1+%i*2]);
 
-assert_checkequal(R - empty, [1,2;3,4]);
+assert_checkequal(R - empty, []);
 assert_checkequal(R - r, [-1,0;1,2]);
 assert_checkequal(R - c, [-%i*2, 1-%i*2; 2-%i*2, 3-%i*2]);
 assert_checkequal(R - R, [0,0;0,0]);
@@ -131,7 +131,7 @@ assert_checkequal(R - I32, int32([33,66;99,132]));
 assert_checkequal(R - ui32, uint32([4294967265,4294967266;4294967267,4294967268]));
 assert_checkequal(R - UI32, uint32([4294967265,4294967234;4294967203,4294967172]));
 
-assert_checkequal(C - empty, [ 1+%i*2, 2+%i*4; 3+%i*6, 4+%i*8]);
+assert_checkequal(C - empty, []);
 assert_checkequal(C - r, [-1+%i*2,%i*4; 1+%i*6, 2+%i*8]);
 assert_checkequal(C - c, [0, 1+%i*2; 2+%i*4, 3+%i*6]);
 assert_checkequal(C - R, [%i*2,%i*4;%i*6,%i*8]);
@@ -143,7 +143,7 @@ assert_checkequal(C - pc, [(-1+%i*3)*s+(1-%i*4)*s^2,1+%i*2+(-1+%i*3)*s+(1-%i*4)*
 assert_checkequal(C - P, [-1+%i*2-2*s+2*s^2,5+%i*4+3*s-3*s^2;-1+%i*6-4*s+4*s^2,9+%i*8+5*s-5*s^2]);
 assert_checkequal(C - PC, [-1-%i*2+(-2+%i*6)*s+(2-%i*8)*s^2,5+%i*10+(3-%i*9)*s+(-3+%i*12)*s^2;-1-%i*2+(-4+%i*12)*s+(4-%i*16)*s^2,9+%i*18+(5-%i*15)*s+(-5+%i*20)*s^2]);
 
-assert_checkequal(e - empty, eye());
+assert_checkequal(e - empty, []);
 assert_checkequal(e - r, -1);
 assert_checkequal(e - c, -%i*2);
 assert_checkequal(e - R, [0,-2;-3,-3]);
@@ -157,7 +157,7 @@ assert_checkequal(e - PC, [-1-%i*4+(-2+%i*6)*s+(2-%i*8)*s^2,3+%i*6+(3-%i*9)*s+(-
 assert_checkequal(e - SP, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[1;-1;1;1;-3;1;-2],[4,10]));
 assert_checkequal(e - SPC, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 1;-1-%i*4; 1; 1;-3-%i*12; 1;-2-%i*8],[4,10]));
 
-assert_checkequal(ec - empty, ( 5+%i)*eye());
+assert_checkequal(ec - empty, []);
 assert_checkequal(ec - r,  3+%i);
 assert_checkequal(ec - c,  4-%i);
 assert_checkequal(ec - R, [ 4+%i,-2;-3, 1+%i]);
@@ -171,7 +171,7 @@ assert_checkequal(ec - PC, [3-%i*3+(-2+%i*6)*s+(2-%i*8)*s^2,3+%i*6+(3-%i*9)*s+(-
 assert_checkequal(ec - SP, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i;-1; 5+%i; 5+%i;-3; 5+%i;-2],[4,10]));
 assert_checkequal(ec - SPC, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[ 5+%i;-1-%i*4; 5+%i; 5+%i;-3-%i*12; 5+%i;-2-%i*8],[4,10]));
 
-assert_checkequal(p - empty, 1+s-s^2);
+assert_checkequal(p - empty, []);
 assert_checkequal(p - r, -1+s-s^2);
 assert_checkequal(p - c, -%i*2+s-s^2);
 assert_checkequal(p - R, [s-s^2,-1+s-s^2;-2+s-s^2,-3+s-s^2]);
@@ -183,7 +183,7 @@ assert_checkequal(p - pc, -%i*2+(%i*3)*s+(-%i*4)*s^2);
 assert_checkequal(p - P, [-1-s+s^2,4+4*s-4*s^2;-3-3*s+3*s^2,6+6*s-6*s^2]);
 assert_checkequal(p - PC, [-1-%i*4+(-1+%i*6)*s+(1-%i*8)*s^2,4+%i*6+(4-%i*9)*s+(-4+%i*12)*s^2;-3-%i*8+(-3+%i*12)*s+(3-%i*16)*s^2,6+%i*10+(6-%i*15)*s+(-6+%i*20)*s^2]);
 
-assert_checkequal(pc - empty, 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
+assert_checkequal(pc - empty, []);
 assert_checkequal(pc - r, -1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
 assert_checkequal(pc - c, (1-%i*3)*s+(-1+%i*4)*s^2);
 assert_checkequal(pc - R, [%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,-1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;-2+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,-3+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
@@ -195,7 +195,7 @@ assert_checkequal(pc - pc, 0*s);
 assert_checkequal(pc - P, [-1+%i*2+(-1-%i*3)*s+(1+%i*4)*s^2,4+%i*2+(4-%i*3)*s+(-4+%i*4)*s^2;-3+%i*2+(-3-%i*3)*s+(3+%i*4)*s^2,6+%i*2+(6-%i*3)*s+(-6+%i*4)*s^2]);
 assert_checkequal(pc - PC, [-1-%i*2+(-1+%i*3)*s+(1-%i*4)*s^2,4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2;-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2,6+%i*12+(6-%i*18)*s+(-6+%i*24)*s^2]);
 
-assert_checkequal(P - empty, [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
+assert_checkequal(P - empty, []);
 assert_checkequal(P - r, [2*s-2*s^2,-5-3*s+3*s^2;2+4*s-4*s^2,-7-5*s+5*s^2]);
 assert_checkequal(P - c, [1-%i*2+2*s-2*s^2,-4-%i*2-3*s+3*s^2;3-%i*2+4*s-4*s^2,-6-%i*2-5*s+5*s^2]);
 assert_checkequal(P - R, [1+2*s-2*s^2,-5-3*s+3*s^2;1+4*s-4*s^2,-9-5*s+5*s^2]);
@@ -207,7 +207,7 @@ assert_checkequal(P - pc, [1-%i*2+(1+%i*3)*s+(-1-%i*4)*s^2,-4-%i*2+(-4+%i*3)*s+(
 assert_checkequal(P - P, [0*s,0*s;0*s,0*s]);
 assert_checkequal(P - PC, [-%i*4+(%i*6)*s+(-%i*8)*s^2,%i*6+(-%i*9)*s+(%i*12)*s^2;-%i*8+(%i*12)*s+(-%i*16)*s^2,%i*10+(-%i*15)*s+(%i*20)*s^2]);
 
-assert_checkequal(PC - empty, [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
+assert_checkequal(PC - empty, []);
 assert_checkequal(PC - r, [%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-5-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;2+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-7-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(PC - c, [1+%i*2+(2-%i*6)*s+(-2+%i*8)*s^2,-4-%i*8+(-3+%i*9)*s+(3-%i*12)*s^2;3+%i*6+(4-%i*12)*s+(-4+%i*16)*s^2,-6-%i*12+(-5+%i*15)*s+(5-%i*20)*s^2]);
 assert_checkequal(PC - R, [1+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-5-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;1+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-9-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
@@ -219,7 +219,7 @@ assert_checkequal(PC - pc, [1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,-4-%i*8+(-4+%i*12)*s
 assert_checkequal(PC - P, [%i*4+(-%i*6)*s+(%i*8)*s^2,-%i*6+(%i*9)*s+(-%i*12)*s^2;%i*8+(-%i*12)*s+(%i*16)*s^2,-%i*10+(%i*15)*s+(-%i*20)*s^2]);
 assert_checkequal(PC - PC, [0*s,0*s;0*s,0*s]);
 
-assert_checkequal(SP - empty, sparse([1,2;3,10;4,5],[1;3;2],[4,10]));
+assert_checkequal(SP - empty, []);
 assert_checkequal(SP - r, [-2,-1,-2,-2,-2,-2,-2,-2,-2,-2;-2,-2,-2,-2,-2,-2,-2,-2,-2,-2;-2,-2,-2,-2,-2,-2,-2,-2,-2,1;-2,-2,-2,-2,0,-2,-2,-2,-2,-2]);
 assert_checkequal(SP - c, [-1-%i*2,-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2, 2-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2, 1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2]);
 assert_checkequal(SP - e, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[-1;1;-1;-1;3;-1;2],[4,10]));
@@ -227,7 +227,7 @@ assert_checkequal(SP - ec, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[-5-%i; 1;-5-%i
 assert_checkequal(SP - SP, sparse([],[],[4,10]));
 assert_checkequal(SP - SPC, sparse([1,2;3,10;4,5],[-%i*4;-%i*12;-%i*8],[4,10]));
 
-assert_checkequal(SPC - empty, sparse([1,2;3,10;4,5],[ 1+%i*4; 3+%i*12; 2+%i*8],[4,10]));
+assert_checkequal(SPC - empty, []);
 assert_checkequal(SPC - r, [-2,-1+%i*4,-2,-2,-2,-2,-2,-2,-2,-2;-2,-2,-2,-2,-2,-2,-2,-2,-2,-2;-2,-2,-2,-2,-2,-2,-2,-2,-2, 1+%i*12;-2,-2,-2,-2,%i*8,-2,-2,-2,-2,-2]);
 assert_checkequal(SPC - c, [-1-%i*2,%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2, 2+%i*10;-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2, 1+%i*6,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2,-1-%i*2]);
 assert_checkequal(SPC - e, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[-1; 1+%i*4;-1;-1; 3+%i*12;-1; 2+%i*8],[4,10]));
@@ -235,7 +235,7 @@ assert_checkequal(SPC - ec, sparse([1,1;1,2;2,2;3,3;3,10;4,4;4,5],[-5-%i; 1+%i*4
 assert_checkequal(SPC - SP, sparse([1,2;3,10;4,5],[%i*4;%i*12;%i*8],[4,10]));
 assert_checkequal(SPC - SPC, sparse([],[],[4,10]));
 
-assert_checkequal(i8 - empty, int8(-8));
+assert_checkequal(i8 - empty, []);
 assert_checkequal(i8 - r, int8(-10));
 assert_checkequal(i8 - R, int8([-9,-10;-11,-12]));
 assert_checkequal(i8 - i8, int8(0));
@@ -251,7 +251,7 @@ assert_checkequal(i8 - I32, int32([24,56;88,120]));
 assert_checkequal(i8 - ui32, uint32(4294967256));
 assert_checkequal(i8 - UI32, uint32([4294967256,4294967224;4294967192,4294967160]));
 
-assert_checkequal(I8 - empty, int8([-8,-16;-24,-32]));
+assert_checkequal(I8 - empty, []);
 assert_checkequal(I8 - r, int8([-10,-18;-26,-34]));
 assert_checkequal(I8 - R, int8([-9,-18;-27,-36]));
 assert_checkequal(I8 - i8, int8([0,-8;-16,-24]));
@@ -267,7 +267,7 @@ assert_checkequal(I8 - I32, int32([24,48;72,96]));
 assert_checkequal(I8 - ui32, uint32([4294967256,4294967248;4294967240,4294967232]));
 assert_checkequal(I8 - UI32, uint32([4294967256,4294967216;4294967176,4294967136]));
 
-assert_checkequal(ui8 - empty, uint8(8));
+assert_checkequal(ui8 - empty, []);
 assert_checkequal(ui8 - r, uint8(6));
 assert_checkequal(ui8 - R, uint8([7,6;5,4]));
 assert_checkequal(ui8 - i8, uint8(16));
@@ -283,7 +283,7 @@ assert_checkequal(ui8 - I32, uint32([40,72;104,136]));
 assert_checkequal(ui8 - ui32, uint32(4294967272));
 assert_checkequal(ui8 - UI32, uint32([4294967272,4294967240;4294967208,4294967176]));
 
-assert_checkequal(UI8 - empty, uint8([8,16;24,32]));
+assert_checkequal(UI8 - empty, []);
 assert_checkequal(UI8 - r, uint8([6,14;22,30]));
 assert_checkequal(UI8 - R, uint8([7,14;21,28]));
 assert_checkequal(UI8 - i8, uint8([16,24;32,40]));
@@ -299,7 +299,7 @@ assert_checkequal(UI8 - I32, uint32([40,80;120,160]));
 assert_checkequal(UI8 - ui32, uint32([4294967272,4294967280;4294967288,0]));
 assert_checkequal(UI8 - UI32, uint32([4294967272,4294967248;4294967224,4294967200]));
 
-assert_checkequal(i16 - empty, int16(-16));
+assert_checkequal(i16 - empty, []);
 assert_checkequal(i16 - r, int16(-18));
 assert_checkequal(i16 - R, int16([-17,-18;-19,-20]));
 assert_checkequal(i16 - i8, int16(-8));
@@ -315,7 +315,7 @@ assert_checkequal(i16 - I32, int32([16,48;80,112]));
 assert_checkequal(i16 - ui32, uint32(4294967248));
 assert_checkequal(i16 - UI32, uint32([4294967248,4294967216;4294967184,4294967152]));
 
-assert_checkequal(I16 - empty, int16([-16,-32;-48,-64]));
+assert_checkequal(I16 - empty, []);
 assert_checkequal(I16 - r, int16([-18,-34;-50,-66]));
 assert_checkequal(I16 - R, int16([-17,-34;-51,-68]));
 assert_checkequal(I16 - i8, int16([-8,-24;-40,-56]));
@@ -331,7 +331,7 @@ assert_checkequal(I16 - I32, int32([16,32;48,64]));
 assert_checkequal(I16 - ui32, uint32([4294967248,4294967232;4294967216,4294967200]));
 assert_checkequal(I16 - UI32, uint32([4294967248,4294967200;4294967152,4294967104]));
 
-assert_checkequal(ui16 - empty, uint16(16));
+assert_checkequal(ui16 - empty, []);
 assert_checkequal(ui16 - r, uint16(14));
 assert_checkequal(ui16 - R, uint16([15,14;13,12]));
 assert_checkequal(ui16 - i8, uint16(24));
@@ -347,7 +347,7 @@ assert_checkequal(ui16 - I32, uint32([48,80;112,144]));
 assert_checkequal(ui16 - ui32, uint32(4294967280));
 assert_checkequal(ui16 - UI32, uint32([4294967280,4294967248;4294967216,4294967184]));
 
-assert_checkequal(UI16 - empty, uint16([16,32;48,64]));
+assert_checkequal(UI16 - empty, []);
 assert_checkequal(UI16 - r, uint16([14,30;46,62]));
 assert_checkequal(UI16 - R, uint16([15,30;45,60]));
 assert_checkequal(UI16 - i8, uint16([24,40;56,72]));
@@ -363,7 +363,7 @@ assert_checkequal(UI16 - I32, uint32([48,96;144,192]));
 assert_checkequal(UI16 - ui32, uint32([4294967280,0;16,32]));
 assert_checkequal(UI16 - UI32, uint32([4294967280,4294967264;4294967248,4294967232]));
 
-assert_checkequal(i32 - empty, int32(-32));
+assert_checkequal(i32 - empty, []);
 assert_checkequal(i32 - r, int32(-34));
 assert_checkequal(i32 - R, int32([-33,-34;-35,-36]));
 assert_checkequal(i32 - i8, int32(-24));
@@ -379,7 +379,7 @@ assert_checkequal(i32 - I32, int32([0,32;64,96]));
 assert_checkequal(i32 - ui32, uint32(4294967232));
 assert_checkequal(i32 - UI32, uint32([4294967232,4294967200;4294967168,4294967136]));
 
-assert_checkequal(I32 - empty, int32([-32,-64;-96,-128]));
+assert_checkequal(I32 - empty, []);
 assert_checkequal(I32 - r, int32([-34,-66;-98,-130]));
 assert_checkequal(I32 - R, int32([-33,-66;-99,-132]));
 assert_checkequal(I32 - i8, int32([-24,-56;-88,-120]));
@@ -395,7 +395,7 @@ assert_checkequal(I32 - I32, int32([0,0;0,0]));
 assert_checkequal(I32 - ui32, uint32([4294967232,4294967200;4294967168,4294967136]));
 assert_checkequal(I32 - UI32, uint32([4294967232,4294967168;4294967104,4294967040]));
 
-assert_checkequal(ui32 - empty, uint32(32));
+assert_checkequal(ui32 - empty, []);
 assert_checkequal(ui32 - r, uint32(30));
 assert_checkequal(ui32 - R, uint32([31,30;29,28]));
 assert_checkequal(ui32 - i8, uint32(40));
@@ -411,7 +411,7 @@ assert_checkequal(ui32 - I32, uint32([64,96;128,160]));
 assert_checkequal(ui32 - ui32, uint32(0));
 assert_checkequal(ui32 - UI32, uint32([0,4294967264;4294967232,4294967200]));
 
-assert_checkequal(UI32 - empty, uint32([32,64;96,128]));
+assert_checkequal(UI32 - empty, []);
 assert_checkequal(UI32 - r, uint32([30,62;94,126]));
 assert_checkequal(UI32 - R, uint32([31,62;93,124]));
 assert_checkequal(UI32 - i8, uint32([40,72;104,136]));
index 3803d6a..a7d53d1 100644 (file)
@@ -15,7 +15,7 @@
             <literal> [] * A = A * [] = [] </literal>
         </para>
         <para>
-            <literal> [] + A = A + [] = A</literal>
+            <literal> [] + A = A + [] = []</literal>
         </para>
         <para>
             <literal>[ [], A] = [A, []] = A </literal>
@@ -67,4 +67,13 @@ size(wr), w1=ss2tf(wr), size(w1)
             </member>
         </simplelist>
     </refsection>
+    <refsection>
+        <title>History</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.0.0</revnumber>
+                <revremark>Modified the behaviour of <literal>A + []</literal> to be the empty matrix <literal>[]</literal> instead of <literal>A</literal></revremark>
+            </revision>
+        </revhistory>
+    </refsection>
 </refentry>
index 2519bd0..10c4233 100644 (file)
@@ -48,8 +48,7 @@
         <para>Subtraction</para>
         <para>For numeric operands subtraction as its usual meaning. If one of
             the operands is a matrix and the other one a scalar then the operation is
-            performed element-wise. For <literal>X - Y</literal>, if <literal>Y==[]</literal> then <literal>X</literal> is returned; if
-            <literal>X==[]</literal> then <literal>-Y</literal> is returned.
+            performed element-wise. For <literal>X - Y</literal>, if <literal>Y == []</literal> or <literal>Y == []</literal> then <literal>[]</literal> is returned;
         </para>
         <para>Subtraction may also be defined for other data types through
             "soft-coded" operations (see <link linkend="overloading">overloading</link>).
             </member>
         </simplelist>
     </refsection>
+    <refsection>
+        <title>History</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.0.0</revnumber>
+                <revremark>Modified the behaviour of <literal>A - []</literal> and <literal>[] - A</literal> to return the empty matrix <literal>[]</literal> instead of <literal>A</literal> or <literal>-A</literal></revremark>
+            </revision>
+        </revhistory>
+    </refsection>
 </refentry>
index 28be1b9..9d91c34 100644 (file)
@@ -39,7 +39,7 @@
             For numeric operands addition as its usual meaning.
             If one of the operands is a matrix and the other one a scalar the
             scalar is added to each matrix entries. If one of the operands is an
-            empty matrix the other operand is returned (this default behavior can be modified by the function <literal>mtlb_mode</literal>).
+            empty matrix the empty matrix <literal>[]</literal> is returned).
         </para>
         <para>
             For character strings <literal>+</literal> means concatenation.
@@ -71,4 +71,13 @@ s+2
             </member>
         </simplelist>
     </refsection>
+    <refsection>
+        <title>History</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.0.0</revnumber>
+                <revremark>Modified the behaviour of <literal>A + []</literal> to be the empty matrix <literal>[]</literal> instead of <literal>A</literal></revremark>
+            </revision>
+        </revhistory>
+    </refsection>
 </refentry>
index 7a85096..73b1b37 100644 (file)
@@ -15,7 +15,7 @@
             <literal> [] * A = A * [] = [] </literal>
         </para>
         <para>
-            <literal> [] + A = A + [] = A </literal>
+            <literal> [] + A = A + [] = [] </literal>
         </para>
         <para>
             <literal> [ [], A] = [A, []] = A </literal>
index c5e5d8a..f4751e3 100644 (file)
@@ -16,7 +16,7 @@
             <literal> [] * A = A * [] = [] </literal>
         </para>
         <para>
-            <literal> [] + A = A + [] = A</literal>
+            <literal> [] + A = A + [] = []</literal>
         </para>
         <para>
             [ [], A] = [A, []] = A
index f82e177..7388c82 100644 (file)
@@ -16,7 +16,7 @@
             <literal> [] * A = A * [] = [] </literal>
         </para>
         <para>
-            <literal> [] + A = A + [] = A</literal>
+            <literal> [] + A = A + [] = []</literal>
         </para>
         <para>
             [ [], A] = [A, []] = A <literal> inv([]) =[] </literal>
index 7fa0796..0961e4e 100644 (file)
@@ -15,7 +15,7 @@
             <literal> [] * A = A * [] = [] </literal>
         </para>
         <para>
-            <literal> [] + A = A + [] = A</literal>
+            <literal> [] + A = A + [] = []</literal>
         </para>
         <para>
             <literal>[ [], A] = [A, []] = A </literal>
index 259fb11..c1be14c 100644 (file)
@@ -55,7 +55,7 @@
                 <term>Empty matrix and addition:</term>
                 <listitem>
                     <para>
-                        In Matlab, addition can only be made if the operands have the same size unless one is a scalar. For exemple, empty matrices can only be added to another empty matrix or a scalar. Note that when you add a scalar and an empty matrix, Matlab result is always an empty matrix while in Scilab, result is equal to the scalar.
+                        In Matlab, addition can only be made if the operands have the same size unless one is a scalar. For exemple, empty matrices can only be added to another empty matrix or a scalar.
                     </para>
                 </listitem>
             </varlistentry>
@@ -98,7 +98,7 @@ str = 'str1str2'
 str = strcat(['str1','str2'])
 str = 'str1str2'
 A = 1 + []
-A = 1    
+A = []   
 ]]></programlisting>
                 </td>
             </tr>
index 31bf13d..3a8abbb 100644 (file)
                     <para>
                         In Matlab, subtraction can only be made if the operands have the same size unless one is a scalar. For exemple, empty matrices can only be subtracted to another empty matrix or a scalar.
                     </para>
-                    <para>
-                        <note>
-                            Note that when you subtract an empty matrix to a scalar and inversely, Matlab result is always an empty matrix while in Scilab, result is equal to the scalar.
-                        </note>
-                    </para>
                 </listitem>
             </varlistentry>
         </variablelist>
@@ -79,10 +74,19 @@ A = []
                 <td>
                     <programlisting role="example"><![CDATA[
 A = 1 - []
-A = 1    
+A = []    
 ]]></programlisting>
                 </td>
             </tr>
         </informaltable>
     </refsection>
+    <refsection>
+        <title>History</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.0.0</revnumber>
+                <revremark>Modified the behaviour of <literal>A - []</literal> and <literal>[] - A</literal> to return the empty matrix <literal>[]</literal> instead of <literal>A</literal> or <literal>-A</literal></revremark>
+            </revision>
+        </revhistory>
+    </refsection>
 </refentry>
index d954a16..921f9f9 100644 (file)
@@ -31,14 +31,16 @@ if with_modelica_compiler() then
     models = findfiles(pwd(),"*.mo");
     // Exception, we don't build 'Maths.mo' :(
     // TO DO : modify this (SimonĂ© or Laurent) move files
-    models = [models(1:find(models == "Maths.mo")-1) ; models(find(models == "Maths.mo")+1:size(models,"*"))];
+    pos = find(models == "Maths.mo");
+    if(isempty(pos) == %f) then
+        models = [models(1:pos-1) ; models(pos+1:size(models,"*"))];
 
-    fd = mopen("models","wt");
-    for i=1:size(models,"*")
-        mputstr(models(i) + ascii(13),fd);
+        fd = mopen("models","wt");
+        for i=1:size(models,"*")
+            mputstr(models(i) + ascii(13),fd);
+        end
+        mclose(fd);
     end
-    mclose(fd);
-
     // generate moc files
     //exec("../../src/scripts/genmoc.sce");
 end;
index 4ff0403..0da4980 100644 (file)
@@ -112,7 +112,7 @@ function t=str2exp(a,lmax)
 
     [m,n]=size(a),
     dots="."+"."
-    t=[];
+    t="";
     quote="''"
 
     a=strsubst(a,quote,quote+quote)