The macro `coef` and the functions `lapsum`, `lapprod`, and `expo` are
only used in `ilt3`. Let's move them into `ilt3` to reduce pollution
of the name space. For simplicity convert `coef` from a macro to a
function.
Also add a note that `lapsum`, `lapprod`, and `expo` could be replaced
by macros from strmac.lisp. That would probably be useful. For
another day.
It seems as if the specvar `ratform` was only used by `ilt0` to
implicitly communicate stuff to `ilt1`, `ilt2`, and `ilt3`. Since we
do this explicitly now, so we can rename the `ratform` to
`laplac-ratform`.
Thus, we don't need the special var `ratform` anymore.
The macro `coef` was referencing the specvar `ratform`. Instead of
doing that, add an arg to `coef` to hold the value of `ratform`.
Name the arg `coef-ratform` for uniqueness.
Update the (two) callers to pass in the `ratform` value.
As a first pass at possibly simplifying the use of the special var
`ratform`, pass `ratform` to the functions `ilt1`, `ilt2`, and `ilt3`
which all want to use `ratform`.
For some reason this causes other tests in rtest2.mac to fail. Problems
86 and 95 pass but were expected to fail, and problems 87 and 96 now
fail. The output from problems 87 and 96 appears the have the correct
form, but for some reason are not equal. I don't know why.
This needs more investigation, but remove the test for now so that
the testsuite is unchanged.
Instead of using `declare-top` for `*rulesw*`, just add a `defvar` for
it. For some Lisps, this makes it clear where it's defined, which is
useful for debugging and hacking.