[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sbcl-devel
Subject:    Re: [Sbcl-devel] Some compiled functions of Maxima are broken on ARM64 macOS Monterey
From:       Stas Boukarev <stassats () gmail ! com>
Date:       2023-07-14 7:47:05
Message-ID: CAF63=12BiGckjiOMadYe8UQHyZTvbWYubY_t_=HphGZz7p-Q5w () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Fixed. Thanks.

On Thu, Jul 13, 2023 at 11:26 PM 有坂富雄 via Sbcl-devel <
sbcl-devel@lists.sourceforge.net> wrote:

> Thanks for your help!
> Now, I can build Maxima-5.47.0 with the development version of SBCL.
>
> But, some compiled functions of Maxima are broken on ARM64 macOS Monterey.
>
> For example, both SLATEC:ZBESH and SLATEC::DGAMLN are broken. This issue
> causes an error of the bessel_j function of Maxima.
>
> On ARM64 SBCL Maxima-5.47.0, the bessel_j function returns an error:
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> % ../../sbcl_arm64/bin/sbcl --core ./binary-sbcl/maxima.core --noinform
> --norc
> Maxima 5.47.0 https://maxima.sourceforge.io
> using Lisp SBCL 2.3.6.116-a58a4b217-WIP
> Distributed under the GNU Public License. See the file COPYING.
> Dedicated to the memory of William Schelter.
> The function bug_report() provides bug reporting information.
> (%i1) bessel_j(- 6.01, 4.0*%i - 2.0);
>
> Maxima encountered a Lisp error:
>
>
> %
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> On the other hand, x86-64 SBCL Maxima-5.47.0 works well:
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> $ ../../sbcl_x86_64/bin/sbcl --core ./binary-sbcl/maxima.core --noinform
> --norc
> Maxima 5.47.0 https://maxima.sourceforge.io
> using Lisp SBCL 2.3.6.116-a58a4b217-WIP
> Distributed under the GNU Public License. See the file COPYING.
> Dedicated to the memory of William Schelter.
> The function bug_report() provides bug reporting information.
> (%i1) bessel_j(- 6.01, 4.0*%i - 2.0);
> (%o1)            0.04316916456151376 %i + 0.26621554003138737
> (%i2) quit();
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> And the following trace shows that bessel_j calls SLATEC:ZBESH function
> two times:
> (only the fifth argument is different)
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> $ ../../sbcl_x86_64/bin/sbcl --core ./binary-sbcl/maxima.core --noinform
> --norc
> Maxima 5.47.0 https://maxima.sourceforge.io
> using Lisp SBCL 2.3.6.116-a58a4b217-WIP
> Distributed under the GNU Public License. See the file COPYING.
> Dedicated to the memory of William Schelter.
> The function bug_report() provides bug reporting information.
> (%i1) :lisp (trace $bessel_j SLATEC:ZBESH HANKEL-1 HANKEL-2 BESSEL-J)
>
> ($BESSEL_J ZBESH HANKEL-1 HANKEL-2 BESSEL-J)
> (%i1) bessel_j(- 6.01, 4.0*%i - 2.0);
>   0: (MAXIMA::BESSEL-J -6.01d0 #C(-2.0d0 4.0d0))
>     1: (MAXIMA::HANKEL-1 -6.01d0 #C(-2.0d0 4.0d0))
>       2: (MAXIMA::HANKEL-1 6.01d0 #C(-2.0d0 4.0d0))
>         3: (SLATEC:ZBESH -2.0d0 4.0d0 0.009999999999999787d0 1 1 7 #(0.0d0
> 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0
> 0.0d0) 0 0)
>         3: SLATEC:ZBESH returned NIL NIL NIL NIL NIL NIL NIL NIL 0 0
>       2: HANKEL-1 returned #C(-0.05960122792538561 -0.15726626400631025)
>     1: HANKEL-1 returned #C(-0.054631965587457046 -0.15906078240964094)
>     1: (MAXIMA::HANKEL-2 -6.01d0 #C(-2.0d0 4.0d0))
>       2: (MAXIMA::HANKEL-2 6.01d0 #C(-2.0d0 4.0d0))
>         3: (SLATEC:ZBESH -2.0d0 4.0d0 0.009999999999999787d0 1 2 7 #(0.0d0
> 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0
> 0.0d0) 0 0)
>         3: SLATEC:ZBESH returned NIL NIL NIL NIL NIL NIL NIL NIL 0 0
>       2: HANKEL-2 returned #C(0.579065193105355 0.2637181177754141)
>     1: HANKEL-2 returned #C(0.5870630456502318 0.24539911153266847)
>   0: BESSEL-J returned #C(0.26621554003138737 0.04316916456151376)
> (%o1)            0.04316916456151376 %i + 0.26621554003138737
> (%i2) quit();
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> So I tried to debug bessel_j on ARM64 SBCL Maxima-5.47.0:
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> % ../../sbcl_arm64/bin/sbcl --core ./binary-sbcl/maxima.core --noinform
> --norc
> Maxima 5.47.0 https://maxima.sourceforge.io
> using Lisp SBCL 2.3.6.116-a58a4b217-WIP
> Distributed under the GNU Public License. See the file COPYING.
> Dedicated to the memory of William Schelter.
> The function bug_report() provides bug reporting information.
> (%i1) to_lisp();
>
> Type (to-maxima) to restart, ($quit) to quit Maxima.
>
> MAXIMA> (setq *debugger-hook* nil)
>
> NIL
> MAXIMA> (trace $bessel_j SLATEC:ZBESH HANKEL-1 HANKEL-2 BESSEL-J)
>
> ($BESSEL_J SLATEC:ZBESH HANKEL-1 HANKEL-2 BESSEL-J)
> MAXIMA> #$bessel_j(- 6.01, 4.0*%i - 2.0)$
>   0: (MAXIMA::BESSEL-J -6.01d0 #C(-2.0d0 4.0d0))
>     1: (MAXIMA::HANKEL-1 -6.01d0 #C(-2.0d0 4.0d0))
>       2: (MAXIMA::HANKEL-1 6.01d0 #C(-2.0d0 4.0d0))
>         3: (SLATEC:ZBESH -2.0d0 4.0d0 0.009999999999999787d0 1 1 7 #(0.0d0
> 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0
> 0.0d0) 0 0)
>
> debugger invoked on a SB-INT:INVALID-ARRAY-INDEX-ERROR @7004D7DA50 in
> thread
> #<THREAD "main thread" RUNNING {7006E00003}>:
>   #<unknown immediate object, lowtag=#b1101, widetag=#xD {700732230D}> is
> not of type INTEGER.
>
> Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
>
> restarts (invokable by number or by possibly-abbreviated name):
>   0: [MACSYMA-QUIT] Maxima top-level
>   1: [ABORT       ] Exit from the current thread.
>
> (SLATEC:ZBESH -2.0d0 4.0d0 0.009999999999999787d0 1 1 7
> #(-0.006422270890237786d0 -0.007452140904358356d0 -0.011244693070829145d0
> -0.020737028670355366d0 -0.04400017233503277d0 -0.1022606857621183d0
> -0.24847333482671863d0) #(-0.008439416303090813d0 -0.00896909532292368d0
> -0.010557598350871592d0 -0.012937037782551123d0 -0.013650100581509214d0
> 4.563390974043763d-4 0.08972961010333168d0) 0 0)
>    source: (SETF (F2CL-LIB:FREF CYR (I) ((1 N))) (* STR ATOL))
> 0] L
> SLATEC::ASCLE  =  1.0020841800044862d-289
> SLATEC::ATOL  =  1.0d0
> SLATEC::CSGNI  =  -0.6365412341661386d0
> SLATEC::CSGNR  =  -0.009999588771556434d0
> SLATEC::CYI  =  #(-0.008439416303090813d0 -0.00896909532292368d0
>                   -0.010557598350871592d0 -0.012937037782551123d0
>                   -0.013650100581509214d0 4.563390974043763d-4
>                   0.08972961010333168d0)
> SLATEC::CYR  =  #(-0.006422270890237786d0 -0.007452140904358356d0
>                   -0.011244693070829145d0 -0.020737028670355366d0
>                   -0.04400017233503277d0 -0.1022606857621183d0
>                   -0.24847333482671863d0)
> SLATEC::FNU  =  0.009999999999999787d0
> SLATEC::I  =  #(-0.008439416303090813d0 -0.00896909532292368d0
>                 -0.010557598350871592d0 -0.012937037782551123d0
>                 -0.013650100581509214d0 4.563390974043763d-4
>                 0.08972961010333168d0)
> SLATEC::IERR  =  0
> SLATEC::KODE  =  1
> SLATEC::M  =  1
> SLATEC::N  =  7
> SLATEC::NZ  =  0
> SLATEC::RTOL  =  4.503599627370495d15
> SLATEC::STI  =  0.004172430931124104d0
> SLATEC::TOL  =  2.2204460492503136d-16
> SLATEC::ZI  =  4.0d0
> SLATEC::ZR  =  -2.0d0
> SLATEC::ZTI  =  -1.0d0
>
> 0] P
> (SLATEC:ZBESH -2.0d0 4.0d0 0.009999999999999787d0 1 1 7
> #(-0.006422270890237786d0 -0.007452140904358356d0 -0.011244693070829145d0
> -0.020737028670355366d0 -0.04400017233503277d0 -0.1022606857621183d0
> -0.24847333482671863d0) #(-0.008439416303090813d0 -0.00896909532292368d0
> -0.010557598350871592d0 -0.012937037782551123d0 -0.013650100581509214d0
> 4.563390974043763d-4 0.08972961010333168d0) 0 0)
> 0] SOURCE
>
> (SETF (F2CL-LIB:FREF CYR (I) ((1 N))) (* STR ATOL))
> 0] 1
>         3: SLATEC:ZBESH exited non-locally
>       2: HANKEL-1 exited non-locally
>     1: HANKEL-1 exited non-locally
>   0: BESSEL-J exited non-locally
> Returning to Maxima
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> It seems that the first called SLATEC:ZBESH function returns an error when
> evaluating (SETF (F2CL-LIB:FREF CYR (I) ((1 N))) (* STR ATOL)).
>
> SLATEC:ZBESH is included in
> "maxima-5.47.0/src/numerical/slatec/zbesh.lisp".
>
>
> And I tried to evaluate the second called SLATEC:ZBESH function,
> then it returns another error:
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> % ../../sbcl_arm64/bin/sbcl --core ./binary-sbcl/maxima.core --noinform
> --norc
> Maxima 5.47.0 https://maxima.sourceforge.io
> using Lisp SBCL 2.3.6.116-a58a4b217-WIP
> Distributed under the GNU Public License. See the file COPYING.
> Dedicated to the memory of William Schelter.
> The function bug_report() provides bug reporting information.
> (%i1) to_lisp();
>
> Type (to-maxima) to restart, ($quit) to quit Maxima.
>
> MAXIMA> (setq *debugger-hook* nil)
>
> NIL
> MAXIMA> (trace slatec:zbesh f2cl-lib:d1mach f2cl-lib:i1mach
> f2cl-lib:int-sub f2cl-lib:flog f2cl-lib:int-add f2cl-lib:dsign
> f2cl-lib:fref slatec::zbunk slatec::zacon slatec::zbknu slatec::zuoik
> slatec::zabs slatec::zbinu slatec::zmlt slatec::zs1s2 slatec::zseri
> slatec::zasyi  slatec::zmlri slatec::zwrsk slatec::zbuni slatec::zdiv
> slatec::zuchk slatec::dgamln slatec::zlog f2cl-lib:int f2cl-lib:fdo)
>
> (SLATEC:ZBESH F2CL-LIB:D1MACH F2CL-LIB:I1MACH F2CL-LIB:INT-SUB
> F2CL-LIB:FLOG
>               F2CL-LIB:INT-ADD F2CL-LIB:DSIGN F2CL-LIB:FREF SLATEC::ZBUNK
>               SLATEC::ZACON SLATEC::ZBKNU SLATEC::ZUOIK SLATEC::ZABS
>               SLATEC::ZBINU SLATEC::ZMLT SLATEC::ZS1S2 SLATEC::ZSERI
>               SLATEC::ZASYI SLATEC::ZMLRI SLATEC::ZWRSK SLATEC::ZBUNI
>               SLATEC::ZDIV SLATEC::ZUCHK SLATEC::DGAMLN SLATEC::ZLOG
>               F2CL-LIB:INT F2CL-LIB:FDO)
> MAXIMA> (SLATEC:ZBESH -2.0d0 4.0d0 0.009999999999999787d0 1 2 7
> (make-array 7 :element-type 'double-float :initial-contents '(0.0d0 0.0d0
> 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0)) (make-array 7 :element-type 'double-float
> :initial-contents '(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0)) 0 0)
>   0: (SLATEC:ZBESH -2.0d0 4.0d0 0.009999999999999787d0 1 2 7 #(0.0d0 0.0d0
> 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0)
> 0 0)
>     1: (F2CL-LIB:D1MACH 4)
>     1: F2CL-LIB:D1MACH returned 2.2204460492503136e-16
>     1: (F2CL-LIB:I1MACH 15)
>     1: F2CL-LIB:I1MACH returned -1020
>     1: (F2CL-LIB:I1MACH 16)
>     1: F2CL-LIB:I1MACH returned 1023
>     1: (F2CL-LIB:D1MACH 5)
>     1: F2CL-LIB:D1MACH returned 0.30102999566398114
>     1: (F2CL-LIB:I1MACH 14)
>     1: F2CL-LIB:I1MACH returned 53
>     1: (SLATEC::ZABS -2.0d0 4.0d0)
>     1: SLATEC::ZABS returned 4.47213595499958 NIL NIL
>     1: (F2CL-LIB:I1MACH 9)
>     1: F2CL-LIB:I1MACH returned 4611686018427387903
>     1: (F2CL-LIB:D1MACH 1)
>     1: F2CL-LIB:D1MACH returned 2.2250738585072014e-308
>     1: (SLATEC::ZUOIK -4.0d0 -2.0d0 0.009999999999999787d0 1 2 7 #(0.0d0
> 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0
> 0.0d0) 0 2.2204460492503136d-16 700.2285216144315d0 664.1783734536958d0)
>       2: (F2CL-LIB:D1MACH 1)
>       2: F2CL-LIB:D1MACH returned 2.2250738585072014e-308
>       2: (SLATEC::ZABS 1.2448979591836735d0 0.32653061224489793d0)
>       2: SLATEC::ZABS returned 1.2870093898308215 NIL NIL
>       2: (SLATEC::ZDIV 2.125146068076162d0 0.14510587625445748d0
> 0.5714285714285714d0 0.2857142857142857d0 0.0d0 0.0d0)
>         3: (SLATEC::ZABS 0.5714285714285714d0 0.2857142857142857d0)
>         3: SLATEC::ZABS returned 0.6388765649999399 NIL NIL
>       2: SLATEC::ZDIV returned
>            NIL
>            NIL
>            NIL
>            NIL
>            3.076778608684747
>            -1.284454020897073
>       2: (SLATEC::ZLOG 3.076778608684747d0 -1.284454020897073d0
> 2.125146068076162d0 0.14510587625445748d0 0)
>         3: (SLATEC::ZABS 3.076778608684747d0 -1.284454020897073d0)
>         3: SLATEC::ZABS returned 3.334124883482727 NIL NIL
>       2: SLATEC::ZLOG returned NIL NIL 1.204210241180393
> -0.395473001075958 0
>       2: (SLATEC::ZDIV 1.0d0 0.0d0 1.125146068076162d0
> 0.14510587625445748d0 0.5714285714285714d0 0.2857142857142857d0)
>         3: (SLATEC::ZABS 1.125146068076162d0 0.14510587625445748d0)
>         3: SLATEC::ZABS returned 1.1344643625212831 NIL NIL
>       2: SLATEC::ZDIV returned
>            NIL
>            NIL
>            NIL
>            NIL
>            0.8742329908129602
>            -0.11274655600883517
>       2: (SLATEC::ZABS 0.12489042725899431d0 -0.016106650858405024d0)
>       2: SLATEC::ZABS returned 0.12592475143040271 NIL NIL
>       2: (SLATEC::ZABS 0.4438353080759295d0 -0.028501864931645117d0)
>       2: SLATEC::ZABS returned 0.44474952164048137 NIL NIL
>     1: SLATEC::ZUOIK returned NIL NIL NIL NIL NIL NIL NIL NIL 0 NIL NIL NIL
>     1: (SLATEC::ZACON -4.0d0 -2.0d0 0.009999999999999787d0 1 1 7 #(0.0d0
> 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0
> 0.0d0) 0 21.784271729432422d0 85.92135864716212d0 2.2204460492503136d-16
> 700.2285216144315d0 664.1783734536958d0)
>       2: (SLATEC::ZBINU 4.0d0 2.0d0 0.009999999999999787d0 1 7 #(0.0d0
> 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0
> 0.0d0) 0 21.784271729432422d0 85.92135864716212d0 2.2204460492503136d-16
> 700.2285216144315d0 664.1783734536958d0)
>         3: (SLATEC::ZABS 4.0d0 2.0d0)
>         3: SLATEC::ZABS returned 4.47213595499958 NIL NIL
>         3: (SLATEC::ZSERI 4.0d0 2.0d0 0.009999999999999787d0 1 7 #(0.0d0
> 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0
> 0.0d0) 0 2.2204460492503136d-16 700.2285216144315d0 664.1783734536958d0)
>           4: (SLATEC::ZABS 4.0d0 2.0d0)
>           4: SLATEC::ZABS returned 4.47213595499958 NIL NIL
>           4: (F2CL-LIB:D1MACH 1)
>           4: F2CL-LIB:D1MACH returned 2.2250738585072014e-308
>           4: (SLATEC::ZMLT 2.0d0 1.0d0 2.0d0 1.0d0 0.0d0 0.0d0)
>           4: SLATEC::ZMLT returned NIL NIL NIL NIL 3.0 4.0
>           4: (SLATEC::ZABS 3.0d0 4.0d0)
>           4: SLATEC::ZABS returned 5.0 NIL NIL
>           4: (SLATEC::ZLOG 2.0d0 1.0d0 0.0d0 0.0d0 0)
>             5: (SLATEC::ZABS 2.0d0 1.0d0)
>             5: SLATEC::ZABS returned 2.23606797749979 NIL NIL
>           4: SLATEC::ZLOG returned
>                NIL
>                NIL
>                0.8047189562170503
>                0.46364760900080615
>                0
>           4: (SLATEC::DGAMLN 7.01d0 0)
>             5: (F2CL-LIB:D1MACH 4)
>             5: F2CL-LIB:D1MACH returned 2.2204460492503136e-16
>             5: (F2CL-LIB:I1MACH 14)
>             5: F2CL-LIB:I1MACH returned 53
>             5: (F2CL-LIB:D1MACH 5)
>             5: F2CL-LIB:D1MACH returned 0.30102999566398114
>
> debugger invoked on a TYPE-ERROR @7005DD02EC in thread
> #<THREAD "main thread" RUNNING {7006E00003}>:
>   The value
>     #<unknown immediate object, lowtag=#b1001, widetag=#x49 {7005C4FA49}>
>   is not of type
>     (SIGNED-BYTE 32)
>
> Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
>
> restarts (invokable by number or by possibly-abbreviated name):
>   0: [MACSYMA-QUIT] Maxima top-level
>   1: [ABORT       ] Exit from the current thread.
>
> (SLATEC::DGAMLN 7.01d0 0)
>    source: (F2CL-LIB:INT-ADD K 1)
> 0] L
> SLATEC::IERR  =  0
> SLATEC::Z  =  7.01d0
>
> 0] P
> (SLATEC::DGAMLN 7.01d0 0)
> 0] SOURCE
>
> (F2CL-LIB:INT-ADD K 1)
> 0] 1
>           4: SLATEC::DGAMLN exited non-locally
>         3: SLATEC::ZSERI exited non-locally
>       2: SLATEC::ZBINU exited non-locally
>     1: SLATEC::ZACON exited non-locally
>   0: SLATEC:ZBESH exited non-locally
> Returning to Maxima
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> It seems that SLATEC::DGAMLN function returns an error when evaluating
> (F2CL-LIB:INT-ADD K 1).
>
> SLATEC::DGAMLN is included in
> "maxima-5.47.0/src/numerical/slatec/dgamln.lisp".
>
> Thanks.
>
> _______________________________________________
> Sbcl-devel mailing list
> Sbcl-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sbcl-devel
>

[Attachment #5 (text/html)]

<div dir="ltr">Fixed. Thanks.</div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Thu, Jul 13, 2023 at 11:26 PM 有坂富雄 via Sbcl-devel \
&lt;<a href="mailto:sbcl-devel@lists.sourceforge.net">sbcl-devel@lists.sourceforge.net</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>Thanks for \
your help!<br></div><div>Now, I can build Maxima-5.47.0 with the development version \
of SBCL.<br></div><div><br></div><div>But, some compiled functions of Maxima are \
broken on ARM64 macOS Monterey.<br></div><div><br></div><div>For example, both \
SLATEC:ZBESH and SLATEC::DGAMLN are broken. This issue causes an error of the \
bessel_j function of Maxima.<br></div><div><br></div><div>On ARM64 SBCL \
Maxima-5.47.0, the bessel_j function returns an error:<br></div><div>- - - - - - - - \
- - - - - - - - - - - - - - - - - - - - - -<br></div><div>% ../../sbcl_arm64/bin/sbcl \
--core ./binary-sbcl/maxima.core --noinform --norc<br></div><div>Maxima 5.47.0 <a \
rel="noopener noreferrer" href="https://maxima.sourceforge.io" \
target="_blank">https://maxima.sourceforge.io</a><br></div><div>using Lisp SBCL \
2.3.6.116-a58a4b217-WIP<br></div><div>Distributed under the GNU Public License. See \
the file COPYING.<br></div><div>Dedicated to the memory of William \
Schelter.<br></div><div>The function bug_report() provides bug reporting \
information.<br></div><div>(%i1) bessel_j(- 6.01, 4.0*%i - \
2.0);<br></div><div><br></div><div>Maxima encountered a Lisp \
error:<br></div><div><br></div><div>%                                                 \
<br></div><div>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - \
-<br></div><div><br></div><div>On the other hand, x86-64 SBCL Maxima-5.47.0 works \
well:<br></div><div>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - \
-<br></div><div>$ ../../sbcl_x86_64/bin/sbcl --core ./binary-sbcl/maxima.core \
--noinform --norc<br></div><div>Maxima 5.47.0 <a rel="noopener noreferrer" \
href="https://maxima.sourceforge.io" \
target="_blank">https://maxima.sourceforge.io</a><br></div><div>using Lisp SBCL \
2.3.6.116-a58a4b217-WIP<br></div><div>Distributed under the GNU Public License. See \
the file COPYING.<br></div><div>Dedicated to the memory of William \
Schelter.<br></div><div>The function bug_report() provides bug reporting \
information.<br></div><div>(%i1) bessel_j(- 6.01, 4.0*%i - 2.0);<br></div><div>(%o1)  \
0.04316916456151376 %i + 0.26621554003138737<br></div><div>(%i2) \
quit();<br></div><div>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - \
-<br></div><div><br></div><div>And the following trace shows that bessel_j calls \
SLATEC:ZBESH function two times:<br></div><div>(only the fifth argument is \
different)<br></div><div>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - \
-<br></div><div>$ ../../sbcl_x86_64/bin/sbcl --core ./binary-sbcl/maxima.core \
--noinform --norc<br></div><div>Maxima 5.47.0 <a rel="noopener noreferrer" \
href="https://maxima.sourceforge.io" \
target="_blank">https://maxima.sourceforge.io</a><br></div><div>using Lisp SBCL \
2.3.6.116-a58a4b217-WIP<br></div><div>Distributed under the GNU Public License. See \
the file COPYING.<br></div><div>Dedicated to the memory of William \
Schelter.<br></div><div>The function bug_report() provides bug reporting \
information.<br></div><div>(%i1) :lisp (trace $bessel_j SLATEC:ZBESH HANKEL-1 \
HANKEL-2 BESSEL-J)<br></div><div><br></div><div>($BESSEL_J ZBESH HANKEL-1 HANKEL-2 \
BESSEL-J)<br></div><div>(%i1) bessel_j(- 6.01, 4.0*%i - 2.0);<br></div><div>   0: \
(MAXIMA::BESSEL-J -6.01d0 #C(-2.0d0 4.0d0))<br></div><div>       1: (MAXIMA::HANKEL-1 \
-6.01d0 #C(-2.0d0 4.0d0))<br></div><div>           2: (MAXIMA::HANKEL-1 6.01d0 \
#C(-2.0d0 4.0d0))<br></div><div>               3: (SLATEC:ZBESH -2.0d0 4.0d0 \
0.009999999999999787d0 1 1 7 #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 \
0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) 0 0)<br></div><div>               3: \
SLATEC:ZBESH returned NIL NIL NIL NIL NIL NIL NIL NIL 0 0<br></div><div>           2: \
HANKEL-1 returned #C(-0.05960122792538561 -0.15726626400631025)<br></div><div>       \
1: HANKEL-1 returned #C(-0.054631965587457046 -0.15906078240964094)<br></div><div>    \
1: (MAXIMA::HANKEL-2 -6.01d0 #C(-2.0d0 4.0d0))<br></div><div>           2: \
(MAXIMA::HANKEL-2 6.01d0 #C(-2.0d0 4.0d0))<br></div><div>               3: \
(SLATEC:ZBESH -2.0d0 4.0d0 0.009999999999999787d0 1 2 7 #(0.0d0 0.0d0 0.0d0 0.0d0 \
0.0d0 0.0d0 0.0d0) #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) 0 0)<br></div><div>   \
3: SLATEC:ZBESH returned NIL NIL NIL NIL NIL NIL NIL NIL 0 0<br></div><div>           \
2: HANKEL-2 returned #C(0.579065193105355 0.2637181177754141)<br></div><div>       1: \
HANKEL-2 returned #C(0.5870630456502318 0.24539911153266847)<br></div><div>   0: \
BESSEL-J returned #C(0.26621554003138737 0.04316916456151376)<br></div><div>(%o1)     \
0.04316916456151376 %i + 0.26621554003138737<br></div><div>(%i2) \
quit();<br></div><div>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - \
-<br></div><div><br></div><div>So I tried to debug bessel_j on ARM64 SBCL \
Maxima-5.47.0:<br></div><div>- - - - - - - - - - - - - - - - - - - - - - - - - - - - \
- -<br></div><div>% ../../sbcl_arm64/bin/sbcl --core ./binary-sbcl/maxima.core \
--noinform --norc<br></div><div>Maxima 5.47.0 <a rel="noopener noreferrer" \
href="https://maxima.sourceforge.io" \
target="_blank">https://maxima.sourceforge.io</a><br></div><div>using Lisp SBCL \
2.3.6.116-a58a4b217-WIP<br></div><div>Distributed under the GNU Public License. See \
the file COPYING.<br></div><div>Dedicated to the memory of William \
Schelter.<br></div><div>The function bug_report() provides bug reporting \
information.<br></div><div>(%i1) to_lisp();<br></div><div><br></div><div>Type \
(to-maxima) to restart, ($quit) to quit \
Maxima.<br></div><div><br></div><div>MAXIMA&gt; (setq *debugger-hook* \
nil)<br></div><div><br></div><div>NIL<br></div><div>MAXIMA&gt; (trace $bessel_j \
SLATEC:ZBESH HANKEL-1 HANKEL-2 BESSEL-J)<br></div><div><br></div><div>($BESSEL_J \
SLATEC:ZBESH HANKEL-1 HANKEL-2 BESSEL-J)<br></div><div>MAXIMA&gt; #$bessel_j(- 6.01, \
4.0*%i - 2.0)$<br></div><div>   0: (MAXIMA::BESSEL-J -6.01d0 #C(-2.0d0 \
4.0d0))<br></div><div>       1: (MAXIMA::HANKEL-1 -6.01d0 #C(-2.0d0 \
4.0d0))<br></div><div>           2: (MAXIMA::HANKEL-1 6.01d0 #C(-2.0d0 \
4.0d0))<br></div><div>               3: (SLATEC:ZBESH -2.0d0 4.0d0 \
0.009999999999999787d0 1 1 7 #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 \
0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) 0 0)<br></div><div><br></div><div>debugger \
invoked on a SB-INT:INVALID-ARRAY-INDEX-ERROR @7004D7DA50 in \
thread<br></div><div>#&lt;THREAD &quot;main thread&quot; RUNNING \
{7006E00003}&gt;:<br></div><div>   #&lt;unknown immediate object, lowtag=#b1101, \
widetag=#xD {700732230D}&gt; is not of type \
INTEGER.<br></div><div><br></div><div>Type HELP for debugger help, or (SB-EXT:EXIT) \
to exit from SBCL.<br></div><div><br></div><div>restarts (invokable by number or by \
possibly-abbreviated name):<br></div><div>   0: [MACSYMA-QUIT] Maxima \
top-level<br></div><div>   1: [ABORT             ] Exit from the current \
thread.<br></div><div><br></div><div>(SLATEC:ZBESH -2.0d0 4.0d0 \
0.009999999999999787d0 1 1 7 #(-0.006422270890237786d0 -0.007452140904358356d0 \
-0.011244693070829145d0 -0.020737028670355366d0 -0.04400017233503277d0 \
-0.1022606857621183d0 -0.24847333482671863d0) #(-0.008439416303090813d0 \
-0.00896909532292368d0 -0.010557598350871592d0 -0.012937037782551123d0 \
-0.013650100581509214d0 4.563390974043763d-4 0.08972961010333168d0) 0 \
0)<br></div><div>     source: (SETF (F2CL-LIB:FREF CYR (I) ((1 N))) (* STR \
ATOL))<br></div><div>0] L<br></div><div>SLATEC::ASCLE   =   \
1.0020841800044862d-289<br></div><div>SLATEC::ATOL   =   \
1.0d0<br></div><div>SLATEC::CSGNI   =   \
-0.6365412341661386d0<br></div><div>SLATEC::CSGNR   =   \
-0.009999588771556434d0<br></div><div>SLATEC::CYI   =   #(-0.008439416303090813d0 \
-0.00896909532292368d0<br></div><div>                                   \
-0.010557598350871592d0 -0.012937037782551123d0<br></div><div>                        \
-0.013650100581509214d0 4.563390974043763d-4<br></div><div>                           \
0.08972961010333168d0)<br></div><div>SLATEC::CYR   =   #(-0.006422270890237786d0 \
-0.007452140904358356d0<br></div><div>                                   \
-0.011244693070829145d0 -0.020737028670355366d0<br></div><div>                        \
-0.04400017233503277d0 -0.1022606857621183d0<br></div><div>                           \
-0.24847333482671863d0)<br></div><div>SLATEC::FNU   =   \
0.009999999999999787d0<br></div><div>SLATEC::I   =   #(-0.008439416303090813d0 \
-0.00896909532292368d0<br></div><div>                               \
-0.010557598350871592d0 -0.012937037782551123d0<br></div><div>                        \
-0.013650100581509214d0 4.563390974043763d-4<br></div><div>                           \
0.08972961010333168d0)<br></div><div>SLATEC::IERR   =   0<br></div><div>SLATEC::KODE  \
=   1<br></div><div>SLATEC::M   =   1<br></div><div>SLATEC::N   =   \
7<br></div><div>SLATEC::NZ   =   0<br></div><div>SLATEC::RTOL   =   \
4.503599627370495d15<br></div><div>SLATEC::STI   =   \
0.004172430931124104d0<br></div><div>SLATEC::TOL   =   \
2.2204460492503136d-16<br></div><div>SLATEC::ZI   =   4.0d0<br></div><div>SLATEC::ZR  \
=   -2.0d0<br></div><div>SLATEC::ZTI   =   -1.0d0<br></div><div><br></div><div>0] \
P<br></div><div>(SLATEC:ZBESH -2.0d0 4.0d0 0.009999999999999787d0 1 1 7 \
#(-0.006422270890237786d0 -0.007452140904358356d0 -0.011244693070829145d0 \
-0.020737028670355366d0 -0.04400017233503277d0 -0.1022606857621183d0 \
-0.24847333482671863d0) #(-0.008439416303090813d0 -0.00896909532292368d0 \
-0.010557598350871592d0 -0.012937037782551123d0 -0.013650100581509214d0 \
4.563390974043763d-4 0.08972961010333168d0) 0 0)<br></div><div>0] \
SOURCE<br></div><div><br></div><div>(SETF (F2CL-LIB:FREF CYR (I) ((1 N))) (* STR \
ATOL))<br></div><div>0] 1<br></div><div>               3: SLATEC:ZBESH exited \
non-locally<br></div><div>           2: HANKEL-1 exited non-locally<br></div><div>    \
1: HANKEL-1 exited non-locally<br></div><div>   0: BESSEL-J exited \
non-locally<br></div><div>Returning to Maxima<br></div><div>- - - - - - - - - - - - - \
- - - - - - - - - - - - - - - - -<br></div><div>It seems that the first called \
SLATEC:ZBESH function returns an error when evaluating (SETF (F2CL-LIB:FREF CYR (I) \
((1 N))) (* STR ATOL)).<br></div><div><br></div><div>SLATEC:ZBESH is included in \
&quot;maxima-5.47.0/src/numerical/slatec/zbesh.lisp&quot;.<br></div><div><br></div><div><br></div><div>And \
I tried to evaluate the second called SLATEC:ZBESH function,<br></div><div>then it \
returns another error:<br></div><div>- - - - - - - - - - - - - - - - - - - - - - - - \
- - - - - -<br></div><div>% ../../sbcl_arm64/bin/sbcl --core \
./binary-sbcl/maxima.core --noinform --norc<br></div><div>Maxima 5.47.0 <a \
rel="noopener noreferrer" href="https://maxima.sourceforge.io" \
target="_blank">https://maxima.sourceforge.io</a><br></div><div>using Lisp SBCL \
2.3.6.116-a58a4b217-WIP<br></div><div>Distributed under the GNU Public License. See \
the file COPYING.<br></div><div>Dedicated to the memory of William \
Schelter.<br></div><div>The function bug_report() provides bug reporting \
information.<br></div><div>(%i1) to_lisp();<br></div><div><br></div><div>Type \
(to-maxima) to restart, ($quit) to quit \
Maxima.<br></div><div><br></div><div>MAXIMA&gt; (setq *debugger-hook* \
nil)<br></div><div><br></div><div>NIL<br></div><div>MAXIMA&gt; (trace slatec:zbesh \
f2cl-lib:d1mach f2cl-lib:i1mach f2cl-lib:int-sub f2cl-lib:flog f2cl-lib:int-add \
f2cl-lib:dsign f2cl-lib:fref slatec::zbunk slatec::zacon slatec::zbknu slatec::zuoik \
slatec::zabs slatec::zbinu slatec::zmlt slatec::zs1s2 slatec::zseri slatec::zasyi   \
slatec::zmlri slatec::zwrsk slatec::zbuni slatec::zdiv slatec::zuchk slatec::dgamln \
slatec::zlog f2cl-lib:int f2cl-lib:fdo)<br></div><div><br></div><div>(SLATEC:ZBESH \
F2CL-LIB:D1MACH F2CL-LIB:I1MACH F2CL-LIB:INT-SUB F2CL-LIB:FLOG<br></div><div>         \
F2CL-LIB:INT-ADD F2CL-LIB:DSIGN F2CL-LIB:FREF SLATEC::ZBUNK<br></div><div>            \
SLATEC::ZACON SLATEC::ZBKNU SLATEC::ZUOIK SLATEC::ZABS<br></div><div>                 \
SLATEC::ZBINU SLATEC::ZMLT SLATEC::ZS1S2 SLATEC::ZSERI<br></div><div>                 \
SLATEC::ZASYI SLATEC::ZMLRI SLATEC::ZWRSK SLATEC::ZBUNI<br></div><div>                \
SLATEC::ZDIV SLATEC::ZUCHK SLATEC::DGAMLN SLATEC::ZLOG<br></div><div>                 \
F2CL-LIB:INT F2CL-LIB:FDO)<br></div><div>MAXIMA&gt; (SLATEC:ZBESH -2.0d0 4.0d0 \
0.009999999999999787d0 1 2 7 (make-array 7 :element-type &#39;double-float \
:initial-contents &#39;(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0)) (make-array 7 \
:element-type &#39;double-float :initial-contents &#39;(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 \
0.0d0 0.0d0)) 0 0)<br></div><div>   0: (SLATEC:ZBESH -2.0d0 4.0d0 \
0.009999999999999787d0 1 2 7 #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 \
0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) 0 0)<br></div><div>       1: (F2CL-LIB:D1MACH \
4)<br></div><div>       1: F2CL-LIB:D1MACH returned \
2.2204460492503136e-16<br></div><div>       1: (F2CL-LIB:I1MACH 15)<br></div><div>    \
1: F2CL-LIB:I1MACH returned -1020<br></div><div>       1: (F2CL-LIB:I1MACH \
16)<br></div><div>       1: F2CL-LIB:I1MACH returned 1023<br></div><div>       1: \
(F2CL-LIB:D1MACH 5)<br></div><div>       1: F2CL-LIB:D1MACH returned \
0.30102999566398114<br></div><div>       1: (F2CL-LIB:I1MACH 14)<br></div><div>       \
1: F2CL-LIB:I1MACH returned 53<br></div><div>       1: (SLATEC::ZABS -2.0d0 \
4.0d0)<br></div><div>       1: SLATEC::ZABS returned 4.47213595499958 NIL \
NIL<br></div><div>       1: (F2CL-LIB:I1MACH 9)<br></div><div>       1: \
F2CL-LIB:I1MACH returned 4611686018427387903<br></div><div>       1: (F2CL-LIB:D1MACH \
1)<br></div><div>       1: F2CL-LIB:D1MACH returned \
2.2250738585072014e-308<br></div><div>       1: (SLATEC::ZUOIK -4.0d0 -2.0d0 \
0.009999999999999787d0 1 2 7 #(0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) #(0.0d0 \
0.0d0 0.0d0 0.0d0 0.0d0 0.0d0 0.0d0) 0 2.2204460492503136d-16 700.2285216144315d0 \
664.1783734536958d0)<br></div><div>           2: (F2CL-LIB:D1MACH 1)<br></div><div>   \
2: F2CL-LIB:D1MACH returned 2.2250738585072014e-308<br></div><div>           2: \
(SLATEC::ZABS 1.2448979591836735d0 0.32653061224489793d0)<br></div><div>           2: \
SLATEC::ZABS returned 1.2870093898308215 NIL NIL<br></div><div>           2: \
(SLATEC::ZDIV 2.125146068076162d0 0.14510587625445748d0 0.5714285714285714d0 \
0.2857142857142857d0 0.0d0 0.0d0)<br></div><div>               3: (SLATEC::ZABS \
0.5714285714285714d0 0.2857142857142857d0)<br></div><div>               3: \
SLATEC::ZABS returned 0.6388765649999399 NIL NIL<br></div><div>           2: \
SLATEC::ZDIV returned<br></div><div>                     NIL<br></div><div>           \
NIL<br></div><div>                     NIL<br></div><div>                     \
NIL<br></div><div>                     3.076778608684747<br></div><div>               \
-1.284454020897073<br></div><div>           2: (SLATEC::ZLOG 3.076778608684747d0 \
-1.284454020897073d0 2.125146068076162d0 0.14510587625445748d0 0)<br></div><div>      \
3: (SLATEC::ZABS 3.076778608684747d0 -1.284454020897073d0)<br></div><div>             \
3: SLATEC::ZABS returned 3.334124883482727 NIL NIL<br></div><div>           2: \
SLATEC::ZLOG returned NIL NIL 1.204210241180393 -0.395473001075958 0<br></div><div>   \
2: (SLATEC::ZDIV 1.0d0 0.0d0 1.125146068076162d0 0.14510587625445748d0 \
Sbcl-devel mailing list<br>
<a href="mailto:Sbcl-devel@lists.sourceforge.net" \
target="_blank">Sbcl-devel@lists.sourceforge.net</a><br> <a \
href="https://lists.sourceforge.net/lists/listinfo/sbcl-devel" rel="noreferrer" \
target="_blank">https://lists.sourceforge.net/lists/listinfo/sbcl-devel</a><br> \
</blockquote></div>





_______________________________________________
Sbcl-devel mailing list
Sbcl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic