On 3/30/10 8:56 PM, Dieter Kaiser wrote:
> Am Dienstag, den 30.03.2010, 20:17 -0400 schrieb Raymond Toy:
>
>> On 3/30/10 3:01 PM, Dieter Kaiser wrote:
>>
>>> I get errors in testsuite with the current CVS version. The error is
>>> triggered in the routine res after a call from the routine unitcir.
>>>
>>> This is a trace for the functions unitcir and res for one example:
>>>
>>> (%i8) integrate(1/(2+cos(x)),x,0,%pi);
>>> 0: (UNITCIR
>>> ((MTIMES SIMP) 2
>>> ((MEXPT SIMP)
>>> ((MPLUS SIMP) 1 ((MTIMES SIMP RATSIMP) 4 YY)
>>> ((MEXPT SIMP RATSIMP) YY 2))
>>> -1))
>>> YY)
>>> 1: (RES 2
>>> ((MPLUS SIMP) 1 ((MTIMES SIMP RATSIMP) 4 YY)
>>> ((MEXPT SIMP RATSIMP) YY 2))
>>> #<FUNCTION (LAMBDA #) {B20D885}> #<FUNCTION (LAMBDA #)
>>> {B20D9ED}>)
>>> Maxima encountered a Lisp error:
>>>
>>> The value $NEG is not of type LIST.
>>>
>>>
>> Although I sometimes forget to run the testsuite, I did run the
>> testsuite before checking in this change. I ran it again and cmucl and
>> clozure cl both handle the integrals just fine.
>>
>> The backtrace above seems to indicate that the error is in RES. But RES
>> doesn't call region or region1.
>>
>> Can you run it again but start maxima with the -g flag so you get dumped
>> into the Lisp debugger? That will produce a better backtrace and
>> perhaps also give the offending source line.
>>
> Hello Ray,
>
> this is a complete backtrace I have got for the example from above:
>
> (%i3) integrate(1/(2+cos(x)),x,0,%pi);
>
> debugger invoked on a TYPE-ERROR in thread #<THREAD "initial thread"
> RUNNING {C2BBBA1}>:
> The value $NEG is not of type LIST.
>
> Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
>
> restarts (invokable by number or by possibly-abbreviated name):
> 0: [MACSYMA-QUIT] Maxima top-level
> 1: [CONTINUE ] Ignore runtime option --eval "(cl-user::run)".
> 2: [ABORT ] Skip rest of --eval and --load options.
> 3: Skip to toplevel READ/EVAL/PRINT loop.
> 4: [QUIT ] Quit SBCL (calling #'QUIT, killing the process).
>
> (RES1
> 2
> #<unavailable argument>
> (((MPLUS SIMP) -2 ((MEXPT SIMP) 3 ((RAT SIMP) 1 2))) . $NEG))
> 0] backtrace
>
> 0: (RES1
> 2
> #<unavailable argument>
> (((MPLUS SIMP) -2 ((MEXPT SIMP) 3 ((RAT SIMP) 1 2))) . $NEG))
>
This backtrace doesn't make any sense to me. How did that $NEG get
there? Can you trace polelist and tell me what polelist returns? With
cmucl, polelist returns
((((MPLUS SIMP) -2 ((MEXPT SIMP) 3 ((RAT SIMP) 1 2)))
((MPLUS SIMP) 2 ((MTIMES SIMP) -1 ((MEXPT SIMP) 3 ((RAT SIMP) 1
2)))
YY)
((MPLUS SIMP) -2
((MTIMES SIMP RATSIMP) -1 ((MEXPT SIMP) 3 ((RAT SIMP) 1 2))))
((MPLUS SIMP) 2 ((MEXPT SIMP) 3 ((RAT SIMP) 1 2)) YY))
NIL (((MPLUS SIMP) -2 ((MEXPT SIMP) 3 ((RAT SIMP) 1 2)))) NIL)
And tracing RES1, we see that RES1 is called
0: (RES1 2
((MPLUS SIMP) 4 ((MTIMES SIMP) 2 YY))
(((MPLUS SIMP) -2 ((MEXPT SIMP) 3 ((RAT SIMP) 1 2)))))
This matches what you show, except you some have have $NEG tacked on.
Ray