[GiNaC-list] comparing ex

Vera Louise Hauge veralh at ifi.uio.no
Mon Aug 22 12:02:26 CEST 2005


Hi,

Thank you for your suggestion!

It is almost what I want to do. However, in my case also the symbols 
a0 and a1 are different objects with the same text:

int main(){

   ex A = symbolic_matrix(1,2, "a");
   ex B = symbolic_matrix(1,2, "a");
   symbol x("x");

   ex a, b;
   int n=0;
   for (const_iterator i = A.begin(); i != A.end(); ++i)  {
     a += (*i)*pow(x,n);
     n++;
   }
   n=0;
   for (const_iterator i = B.begin(); i != B.end(); ++i)  {
     b += (*i)*pow(x,n);
     n++;
   }
   cout << "a-b=" << (a-b).expand() << endl;
   return 0;
}

Any suggestions when the expressions "a0+a1*x" are produced this way?

Maybe string comparison of the texts in the coefficient objects is a way 
to do it?


--
Vera Louise Hauge


On Thu, 18 Aug 2005, Markus Knodel wrote:

> Hi,
>
> #include <ginac/ginac.h>
> #include <iostream>
>
> using namespace std;
> using namespace GiNaC;
>
> int main()
> {
>
>   symbol a0("a0"), x("x"), a1("a1");
>
>   ex a = a0 + x*a1;
>   ex b = a0 + a1*x;
>
>   ex diff = a - b;
>
>   ex diff_expd = diff.expand();
>
>   cout << "a-b = " << diff_expd << endl;
>
>   // should give: a-b = 0
>
>   return 0;
> }
>
>
>>
>> I want to compare (or test the equality of) two ex objects which contain
>> symbols.
>> a = a0 + x*a1;
>> b = a0 + a1*x;
>>
>> If the ex objects are evaluated (symbolically), such that
>> a-b becomes 0, then the test would be finished.
>>
>> However, how do I evaluate such a expression as a-b symbolically?
>>
>
> is this what you wanted?
>
> Cheers
>   Markus
>
>
>
> _______________________________________________
> GiNaC-list mailing list
> GiNaC-list at ginac.de
> http://thep.physik.uni-mainz.de/mailman/listinfo/ginac-list
>




More information about the GiNaC-list mailing list