[GiNaC-list] []!=1 ??
varg at theor.jinr.ru
Sat Mar 18 10:05:31 CET 2006
On Fri, Mar 17, 2006 at 07:52:15PM +0100, Javier Ros Ganuza wrote:
> I suppose that it is a feature...
Exactly. Unit element of some algebra and number 1 are distinct objects,
so GiNaC _never_ performs implicit conversion of unit element of an
algebra to number 1 or vice a versa.
> gives a 1,1 matrix [].
Yes, the product of matrices is a matrix of appropriate size.
> To convert it to a number or to a expression not containing a matrix, I
> have to take directly the 0,0 element of the matrix.
> Is there a more direct method?
You could try to rewrite your expression[s] in a tensor-like form, e.g.
using namespace std;
using namespace GiNaC;
int main(int argc, char** argv)
idx i(symbol("i"), 3);
idx j(symbol("j"), 1);
matrix A(1, 3);
A = 0, 0, 1;
ex e = indexed(A.transpose(), i, j)*indexed(A, j, i);
cout << e << " ==> ";
e = e.simplify_indexed();
cout << e << endl;
On my system, this gives:
[,,].i.j*[[0,0,1]].j.i ==> 1
> If not I'm facing errors like (in ginsh notation)
> > a=[[0,0,1]]*[,,];
> > a=evalm(a);
> > 1+cos(a);
> add::eval(): sum of non-commutative objects has non-zero numeric term
Once again, GiNaC never performs implicit conversion of number 1 into
unit element of some algebra (in this case -- 1x1 matrices).
All science is either physics or stamp collecting.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 189 bytes
Desc: Digital signature
Url : http://www.cebix.net/pipermail/ginac-list/attachments/20060318/d39631cb/attachment.pgp
More information about the GiNaC-list