Hi Stavros. Perhaps I wasn't explicit enough, or perhaps I'm misunderstanding what you're looking for, but I did provide an example above showing a simple and purely Maxima-level mathematical function that yields different results for 0.0 and -0.0 under a lisp implementation that supports negative zeros. This provides a way to distinguish between 0.0 and -0.0 without relying on their print representation. The results from another implementation that does not support negative zeros (which is allowed...
Hi Stavros, Under some lisp implementations like SBCL that support negative zeros: (%i4) is (equal (0.0, -0.0)); (%o4) true (%i5) is (0.0 = -0.0); (%o5) true (%i6) foo (r) := atan2 (r, -1.0)$ (%i7) foo (0.0); (%o7) 3.141592653589793 (%i8) foo (-0.0); (%o8) -3.141592653589793 Also recall that CL allows, but doesn't require, support for negative zeros. So under some other implementations like CLISP, %o8 should be the same as %o7.
transl: remove the obsolete and unused POSSIBLE-PREDICATE-OP-P
transl: abort on atomic MQAPPLY ops
TOPLEVEL-OPTIMIZE: print the form (not just the op) in the warning
Define primelmt with DEFMFUN for proper WNA checking
MFUNCTION-CALL-AUX: call Maxima special forms with non-NIL headers
support tracing simplifying functions