Hi Vladimir, Yang's expectation, that applying numer() and denom() to the same expression would produce expressions with consistent signs, is reasonable. Even if the potential inconsistency of results is well documented, it will remain unexpected behavior by many users, potentially leading to errors. The fact that consistent signs will sometimes be produced may make it difficult to detect or debug those errors. The potential inconsistency of sign results also suggests that the concepts of numerator and denominator aren't well defined, which is unsettling even if there is a good underlying reason. The explanation given, because a/b = (-a)/(-b), seems insufficient to justify an interface that can lead to errors. Would enforcement of consistent signs result in a performance penalty? Respectfully, -Mark On Thu, Aug 23, 2018 at 6:31 PM Vladimir V. Kisil <kisilv@maths.leeds.ac.uk> wrote:
Hi,
On Thu, 23 Aug 2018 13:22:06 +0800 (GMT+08:00), 杨强 < acrobat@mail.ustc.edu.cn> said:
> Dear all, I use GiNaC to perform analytic calculation, but when I > try to use .numer() and .denom() methods, I get a wrong result.
> 1. expr.numer()/expr.denom() is not always equal to the original > expression!!! 2. Using .numer_denom() method could always get the > correct answer.
It is not actually a bug. Since a/b = (-a)/(-b), numer() and denom() are only defined up to a sign. Thus their separate evaluation may lead to expr.numer()/expr.denom() with the opposite sign to expr.
I am proposing a patch to tutorial reminding that,
Best wishes, Vladimir -- Vladimir V. Kisil http://www.maths.leeds.ac.uk/~kisilv/ Book: Geometry of Mobius Transformations http://goo.gl/EaG2Vu Software: Geometry of cycles http://moebinv.sourceforge.net/
_______________________________________________ GiNaC-list mailing list GiNaC-list@ginac.de https://www.cebix.net/mailman/listinfo/ginac-list