[GiNaC-list] Bug with matrix subtraction
Sheplyakov Alexei
varg at theor.jinr.ru
Thu Mar 22 10:57:46 CET 2007
Hello!
On Thu, Mar 22, 2007 at 09:44:03AM +0100, Martin Sandve Alnæs wrote:
> If I subtract two equal matrices, I get the scalar 0.
In GiNaC (A-A) is always transformed into 0 (number). I admit this is
ugly, but fixing it would be very difficult (if possible at all).
> This messes up later calculations, since a scalar doesn't have op(i),
numeric::nops() returns zero, so loops like this
for (size_t i = 0; i < e.nops(); ++i) {
// do something
}
should work fine.
> transpose(), etc.
You have to explicitly check for .is_zero().
> If I do a+(-b) instead of a-b, I get a zero matrix as wanted.
Interesting. I get zero (a number) in both ways:
$ cat test_matr_minus.cpp
#include <iostream>
#include <ginac/ginac.h>
using namespace std;
using namespace GiNaC;
int main(int argc, char** argv) {
matrix a(2, 2);
a = 1, 2,
3, 4;
cout << "a = " << a << endl;
ex test = a - a;
cout << "a - a = " << test << endl;
ex test2 = a + (-a);
cout << "a + (-a) = " << test2 << endl;
return 0;
}
$ g++ test_matr_minus.cpp -lginac
$ ./a.out
a = [[1,2],[3,4]]
a - a = 0
a + (-a) = 0
Best regards,
Alexei
--
All science is either physics or stamp collecting.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: Digital signature
Url : http://www.cebix.net/pipermail/ginac-list/attachments/20070322/cc9db272/attachment.pgp
More information about the GiNaC-list
mailing list