Fix bug #4018: defint(foo,,0,inf) lisp error when denom(foo) contains %i
commitd28c92780091cb73349e97baa02f3b700dea3600
authorKris Katterjohn <katterjohn@gmail.com>
Thu, 1 Sep 2022 14:24:51 +0000 (1 10:24 -0400)
committerKris Katterjohn <katterjohn@gmail.com>
Thu, 1 Sep 2022 14:24:51 +0000 (1 10:24 -0400)
tree76c5e87bc67c353ed3e99a59b54efcebf05fc53d
parentfabcf2fd707109363fea22dd40f47208bfa63aee
Fix bug #4018: defint(foo,,0,inf) lisp error when denom(foo) contains %i

In %I-OUT-OF-DENOM, pass the rewritten expression to SRATSIMP before
rechecking the denominator and returning.  Otherwise the result can
be complicated enough to cause a lisp error in POLYFORM, due to some
assumptions made about form of expressions:

(%i1) defint(1/((x+%i/2)*(x+1)),x,0,inf);
<lisp error>

(%i2) defint(1/((x+%i/2)*(x+%i)),x,minf,inf);
<lisp error>

These lisp errors started occurring when %I-OUT-OF-DENOM was rewritten
in commit 6d07d9be in 2006.

This change causes one test in the main test suite to fail, but the
new result is equivalent to and simpler than the old one.

No problems with the test suite, share test suite or rtest_translator.
New tests have been added to rtestint and the one test that failed has
been updated with the new result.
src/defint.lisp
tests/rtestint.mac