defint(,,0,inf) keyhole integration, patan issue
defint(,,0,inf) lisp error
Hello, I forgot to mention, there is no change of importance in test-suite.log. I stumbled on comments from rtoy concerning this semirat variable, saying he didn't know what it is good for. Yet I obviously can't simply remove it, my "nil" is just a way to point at some point. I traced through zmtorat etc etc, and guessed the code tried do integrate by residues. Then I spotted incorrect residues and fell into "polelist". skimming through it one cant avoid guessing semirat causing to return exact the...
defint() produces incorrect output
here is a bit of a test facility, for debugging purpose only. It is ment to check not only askasign1 return values, but as well the asked domain questions ant their expressions. it can be run like this: batch("maxima-code/tests/test_asksign1.mac", test); some tests are stolen from rtest_ask, others popped up during search for the bug. test_asksign1.mac is attached. --- a/src/compar.lisp +++ b/src/compar.lisp @@ -952,6 +952,8 @@ sign of the square, so any negative results are converted to positive."...
I attach a revised patch which cares about the sign problem as well. make check works, batch("maxima-code/tests/test_asksign1.mac", test); works first remove an ancient leftover artifact --- a/src/compar.lisp +++ b/src/compar.lisp @@ -919,7 +919,6 @@ relational knowledge is contained in the default context GLOBAL.") domain '$znz squared t)) (t - (if minus (setq sign (flip sign))) (setq $askexp (lmul (nconc odds (mapcar #'(lambda (l) (power l 2)) evens)))))) (setq sign (cdr (assol $askexp *local-signs*)))...
make check works. asksign(cos(x)-1) and some others work. but asksign(1-cos(x)) somewhere looses a sign.
I'd propose something too, almost untested. Inspired by something similiar found in signsum but absent in signdiff. diff --git a/src/compar.lisp b/src/compar.lisp index 5afbe2a4f..88cf483de 100644 --- a/src/compar.lisp +++ b/src/compar.lisp @@ -1453,6 +1453,7 @@ TDNEG TDZERO TDPN) to store it, and also sets SIGN." ((signdiff-special lhs rhs)))))) (if swapped (setq sign (flip sign))) + (setq minus nil odds (list x) evens nil) retval)) (defun signdiff-special (xlhs xrhs) I will need some time to check...