Don't use *ll* and *ul* in whole-intsubs
commit7c3f37631401e167549179a2b1038647a4cf232e
authorRaymond Toy <toy.raymond@gmail.com>
Sat, 29 Jun 2024 14:00:37 +0000 (29 07:00 -0700)
committerRaymond Toy <toy.raymond@gmail.com>
Sat, 29 Jun 2024 14:00:37 +0000 (29 07:00 -0700)
tree861d4126ee1118c2629afac9357701f846fe3f2e
parent1a4855ccd053e98a4b93ad175b2d8bda7bbcc450
Don't use *ll* and *ul* in whole-intsubs

`whole-intsubs` was calling `make-defint-assumptions` with `*ll*` and
`*ul*`.  However the args `a`, and `b` to `whole-intsubs` are the
limits of the definite integral, so pass `a` and `b` to
`make-defint-assumptions`.

I manually looked through the call tree for `whole-intsubs` and
AFAICT, `a` and `b` are always assigned to the value of `*ll*` and
`*ul*` eventually.  However, there are some cases where `a` is not
`*ll*` and `b` is not `*ul*`.  I don't understand why.

With this change, the full testsuite + share passes with cmucl and
ccl64 except for rtestint problem 237:

```
********************** Problem 237 (line 1428) ***************
Input:
integrate(exp(sqrt(x) - x), x, 0, inf)

Result:
                                 1/4                  1  1
                               %e    gamma_incomplete(─, ─)
  1/4                     1                           2  4      1/4
%e    gamma_incomplete(1, ─) - ──────────────────────────── + %e    sqrt(%pi)
                          4                 2

This differed from the expected result:
                                 1/4                  1  1
                               %e    gamma_incomplete(─, ─)
  1/4                     1                           2  4
%e    gamma_incomplete(1, ─) - ────────────────────────────
                          4                 2
                                  1/4                     1/4
                                %e    (sqrt(%pi) + 2)   %e    sqrt(%pi)     1/4
                              + ───────────────────── + ─────────────── - %e
                                          2                    2

```
If you factor the expected result, you get the actual result.  Plus if
you look at rtestint, there's a comment that says the actual result is
equivalent to what we have.  That's nice sign that the change to
`whole-intsubs` is ok, despite the `a` and `b` not being the same as
`*ll*` and `*ul*` in some cases.

I didn't update the expected result yet.
src/defint.lisp