>>>>> "Richard" == Richard Fateman <fateman@cs.berkeley.edu> writes:
Richard> If someone has a program in C or Fortran which takes as input
Richard> a few integers and/or floats and returns, after some substantial
Richard> computation, a float, an integers, or an array of these, then it should
Richard> be possible to link this to maxima easily via foreign function
Richard> calls, and not ever worry about lisp's speed.
Richard> For a random number generator you might even produce an array
Richard> of a whole bunch of these from one call.
Richard> An idea which really capitalizes on the fact that we are
Richard> using lisp and maxima as open source is that we can patch in
Richard> any old stuff from a "subset domain". Thus any numerical
Richard> code should be simple. Octave, a Matlab clone, could be
Richard> swallowed whole, I think.
Richard> For example, over the weekend I tried out (successfully) loading
Richard> gmp 3.0 (gnu multiple precision) into a lisp. Interestingly, I
Richard> did NOT need the source for gmp. I loaded a dll. All i needed
Richard> was the documentation for the entry points.
Richard> Other features which come free from other peoples' lisp libraries
Richard> include network socket code, html generation.
Richard> The major hassle in my view in doing this is that other peoples' code
Richard> may not work on all relevant platforms, or may be subject to random
Richard> fluctuations. E.g. incompatible changes in interfaces, legal status,
Richard> etc.
Richard> RJF
This is a great idea, but sadly, FFIs are not standard between CL
implementations.
I would very much like to see GSL (http://sources.redhat.com/gsl/) be
accessible from CL; it seems to have just about everything one could
want in a sci/math library, and is actively being developed. This
library might well be a useful resource for Maxima to build on. I
have used this from ACL on a function-by-function basis but the hard
part is building the interface.
--
Liam Healy
Liam.Healy@nrl.navy.mil