On 1/09/2014 3:18 PM, David Billinghurst wrote:
On 1/09/2014 1:37 PM, David Billinghurst wrote:
On 1/09/2014 1:03 PM, David Billinghurst wrote:

I have problems with maxima-5.33.0 and Version_2_6_11pre on msys/windows. Simple test case below.

There are issues with maxima-5.34.0 - released a few days ago - and Lisp implementations which compute floating point infinity by default (GCL, ECL). See http://sourceforge.net/p/maxima/mailman/message/32778820/ for irrelevant details. To avoid these I have focused on maxima-5.33.0, which works nicely with gcl-2.6.10.

I am comparing two freshly built gcls, using current mingw/msys 32-bit system under Windows XP SP3.

 1. gcl-2.6.10 built from tarball, with configure patched to use
    system gmp
 2. gcl git Version_2_6_11pre of around 12 hours ago

Both gcls are built using "./configure --enable-ansi --enable-dynsysgmp"

Then build maxima-5.33.0 from tarball, using the two uninstalled gcl
./configure --enable-gcl --with-gcl=<path to>/gcl-xxx/unixport/saved_ansi_gcl.exe
make
make check

Using gcl-2.6.10, all tests pass. Using Version_2_6_11pre I get a testsuite failure and then a "hang" in rtest11.mac.

I have started digging. The first reduced testcase is the maxima command "is(%pi>1);"

Using maxima/gcl-2.6.10 the answer is "true"
With maxima/Version_2_6_11pre the answer is "unknown"

I need to put this aside for now, but may get back to it later today.


A further reduced maxima test case is "?sign1(%e);", or at the lisp level (sign1 '$%e)

Using maxima/gcl-2.6.10 the answer is "pos"
With maxima/Version_2_6_11pre the answer is "pnz"

Digging further, the lisp variables in maxima that contains the floating point value for e and pi are symbols when compiled with Version_2_6_11pre

When compiled with gcl-2.6.10

to_lisp();
MAXIMA> %e-val
2.718281828459045
MAXIMA> (type-of %e-val)
LONG-FLOAT

When compiled with Version_2_6_11pre

to_lisp();
%e-val
|2.718281828459..(pruning extra digits).... |
MAXIMA> (type-of %e-val)
SYMBOL

and similarly for %pi-val

Sorry for spamming the list, but I have made more progress. Maxima stores the numerical value of float constants %e. %pi, %phi and %gamma on the property list of these symbols.

They are defined in the maxima file mlisp.lisp to 2048 bits of precision. I have trimmed the digits for readability

(mdefprop $%e     2.7182818284..<pruning extra digits>... $numer)

The two versions of gcl treat long decimal numbers differently. Here is a self contained lisp test case

(setq e  2.7182818...<pruning extra digits>.... )

with gcl-2.6.10
2.718281828459045

with Version_2_6_11pre

Cell error on |2.718281828459045..(pruning extra digits)....|
Unbound variable.The variable |2.71828182845904..(pruning extra digits)....| is unbound


_______________________________________________
Gcl-devel mailing list
Gcl-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/gcl-devel

Reply via email to