Sorry, but I had to revert the last change to the function compsplt. The
change has been to strong. The functionality of splitprod and splitsum
has been switched off completely. These functions are the source of the
bug for the sign of (1-(1+sqrt(2))*x).
The real problem is that the variables lhs and rhs in the functions
splitprod and splitsum are declared to be global. The functions
splitprod and splitsum need these variables to be declared locally. The
functions call each other and overwrite the temporary result stored in
the global variables.
With this changes the following remains correct:
sign(1-(1+sqrt(2))*x) --> pnz
sign(1-(1+sqrt(2))/x) --> pnz
It is unfortunate that no example of the testsuite has triggered an
error, because of my change to compsplt.
By the way, we have a lot of global variables in the code. One of the
globals I do not like is the variable EXP, others are VAR, ARG or ANS.
The algorithm in compar.lisp use global variables a lot. The code is
difficult to debug, because the routines do not return a value, but set
global variables like SIGN, MINUS, EVENS, or ODDS. I am always in doubt,
if we do not have subtle bugs because of these global variables.
Dieter Kaiser