rtoy / maxima

A Clone of Maxima's repo
Other
0 stars 0 forks source link

"integrate(x^(1/4)*atan(x),x)" prints error "sign: argument cannot be imaginary; found %i" #1485

Open rtoy opened 4 months ago

rtoy commented 4 months ago

Imported from SourceForge on 2024-07-04 17:04:04 Created by tomasriker on 2015-07-21 16:30:26 Original: https://sourceforge.net/p/maxima/bugs/2997


Integrating x^(1/4)*atan(x) results in an error:

(%i1) integrate(x^(1/4)*atan(x),x);
sign: argument cannot be imaginary; found %i
 -- an error. To debug this try: debugmode(true);
(%i2) build_info();
(%o2) build_info(version="5.36post",timestamp="2015-04-27 15:43:33",host="unknown",lisp_name="Clozure Common Lisp",lisp_version="Version 1.10-r16196  (WindowsX8664)")

Maxima 5.21.1 can't solve it, but at least it doesn't print an error:

(%i1) integrate(x^(1/4)*atan(x),x);
(%o1) (4*'integrate(%e^(log(x)/4)/(x*%e^(2*log(x))+x),x)
       +4*x^(5/4)*atan(x)-16*%e^(log(x)/4))
       /5
(%i2) build_info();
Maxima version: 5.21.1
Maxima build date: 7:25 9/18/2010
Host type: x86_64-unknown-linux-gnu
Lisp implementation type: GNU Common Lisp (GCL)
Lisp implementation version: GCL 2.6.7
rtoy commented 4 months ago

Imported from SourceForge on 2024-07-04 17:04:05 Created by robert_dodier on 2018-03-17 21:56:56 Original: https://sourceforge.net/p/maxima/bugs/2997/#7bd5


Still seeing this bug in 5.41post. Some investigation: redefine MERROR to call BREAK so I can get a backtrace.

(%i3) :lisp (let ((f (symbol-function 'merror))) (defun merror (&rest a) (break) (apply f a)))

MERROR
(%i3) integrate(x^(1/4)*atan(x),x);

debugger invoked on a SIMPLE-CONDITION in thread
#<THREAD "main thread" RUNNING {C292779}>:
  break

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [CONTINUE    ] Return from COMMON-LISP:BREAK.
  1: [MACSYMA-QUIT] Maxima top-level
  2:                Ignore runtime option --eval "(cl-user::run)".
  3: [ABORT       ] Skip rest of --eval and --load options.
  4:                Skip to toplevel READ/EVAL/PRINT loop.
  5: [EXIT        ] Exit SBCL (calling #'EXIT, killing the process).

(MERROR "sign: argument cannot be imaginary; found ~M" $%I)
0] backtrace

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {C292779}>
0: (MERROR "sign: argument cannot be imaginary; found ~M" $%I)
1: (IMAG-ERR #<unavailable argument>)
2: (SIGN $%I)
3: (SIGN1 #<unavailable argument>)
4: (ASKSIGN1 $%I)
5: (ASKSIGN01 $%I)
6: ($ASKSIGN $%I)
7: (ENPROG #<unavailable argument> #<unavailable argument> #<unavailable argument> 4)
8: (EPROG (-1 #:X1902 4 50 0 (#:%I1901 1 50)))
9: (EPROG (-1 #:X1902 4 50 0 (#:%I1901 1 50)))
10: (FPROG ((#1=#:X1902 4 1) #1# 4 (#:%I1901 1 50) 0 -50))
11: (RATINT ((MTIMES SIMP) ((MEXPT SIMP) $X 4) ((MEXPT SIMP) ((MPLUS SIMP) -50 ((MTIMES SIMP) 50 $%I (# $X 4))) -1)) $X)
12: (INTEGRATOR ((MTIMES SIMP) ((MEXPT SIMP) $X 4) ((MEXPT SIMP) ((MPLUS SIMP) -50 ((MTIMES SIMP) 50 $%I (# $X 4))) -1)) $X)
13: (RATLOG ((MTIMES SIMP) ((MEXPT SIMP) $X 4) ((MEXPT SIMP) ((MPLUS SIMP) -50 ((MTIMES SIMP) 50 $%I (# $X 4))) -1) ((%LOG SIMP) ((MPLUS SIMP) 1 ((MTIMES SIMP) $%I (# $X 4))))) $X ((A (%LOG SIMP) ((MPLUS SIMP) 1 ((MTIMES SIMP) $%I (# $X 4)))) (C (MTIMES SIMP) ((MEXPT SIMP) $X 4) ((MEXPT SIMP) ((MPLUS SIMP) -50 (# 50 $%I #)) -1)) (B (MPLUS SIMP) 1 ((MTIMES SIMP) $%I ((MEXPT SIMP) $X 4)))))
14: (INTFORM ((%LOG SIMP) ((MPLUS SIMP) 1 ((MTIMES SIMP) $%I ((MEXPT SIMP) $X 4)))))
15: (INTEGRATOR ((MTIMES SIMP) 25 $%I ((MEXPT SIMP) $X 4) ((MEXPT SIMP) ((MPLUS SIMP) -50 ((MTIMES SIMP) 50 $%I (# $X 4))) -1) ((%LOG SIMP) ((MPLUS SIMP) 1 ((MTIMES SIMP) $%I (# $X 4))))) $X)
16: (INTEGRATE1 ((#1=(MTIMES SIMP) 20 ((MEXPT SIMP) $X 8) ((MEXPT SIMP) ((MPLUS SIMP) -50 (# 50 $%I #)) -1)) (#1# 25 $%I ((MEXPT SIMP) $X 4) ((MEXPT SIMP) ((MPLUS SIMP) -50 (# 50 $%I #)) -1) ((%LOG SIMP) ((MPLUS SIMP) 1 (# $%I #)))) (#1# 25 ((MEXPT SIMP) $X 8) ((MEXPT SIMP) ((MPLUS SIMP) -50 (# 50 $%I #)) -1) ((%LOG SIMP) ((MPLUS SIMP) 1 (# $%I #))))))
17: (INTEGRATOR ((MPLUS . #1=(SIMP)) (#2=(MTIMES . #1#) 20 ((MEXPT SIMP) $X 8) ((MEXPT SIMP) ((MPLUS SIMP) -50 (# 50 $%I #)) -1)) (#2# 25 $%I ((MEXPT SIMP) $X 4) ((MEXPT SIMP) ((MPLUS SIMP) -50 (# 50 $%I #)) -1) ((%LOG SIMP) ((MPLUS SIMP) 1 (# $%I #)))) (#2# 25 ((MEXPT SIMP) $X 8) ((MEXPT SIMP) ((MPLUS SIMP) -50 (# 50 $%I #)) -1) ((%LOG SIMP) ((MPLUS SIMP) 1 (# $%I #))))) $X)
18: (INTEGRATOR ((MTIMES . #1=(SIMP)) 4 ((MEXPT . #1#) $X 4) ((MEXPT SIMP) ((MPLUS SIMP) -50 ((MTIMES SIMP) 50 $%I (# $X 4))) -1) ((MPLUS SIMP) ((MTIMES SIMP) 20 ((MEXPT SIMP) $X 4)) ((MTIMES SIMP) ((MPLUS SIMP) (# 25 $%I) (# 25 #)) ((%LOG SIMP) (# 1 #))))) $X)
19: (RATROOT ((MTIMES SIMP) ((MEXPT SIMP) $X ((RAT SIMP) 1 4)) ((MEXPT SIMP) ((MPLUS SIMP) -50 ((MTIMES SIMP RATSIMP) 50 $%I $X)) -1) ((MPLUS SIMP) ((MTIMES SIMP RATSIMP) 20 $X) ((MTIMES SIMP) ((MPLUS SIMP) (# 25 $%I) (# 25 $X)) ((%LOG SIMP) (# 1 #))))) $X $X ((D . 1) (C . 0) (B . 0) (A . 1) (VAR . $X) (E . 1)))
20: (INTFORM ((MEXPT SIMP) $X ((RAT SIMP) 1 4)))
21: (INTEGRATOR ((MTIMES SIMP) ((MEXPT SIMP) $X ((RAT SIMP) 1 4)) ((MEXPT SIMP) ((MPLUS SIMP) -50 ((MTIMES SIMP RATSIMP) 50 $%I $X)) -1) ((MPLUS SIMP) ((MTIMES SIMP RATSIMP) 20 $X) ((MTIMES SIMP) ((MPLUS SIMP) (# 25 $%I) (# 25 $X)) ((%LOG SIMP) (# 1 #))))) $X)
22: (SININT #<unavailable argument> #<unavailable argument>)
23: ($INTEGRATE ((MTIMES SIMP) ((MEXPT SIMP) $X ((RAT SIMP) 1 4)) ((MEXPT SIMP) ((MPLUS SIMP) -50 ((MTIMES SIMP RATSIMP) 50 $%I $X)) -1) ((MPLUS SIMP) ((MTIMES SIMP RATSIMP) 20 $X) ((MTIMES SIMP) ((MPLUS SIMP) (# 25 $%I) (# 25 $X)) ((%LOG SIMP) (# 1 #))))) $X NIL NIL)
24: (MEVAL1 #<unavailable argument>)
25: (MEVAL ((%INTEGRATE . #1=(SIMP)) ((MTIMES . #1#) ((MEXPT SIMP) $X ((RAT SIMP) 1 4)) ((MEXPT SIMP) ((MPLUS SIMP) -50 (# 50 $%I $X)) -1) ((MPLUS SIMP) ((MTIMES SIMP RATSIMP) 20 $X) ((MTIMES SIMP) (# # #) (# #)))) $X))
26: (MEVALARGS ((#1=(MTIMES . #2=(SIMP)) ((RAT SIMP) 2 5) $%I ((MEXPT SIMP) $X ((RAT SIMP) 5 4)) ((%LOG SIMP) ((MPLUS SIMP) 1 (# -1 $%I $X)))) ((%INTEGRATE . #2#) (#1# ((MEXPT SIMP) $X (# 1 4)) ((MEXPT SIMP) (# -50 #) -1) ((MPLUS SIMP) (# 20 $X) (# # #))) $X)))
27: (MEVAL1 #<unavailable argument>)
28: ((LAMBDA (L) :IN "/home/robert/maxima/maxima-code/src/mlisp.lisp") (((MPLUS . #1=(SIMP)) (#2=(MTIMES . #1#) ((RAT SIMP) 2 5) $%I ((MEXPT SIMP) $X (# 5 4)) ((%LOG SIMP) (# 1 #))) ((%INTEGRATE . #1#) (#2# (# $X #) (# # -1) (# # #)) $X)) $NOUNS))
29: (MEVAL1 #<unavailable argument>)
30: (MEVAL (($EV) ((MPLUS . #1=(SIMP)) (#2=(MTIMES . #1#) ((RAT SIMP) 2 5) $%I ((MEXPT SIMP) $X (# 5 4)) ((%LOG SIMP) (# 1 #))) ((%INTEGRATE . #1#) (#2# (# $X #) (# # -1) (# # #)) $X)) $NOUNS))
31: (HYPERTRIGINT1 ((MTIMES . #1=(SIMP)) ((MEXPT . #1#) $X ((RAT SIMP) 1 4)) ((%ATAN . #1#) $X)) $X NIL)
32: (TRIGIN1 ((MTIMES . #1=(SIMP)) ((MEXPT . #1#) $X ((RAT SIMP) 1 4)) ((%ATAN . #1#) $X)) $X)
33: (RISCHINT #<unavailable argument> #<unavailable argument>)
34: (INTEGRATOR ((MTIMES . #1=(SIMP)) ((MEXPT . #1#) $X ((RAT SIMP) 1 4)) ((%ATAN . #1#) $X)) $X)
35: (SININT #<unavailable argument> #<unavailable argument>)
36: ($INTEGRATE ((MTIMES . #1=(SIMP)) ((MEXPT . #1#) $X ((RAT SIMP) 1 4)) ((%ATAN . #1#) $X)) $X NIL NIL)
37: (MEVAL1 #<unavailable argument>)
38: (MEVAL (($INTEGRATE) ((MTIMES) ((MEXPT) $X ((MQUOTIENT) 1 4)) ((%ATAN) $X)) $X))
39: (MEVAL* (($INTEGRATE) ((MTIMES) ((MEXPT) $X ((MQUOTIENT) 1 4)) ((%ATAN) $X)) $X))
40: (TOPLEVEL-MACSYMA-EVAL (($INTEGRATE) ((MTIMES) ((MEXPT) $X ((MQUOTIENT) 1 4)) ((%ATAN) $X)) $X))
41: (CONTINUE #<unavailable argument> #<unavailable argument>)
42: (MACSYMA-TOP-LEVEL #<unavailable argument> #<unavailable argument>)
43: (RUN)
44: (SB-INT:SIMPLE-EVAL-IN-LEXENV (RUN) #<NULL-LEXENV>)
45: (EVAL (RUN))
46: (SB-IMPL::PROCESS-EVAL/LOAD-OPTIONS ((:EVAL . "(cl-user::run)")))
47: (SB-IMPL::TOPLEVEL-INIT)
48: ((FLET #:WITHOUT-INTERRUPTS-BODY-92 :IN SB-EXT:SAVE-LISP-AND-DIE))
49: ((LABELS SB-IMPL::RESTART-LISP :IN SB-EXT:SAVE-LISP-AND-DIE))

0]