[GiNaC-list] (no subject) has to be: avoid expansion in matrixoperations

Javier Ros Ganuza jros at unavarra.es
Thu Mar 9 11:07:23 CET 2006


Thanks for the different replies. I've got the idea.

I'm geting impressed with ginac. I'm using it to perform a rather simple
task, but I was unable to deal with it with matlab(symbolic) or maple,
due to their limitations in subs funtions.

Incredible fine piece of work!

Thank you

Javier

On Wed, 2006-03-08 at 23:24 +0100, Richard B. Kreckel wrote:
> Sheplyakov Alexei wrote:
> 
> >You can try this silly patch:
> >
> >Index: ginac/matrix.cpp
> >===================================================================
> >RCS file: /home/cvs/GiNaC/ginac/matrix.cpp,v
> >retrieving revision 1.99.2.5
> >diff -u -r1.99.2.5 matrix.cpp
> >--- ginac/matrix.cpp	19 Oct 2005 21:21:56 -0000	1.99.2.5
> >+++ ginac/matrix.cpp	8 Mar 2006 18:51:06 -0000
> >@@ -583,7 +583,7 @@
> > 			if (m[r1*col+c].is_zero())
> > 				continue;
> > 			for (unsigned r2=0; r2<other.cols(); ++r2)
> >-				prod[r1*other.col+r2] += (m[r1*col+c] * other.m[c*other.col+r2]).expand();
> >+				prod[r1*other.col+r2] += (m[r1*col+c] * other.m[c*other.col+r2]);
> > 		}
> > 	}
> > 	return matrix(row, other.col, prod);
> >  
> >
> 
> I think the expansion was unintentional and I have applied this patch to 
> the trunk.  Thanks.
> 
> In matrix operations, in particularl in the elimination algorithms, one 
> frequently needs to try a bit harder than if (foo.is_zero())... to test 
> for zeros.  One also needs to take some care to avoid excessively long 
> terms to build up.  For the elements of a matrix product, I see no need 
> for the former, but I do see need for the latter.  For instance, 
> consider evalm([[(a+b),0],[0,(c+d)]]^666); in ginsh notation.
> 
> Cheers
>   -richy.
> 



More information about the GiNaC-list mailing list