]> www.ginac.de Git - ginac.git/blobdiff - ginac/matrix.cpp
unit_matrix(r,c) can return an evaluated matrix object.
[ginac.git] / ginac / matrix.cpp
index 1b5f8edf7f418b4b773c39887c657c335dd0fa9a..52a1f1b423cd4b3eafea7a3b8c6d8a185565d26c 100644 (file)
@@ -81,6 +81,11 @@ matrix::matrix(unsigned r, unsigned c, const exvector & m2)
 {
        setflag(status_flags::not_shareable);
 }
+matrix::matrix(unsigned r, unsigned c, exvector && m2)
+  : row(r), col(c), m(std::move(m2))
+{
+       setflag(status_flags::not_shareable);
+}
 
 /** Construct matrix from (flat) list of elements. If the list has fewer
  *  elements than the matrix, the remaining matrix elements are set to zero.
@@ -1584,7 +1589,7 @@ ex diag_matrix(const lst & l)
 ex unit_matrix(unsigned r, unsigned c)
 {
        matrix &Id = *new matrix(r, c);
-       Id.setflag(status_flags::dynallocated);
+       Id.setflag(status_flags::dynallocated | status_flags::evaluated);
        for (unsigned i=0; i<r && i<c; i++)
                Id(i,i) = _ex1;