sparse concatenation fixed. 29/15529/3
Cedric Delamarre [Fri, 14 Nov 2014 13:30:00 +0000 (14:30 +0100)]
test_run("ast","sparse",["no_check_error_output" ]);

Change-Id: Ia092c67c449020444a809915d9bd9cdbc0c19d65

scilab/modules/ast/includes/types/matrixiterator.hxx
scilab/modules/ast/src/cpp/types/sparse.cpp

index 3f4de4b..31d0134 100644 (file)
@@ -157,9 +157,6 @@ template<> bool set(types::SparseBool & d, int r, int c, int v)
     return d.set(r, c, v != 0);
 }
 
-/*
- * TODO report possible bug in Eigen when inserting 0. invalidates Eigen::InnerIterator
- */
 template<> bool set(types::Sparse::RealSparse_t& s, int r, int c, double v)
 {
     if (v != 0.)
index f98ff54..8b55f1b 100644 (file)
@@ -204,11 +204,10 @@ void doAppend(Src SPARSE_CONST& src, int r, int c, Sp& dest)
              , makeMatrixIterator<data_t>(dest, makeTranslatedIterator(makeNonZerosIterator(src), Coords2D(r, c))));
 }
 
-// TODO : awaiting ggael's response to bug for [sp, sp]
 template<typename Scalar1, typename Scalar2>
-void doAppend(Eigen::SparseMatrix<Scalar1> SPARSE_CONST& src, int r, int c, Eigen::SparseMatrix<Scalar2>& dest)
+void doAppend(Eigen::SparseMatrix<Scalar1, Eigen::RowMajor> SPARSE_CONST& src, int r, int c, Eigen::SparseMatrix<Scalar2, Eigen::RowMajor>& dest)
 {
-    typedef typename Eigen::SparseMatrix<Scalar1>::InnerIterator srcIt_t;
+    typedef typename Eigen::SparseMatrix<Scalar1, Eigen::RowMajor>::InnerIterator srcIt_t;
     for (std::size_t k = 0; k != src.outerSize(); ++k)
     {
         for (srcIt_t it(src, (int)k); it; ++it)