types_or fixed with [] 16/16316/3
Cedric Delamarre [Thu, 2 Apr 2015 16:24:36 +0000 (18:24 +0200)]
[] | %t

test_run arnoldi eigs

Change-Id: Ibc1263ab44b8276116519301feeaaa1963497573

scilab/modules/ast/includes/operations/types_or.hxx
scilab/modules/ast/src/cpp/operations/types_or.cpp

index e8083d1..78f679e 100644 (file)
@@ -50,6 +50,8 @@ DECLARE_OR_PROTO(or_int_S_S);
 template<> inline types::InternalType* or_M_M<types::SparseBool, types::SparseBool, types::SparseBool>(types::SparseBool* _pL, types::SparseBool* _pR);
 template<> inline types::InternalType* or_M_M<types::SparseBool, types::Bool, types::SparseBool>(types::SparseBool* _pL, types::Bool* _pR);
 template<> inline types::InternalType* or_M_M<types::Bool, types::SparseBool, types::SparseBool>(types::Bool* _pL, types::SparseBool* _pR);
+template<> inline types::InternalType* or_M_E<types::Bool, types::Double, types::Bool>(types::Bool* _pL, types::Double* _pR);
+template<> inline types::InternalType* or_E_M<types::Double, types::Bool, types::Bool>(types::Double* _pL, types::Bool* _pR);
 
 //x & x
 template<typename T, typename U, typename O> inline static void bit_or(T* l, long long size, U* r, O* o)
index 3dda265..d1e6cd9 100644 (file)
@@ -58,7 +58,7 @@ void fillOrFunction()
     scilab_fill_or(Bool, ScalarDouble, M_S, Bool, Double, Bool);
     scilab_fill_or(Bool, ScalarBool, M_S, Bool, Bool, Bool);
 
-    scilab_fill_or(Bool, Empty, M_E, Bool, Double, Double);
+    scilab_fill_or(Bool, Empty, M_E, Bool, Double, Bool);
     scilab_fill_or(Bool, Identity, M_S, Bool, Double, Bool);
 
     scilab_fill_or(ScalarBool, Double, S_M, Bool, Double, Bool);
@@ -67,14 +67,14 @@ void fillOrFunction()
     scilab_fill_or(ScalarBool, ScalarDouble, S_S, Bool, Double, Bool);
     scilab_fill_or(ScalarBool, ScalarBool, S_S, Bool, Bool, Bool);
 
-    scilab_fill_or(ScalarBool, Empty, M_E, Bool, Double, Double);
+    scilab_fill_or(ScalarBool, Empty, M_E, Bool, Double, Bool);
     scilab_fill_or(ScalarBool, Identity, S_S, Bool, Double, Bool);
 
     // []
     scilab_fill_or(Empty, Double, E_M, Double, Double, Double);
-    scilab_fill_or(Empty, Bool, E_M, Double, Bool, Double);
+    scilab_fill_or(Empty, Bool, E_M, Double, Bool, Bool);
     scilab_fill_or(Empty, ScalarDouble, E_M, Double, Double, Double);
-    scilab_fill_or(Empty, ScalarBool, E_M, Double, Bool, Double);
+    scilab_fill_or(Empty, ScalarBool, E_M, Double, Bool, Bool);
     scilab_fill_or(Empty, Empty, E_M, Double, Double, Double);
     scilab_fill_or(Empty, Identity, E_M, Double, Double, Double);
 
@@ -586,12 +586,28 @@ InternalType* or_M_E(T *_pL, U *_pR)
     return _pR;
 }
 
+template<>
+InternalType* or_M_E<Bool, Double, Bool>(Bool* _pL, Double* /* _pR */)
+{
+    Bool* pOut = new Bool(_pL->getDims(), _pL->getDimsArray());
+    pOut->setTrue();
+    return pOut;
+}
+
 template<class T, class U, class O>
 InternalType* or_E_M(T *_pL, U *_pR)
 {
     return _pL;
 }
 
+template<>
+InternalType* or_E_M<Double, Bool, Bool>(Double* /* _pL */, Bool*  _pR)
+{
+    Bool* pOut = new Bool(_pR->getDims(), _pR->getDimsArray());
+    pOut->setTrue();
+    return pOut;
+}
+
 template<class T, class U, class O>
 InternalType* or_I_S(T *_pL, U *_pR)
 {