# [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/>
```