On 5/29/2013 11:23 AM, Robert Dodier wrote:
> On 2013-05-29, Jose Capco <jcapco at yahoo.com> wrote:
>
>> Thank you for the tips! I guess I will have to walk your path as well
>> (i.e. study Lisp and see if I can fix some bugs if there is any I can
>> fix). Is most of the computer algebra algorithm written in Lisp or do
>> they do some computer algebra in C or C++ level as well? I would
>> basically want to work on the algebra (algorithms with real
>> polynomials and Gr?bner basis) and geometry algorithms (algorithms
>> with elliptic curves and other algebraic curves).
> All of the algebraic stuff is written in Lisp. C/C++ libraries can be
> linked in via a foreign function interface, but there are technical and
> nontechnical problems with that.
I think this is worth explaining a little. At least my understanding of
it is that the
interface to foreign functions, not being part of the Common Lisp
standard, differs
from one implementation to the other. Since one goal is to have Maxima be
relatively neutral as to choice of underlying Lisp, there has not been a
concerted effort
to use foreign functions. There is a UFFI (universal) FFI attempting
to bridge the
gaps among implementations, but one historically important Lisp
supporting Maxima
does not allow FFI (GCL).
I am much in favor of foreign functions to access well designed and
implemented
libraries providing capabilities that (a) are not already available
and/or (b)
are maintained and improved by (other) skilled and devoted people.
I am generally not in favor of writing programs to attach to Maxima in C
or C++
where those languages are used primarily because the author is ignorant
of Lisp. There may be opportunities to write programs from scratch in C
or C++
so that they exploit some aspects of computing that are difficult to use
from Lisp, but a fair way of doing this might be to implement the facility
first in Lisp. Then decide that it needs to be sped up in a way that cannot
be done via compiling, and thus rewrite critical parts in C.
> There is already some code to handle
> polynomials and Groebner bases; not sure what you have in mind so I
> don't know if what you want is already present. There isn't anything to
> handle elliptic or other algebraic curves.
If there is a package that exists now in some other system that you wish to
mix with Maxima, one possibility is to choose just one implementation of
Maxima, (not GCL) and write the interface.
If your choice is to rewrite something, I suggest you do so in Lisp.
You might learn to like it!
>
> Working on fixing bugs is a good start. Also maybe you can be more
> specific about the algebraic stuff you want to work on.
>
> best,
>
> Robert Dodier
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima