[GiNaC-list] 1by1 matrix to scalar
Richard B. Kreckel
kreckel at ginac.de
Wed Jun 23 21:40:19 CEST 2010
Hi!
Felipe Bordeu wrote:
> I have a little problem, I'm dealing functions made of matrix products.
>
> My question is, how can "force" ginac to convert automatically all the
> 1by1 matrices to scalars?.
> or do I have to do it manually??
>
> Here is a simple example.
>
> void main2(){
> ex m1=symbolic_matrix(1, 3, "x");
> ex m2=symbolic_matrix(3, 1, "y");
>
> cout << m1 << std::endl;
> cout << m2 << std::endl;
> ex m3 = (m1*m2).evalm();
> cout << m3 << std::endl;
> cout << ex_to<matrix>(m3)(0,0)<< std::endl;;
> ex m4 = m3-ex_to<matrix>(m3)(0,0);
> cout << m4 << std::endl;
> };
> the output :
>
> [[x0,x1,x2]]
> [[y0],[y1],[y2]]
> [[y1*x1+y2*x2+y0*x0]]
> y1*x1+y2*x2+y0*x0
> -y1*x1+[[y1*x1+y2*x2+y0*x0]]-y2*x2-y0*x0
>
> the last line "should" be zero ?--
You'll have to do it "manually". Just write a function that replaces all
1x1 matrices with their 0,0 elements.
This is of course because there is nothing special about vectors. They
are just 1xn or nx1 matrices.
-richy.
--
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>
More information about the GiNaC-list
mailing list