Hi! Burcin Erocal wrote:
While looking into a problem in numerical evaluation in pynac, I ran into the following:
ginsh - GiNaC Interactive Shell (ginac V1.5.7) <snip> Type ?? for a list of help topics.
a=(sqrt(4*(sqrt(3) - 5)*(sqrt(3) + 5) + 48) + 4*sqrt(3))/ (sqrt(3) + 5); (sqrt(48+4*(5+sqrt(3))*(-5+sqrt(3)))+4*sqrt(3))*(5+sqrt(3))^(-1) imag_part(a); (5+sqrt(3))^(-1)*sqrt(abs(48+4*(5+sqrt(3))*(-5+sqrt(3))))*sin(1/2*atan2(0,48+4*(-22)))
Note that the second argument of atan2 is an add object in a rather unusual form: 48+4*(-22)
Is this intended behavior?
Definitely not. A simpler case exhibiting the same problem is real_part(1+2*(sqrt(2)+1)*(sqrt(2)-1)). It seems to me that add::eval() is a little bit too simple-minded: add::real_part() returns an add with overall_coeff 1 and an expair with rest 1 and coeff 2, i.e. 1+2*1, but there is no case in add::eval() to take care of this. Bye, -richy. -- Richard B. Kreckel <http://www.ginac.de/~kreckel/>