X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Fmatrix.cpp;h=8a68b663b90293a318e445bf8f5801980490e901;hb=f7a07ae7330a3543bb00aa7b659e2624d6c440c7;hp=380a45e718b047a9c44db0bf2aa980813d03d012;hpb=9c91319253425e66f9b6feb9e7036f841bc55e84;p=ginac.git diff --git a/ginac/matrix.cpp b/ginac/matrix.cpp index 380a45e7..8a68b663 100644 --- a/ginac/matrix.cpp +++ b/ginac/matrix.cpp @@ -25,16 +25,17 @@ #include #include "matrix.h" -#include "archive.h" #include "numeric.h" #include "lst.h" #include "idx.h" #include "indexed.h" -#include "utils.h" -#include "debugmsg.h" #include "power.h" #include "symbol.h" #include "normal.h" +#include "print.h" +#include "archive.h" +#include "utils.h" +#include "debugmsg.h" namespace GiNaC { @@ -145,36 +146,35 @@ DEFAULT_UNARCHIVE(matrix) // public -void matrix::print(std::ostream & os, unsigned upper_precedence) const +void matrix::print(const print_context & c, unsigned level) const { - debugmsg("matrix print",LOGLEVEL_PRINT); - os << "[[ "; - for (unsigned r=0; rsolve(vars,identity); + } catch (const std::runtime_error & e) { + if (e.what()==std::string("matrix::solve(): inconsistent linear system")) throw (std::runtime_error("matrix::inverse(): singular matrix")); - } - if (indx != 0) { // swap rows r and indx of matrix tmp - for (unsigned i=0; i