[GiNaC-devel] Improving normalisation with negative exponents

Vladimir V. Kisil V.Kisil at leeds.ac.uk
Tue Mar 30 14:45:08 CEST 2021


	Dear All,

	With version 1.8.0 of GiNaC the following code

 realsymbol x("x");
 ex e = (exp(2*t)-exp(-2*t))/(exp(t)-exp(-t));
 cout << e.normal() << endl;

   will through an exception

terminate called after throwing an instance of 'std::logic_error'
  what():  heur_gcd: not an integer polynomial [1]

  The reason is that internally e will be converted to something like

  (symbol457^2-symbol457^(-2))/(symbol457 - 1/symbol457)

  with non-polynomial numerator and denominator.

  I am attaching a patch which will fix this issue. Some additional
  tests are included as well.

  Best wishes,
  Vladimir
-- 
Vladimir V. Kisil                 http://www.maths.leeds.ac.uk/~kisilv/
  Book:      Geometry of Mobius Maps       https://doi.org/10.1142/p835
  Soft:      Geometry of cycles         http://moebinv.sourceforge.net/
  Jupyter notebooks:       https://github.com/vvkisil/MoebInv-notebooks


-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Improve-normalisation-of-negative-exponents.patch
Type: text/x-diff
Size: 2968 bytes
Desc: Normalisation patch.patch
URL: <http://www.ginac.de/pipermail/ginac-devel/attachments/20210330/424eaa38/attachment.bin>


More information about the GiNaC-devel mailing list