If I were to blend nummod into Maxima (notice the subjunctive), I'd do
something like:
(1) Copy the nummod functions $featurep, evod, maxima-integerp, and the
associated
setf stuff for maps-integers-to-integers and integer-valued to
compar.lisp.
(2) I'm not sure where (mfuncall '$declare '$integervalued '$feature)
belongs -- maybe in
compar.lisp.
(3) Create a new file, say maxima-utilities, for the functions while,
op-equalp, and mrelationp.
There might be other while macros in src --- perhaps in nset.lisp. These
should be expunged.
(4) Copy make-number and cl-rat-to-maxima to nparse.lisp. Richard Fateman
gave me
permission to include his code --- we should ask again (LLGPL vs GPL).
(5) expunge $max, $min, and maximin from compar.lisp.
(6) Copy compare, lenient-extended-realp, and lenient-realp to
maxmin.lisp. Other than
this, maxmin stays about the same.
(7) rationalize doesn't have a logical home --- I'd put it in maxmin.lisp.
My
motivation for rationalize was that I didn't like compare(0.1,1/10) --->
"=".
(8) The file nummod.lisp is mostly unchanged (some eval-when stuff would
change).
(9) The tests get moved to tests and appended to the list of tests.
Also,
(a) nummod has the LLGPL license --- I'm OK with anything that protects me
from being sued (and that gives me just enough credit so that my Dean
knows
I did something).
(b) Should we create a new maxima-utilities file, I think it would be
appropriate
to assign a copyright to the "Maxima Computer Algebra Project" and
acknowledge
the contributor(s). I can foresee lots of other bits of code that might
go into such a file.
(c) This is a start. I'm sure I've ignored something.
Barton