You can find MMA at ftp://carnet.hr:/pub/misc/math/mma15c09.tgz WHAT IS MMA? ======================================================================== MMA are the underpinnings of a common-lisp implementation of a small and efficient algebra system. The intention is to be as fast as possible without making major concessions to usefulness. Absolute brevity in code is not a goal, nor is complete perspicuity, if it is inconsistent with efficiency. As far as efficiency goes, it is expected that for similar problems, the code would be faster than Macsyma's rational function package, Reduce, or Maple, and generally much faster than Mathematica and much^2 faster than Macsyma's general representation. It is our intention that no one would have any reasonable hope of making a package that was much faster, at least while coding in Lisp, and that there would be no need to look inside the package for most users. It is also our hope that even by going to C or assembly language, not much of a speedup could be expected. Of course eliminating some features (e.g., going to fixed precision rather than arbitrary precision integers), can result in savings. How general a set of features do we need? For example, I consider multi-variate polynomial arithmetic essential, as well as arbitrary precision integer coefficients. By contrast, computation in non-commutative variables is not supported. Although only a simple polynomial GCD is used, more elaborate and faster versions have been written (not debugged). Try the commands D[Log[x],x], Int[Log[x],x], Simp[(a+b)^2+1], RatExpand[(a+b)^2], sin[I], 4atan[1], IS MMA READY FOR FREE LISPS? ===================================================================== ******************** * * * Hello Math fans! * * * ******************** Prof Richard J. Fateman made a great Mathematica(tm)-like program in lisp. Now it is small and has only basic functions, it certainly needs to grow... But that's probably a beginning of a long mathfree story. MMA has implemented just a small portion of the functions that real Mathematica(TM) offers. There are 4 different views of MMA: 1. What works on free lisps --------------------------- (Mathematica(TM) script parser and nice formatted output, polynomial handling, basic database for integration and differentation; basic pattern matching, arithmetic simplification, other odds and ends.) 2. What works for Allegro lisp (Not free) and needs porting to free lisps ------------------------------------------------------------------------- (hashing table for the algebra for more efficent common subexpression sharing.) 3. What requires small effort to be done ---------------------------------------- (adding new command-style functions, extending integration/derivation database written in lisp) 4. What requires greater effort to be done ------------------------------------------ (Implementation of Mathematica(TM) control structure semantics evaluator should be programmed to understand it; Some advanced details in the pattern matcher.) Up to now, MMA works on following LISPs: ======================================================================= 1. Allegro LISP (MMA's was first written using this) 2. KCL (AKCL) (ported a few years ago to KCL, recently adapted for new AKCL) 3. LUCID (I haven't tried) 4. CLISP (recently done) ======================================================================= _______________________ COMMENTS ON SPEED ________________________ Now, the situation looks like this: Let's try to put WRI down from the 1st place by beating it with the freely redistributable LISPs!! Machine: 486dx2-50 with few wait states, 8M RAM 256K cache. Test sample: Timing[RatExpand[(x+y+z)^15];done] 1. Mathematica 2.0 (DOS) for 386/387 0.6 seconds 2. CLISP compiled (Linux) 1.12 seconds 3. AKCL compiled (Linux) 1.55 seconds 4. CLISP interpreted (Linux) 13.8 seconds 5. AKCL interpreted (Linux) 66.7 seconds Allegro LISP (not free) already beats Mathematica(TM) on the same machine. This is probably because of more optimized compiling and an efficient representation of integers, but perhaps the use of unique-consing by hash-table storage of parts of the data also contributes to speed. Our free domain LISPs can be faster than that if we port the hashing algorithm or (more likely) produce more optimized code that could run the code 2x faster :>. "Native lisp" of MMA is Allegro CL, and for it a highly optimized hcons1.lisp is written. For others (and CLISP) we use hconsalt.lisp which is common-lisp compatible but much slower. If there is some CLISP/KCL expert, it would be good that he/she :) writes a CLISP version of hcons1.lisp. ______________________________ * * * ________________________________ There is some more documentation at peoplesparc.berkeley.edu, on polynomial arithmetic and display at .../pub/papers/[lai.tex, tak.tex] Send your patches, bug reports, new whole routines, documentation or whatever about MMA to me. If, after studying the code for a while (there are many comments in it), you have specific questions about the MMA insides you can contact Professor Richard J. Fateman, . Have a nice math meditation. Davor. -- Davor , Dept of FEP, IRB | Physics, Energetics, Application Jadrijevic POB 1016 | Institute "Rudjer Boskovic" Bijenicka 54a | Tel: +385 41 461079 => HR-41001 Zagreb | Croatia | --------------------------------------------------------------------------