What is a computer algebra system?
A computer algebra system, of which Yacas is one, is a program that
can manipulate mathematical expressions, potentially reducing the
time it takes to do a cumbersome but trivial calculation. It does
this symbolically, so a CAS can return a mathematical expression as
a resulting answer.
Status
The language is very much
in a finished state. Any code written for it should be usable in future
versions. Also, the language should prove very easy to learn.
Yacas is
written in very clean c++ code, and is very portable . It can compile
stand-alone, and is easily embeddable. Yacas contains a native arbitrary
precision arithmetic module, but can also be used with GMP.
Things implemented
include: arbitrary precision, rational numeric, vector, complex, and matrix
computations (including inverses and determinants and solving matrix equations),
derivatives, solving, Taylor series, numerical solving (Newtons method),
and a lot more non-mathematical algorithms. The language natively supports
variables and user-defined functions. There is basic support for univariate
polynomials, integrating functions and tensor calculations.
Backups are put on the net on a regular basis. The very latest
versions can be found here. They are generally
stable versions.
The to do list can be found here.
Your feedback
is much appreciated.
Mailing
list
There is
a main mailing list
for yacas at yahoogroups.com. This is a relatively low-bandwidth mailing
list.
A developer list
is also available. This is where discussions take place relating to
possible improvements for Yacas.
Other freely
available math packages
This is a short
list of links to other related math packages I could find on the net for
which source code is also available. If you know of any other software please
let me know.
Ginac
|
Ginac is a c++ library for doing computer algebra.
It allows symbolic manipulation from within a c++ program. It is currently
in active development, and looks very promising.
GiNaC is an iterated and recursive acronym for GiNaC is Not a
CAS, where CAS stands for Computer Algebra System. It is designed
to allow the creation of integrated systems that embed symbolic
manipulations together with more established areas of computer science
(like computation- intense numeric applications, graphical interfaces,
etc.) under one roof. It is distributed under the terms and conditions
of the GNU general public license (GPL).
|
HartMath
|
HartMath is a computer algebra system written in
Java. All math functionality is written in Java itself. HartMath has
roughly the same functionality as Yacas.
HartMath is an experimental computer algebra system written in
Java 1.1.
Some of the main implemented features are
Big rational number arithmetic, symbolic differentiation, linear
algebra functions, 2D plot functions, numeric computations, pattern
matching transformation rules, functional programming, pure functions,
runs on EPOC32 (i.e. Psion 5mx with Java virtual machine, ...)
|
Jacal
|
JACAL is an interactive symbolic mathematics program.
JACAL can manipulate and simplify equations, scalars, vectors, and
matrices of single and multiple valued algebraic expressions containing
numbers, variables, radicals, and algebraic differential, and holonomic
functions.
It is written in Scheme, and has the GPL license.
|
Maxima
|
Maxima is a Macsyma (early computer algebra system)
clone, fully GPL'led. It can be found in the GNU repositories, and
is written in Common Lisp. Maxima is being maintained by Bill Schelter.
|
MockMMA
|
MockMMA is a Mathematica-style parser and pattern
matcher, written in Lisp, with some additional mathematical functionality.
The link mentioned here directs you to Richard Fateman's page, which
should contain a link to MockMMA.
|
Information
Credits
- This
project was started by Ayal Pinkus.
- John
Lapeyre made some modifications to the make file, and improved some
math code.
- Juan
Pablo reported many bugs, made many suggestions for improvements, and
supplied improved code (yacas scripts and makefile code).
- Doreen
Pinkus designed this home page.
- Igor
Khavkine added 'Diverge' and 'Curl', and implemented threading for the
derivative operator (the gradient). Fixed GMP code.
- Win32
port thanks to James Gilbertson. Also improved error reporting. Added
initial version of Karatsuba multiplication, and added some matrix functions
to the math library.
- Daniel
Richard G. added autoconf/automake scripts, made Sun/Sgi compilation
possible, created a rpm spec file, many many many changes to clean up
the source distribution.
- Ladislav
Zejda supplied patches to make Yacas work on Dec Alpha's.
- Fred
Bacon fixed some compiler errors on the newer gcc compiles. Reported
some important bugs.
- Schneelocke
reported an important bug in numeric calculations.
- Serge
Winitzki added factorials over rationals, TeXForm, did a major overhaul
of the introduction manual, and initiated numerous
improvements and test code for Yacas, and implemented yacas_client.
- Jay Belanger
reported some bugs, and improved some of the GnuPlot code. He also wrote
the yacas.el file, which allows you to run yacas from within emacs.
His most recent version can be found here
- Gopal Narayanan
maintains the Debian package for Yacas.
- Vladimir Livshits
set up the initial sourceforge CVS repository, and updated the Windows version
source code. He also greatly improved the logic theorem prover code.
- Eugenia Loli
Helped build the BeOS version of Yacas. It can be found
here
- John Fremlin
Added some code for fast calculation of roots of a cubic polynomial.
- Mark Arrasmith
Helped greatly in setting up the fltk-based graphicaluser interface,
and fixed some bugs relating to limits regarding infinity.
- Robert V Schipper
Ironed out a few bugs in Yacas.
- Gopal Narayanan
Debian package maintainer. Made a man page for Yacas.
- Christian Obrecht
Made a much better Limit, and made Yacas behave better at infinity.
- Jitse Niesen
Reported some bugs, helped improve various parts of Yacas, and
greatly improved the manual for Yacas.
- Pablo Di Napoli
Fixed the configure script so Yacas compiles under cygwin.
written by Ayal Pinkus, ©
1999
|