[GiNaC-list] setting and getting numeric values from indexed
expressions
Chris Dams
Chris.Dams at mi.infn.it
Fri Jul 28 07:30:38 CEST 2006
Dear Alejandro,
On Thu, 27 Jul 2006, Alejandro Limache wrote:
> // -> [[-13,-6],[1,2]].i.j
> Is there a way to get the numeric values of each of the components of e?
> I would like to be able to do something like
> double d;
> d = e(0,0);
> to get:
> d=-13
ex_to<numeric>(e.subs(lst(i==0,j==0))).to_double()
You should only do that if you are certain that the relevant matrix entry
is numeric or all hell will break loose. Safer is to first do a test:
if (is_a<numeric>(....))
> 2) Can something similar be done for indexed expression not defined as
> matrices?
> For example given something like
> symbol A("A")....
> idx i(.., 3), j(.., 3), k(..,10);
> ex e = indexed(A,i,j,k)
> could I set for example: i=2, j=0, k=4 and set A(2,0,4)=3.5 ?
> could I then somehow get the value "3.5" back?
Not directly. The closest that you can get to that is keeping an exmap m
and say m[A(2,0,4)] = 3.5 and then do .subs(m) in an expression where you
have unrolled the dummy indices. With the dimensions you give above this
could get a costly though. If you don't have any patterns in the exmap you
could use the option subs_options::no_pattern to speed it up a quite bit.
Best wishes,
Chris
More information about the GiNaC-list
mailing list