The special variable `var` has been replaced by a lexical in almost
all places in defint. We don't need the `declare-top` declaration for
`var` anymore. Only a few places still need to reference it:
o The replacement functions that accept a lexical to bind `var` before
calling the underlying function that references `var`.
o The one call to `keyhole` that requires `plog` not to simplify the
arg until later.
In all of these cases, we locally declare `var` as special. Hence the
file declaration is not needed anymore.
Full testsuite + share passes with clisp (2.49.93+ (2018-02-18)),
ecl (23.9.9), and cmucl (snapshot-2023-08).
Fix expected TeX output of hypergeometric function
The expected output of `tex(hypergeometric([a,b],[c],x),false);`
originally was broken across two lines. Now it all fits on one.
Update expected output.
The simplifier for plog uses explicit list constructs to create
certain expressions. These expressions aren't always simplified. To
fix this, replace these expressions with the equivalent function
calls. Thus, instead of `(ftake %log (list '(mtimes) -1 x))`, do
`(ftake %log (mul -1 x))`. This makes sure -1*x is simplified.
Add some test to rtest15, taken from the bug report.
`extra-simp` references the special variable `var`, but `var` was
declared unspecial earlier in the file. Let's leave the unspecial
declaration as is, and declare `var` special in `extra-simp` to get
rid of the warning.
We should probably pass `var` in to remove that dependency. For
another day, perhaps.
This occurs only with lisps like clisp and cmucl that actually support
the unspecial declaration. I think sbcl doesn't support unspecial.