[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] Re: [Maxima] Bugs in gcl cause maxima build failures

From: Raymond Toy
Subject: [Gcl-devel] Re: [Maxima] Bugs in gcl cause maxima build failures
Date: 03 May 2002 11:19:59 -0400
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.5 (bok choi)

>>>>> "James" == James Amundson <address@hidden> writes:

    >> I see 2 options: (1) write our own for gcl, (2) see if slatec really
    >> needs support for displaced arrays.  Option 2 will, I think, force me
    >> to modify f2cl not to use the array-displacement stuff when displaced
    >> arrays aren't used.  Something I should do anyway, but will take time.

    James> I always vote for modifying the code in maxima is little as
    James> possible.  I'm sure we can come up with a gcl replacement
    James> for array-displacement.

The array-displacment stuff in f2cl is quite new and come from some
work that Richard Fateman "challenged" me on[1].  A couple of months
ago, f2cl didn't use array-displacement at all.

I'm going to look at f2cl and see what we can be done.  If I get a
workable solution, I'll try updating the code and we'll see how gcl
handles the result.

I'm almost 100% sure the parts of SLATEC we use doesn't slice arrays.



[1] He was trying to use f2cl to convert mpfun, the very fast
multi-precision number package in Fortran.  mpfun slices arrays and
f2cl used displaced arrays to support this.  Eventually, the routine
would have to access the individual elements of the array, and this
turned out to be a major bottleneck because every lisp array access
had to chase down the entire chain of displaced arrays at runtime.  I
added the array-displacement stuff so that this chasing only happened
once on entry.  A big win in speed.  The result was that lisp was
about 2-3 times slower than the fortran code, mostly because of an
extra operation on array accesses and because of consing needed for
the Fortran function aint.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]