                       Mathomatic Symbolic Math Library
                       --------------------------------

This directory contains the API (Application Programming Interface) and test
program for the Mathomatic symbolic math library, which can be used to link
your C and C++ programs with the Mathomatic symbolic math engine.  This
simple API provides for passing C text strings containing equations and
commands to the Mathomatic engine.  If successful, a text string containing
the resulting equation is returned, otherwise an error message is returned.

This symbolic math library is at least able to be run anywhere the main
Mathomatic application can be run, and does not require an operating system
beyond the ability to allocate memory with malloc().  The symbolic math
library is not re-entrant, meaning it cannot successfully be called until the
last call to it completes.  This is due to the fact that most data storage
areas in it are global and static.

Compile and link "*.c" and "../*.c" with "-DLIBRARY" on the C compiler
command line, to compile Mathomatic in library mode, and to create the test
application which uses this API.  This is automatically done by
"../makefile.lib".  To compile the library and test program, go to the
Mathomatic build directory ("cd ..") and type:

	make clean
	make -f makefile.lib

This will create the API test executable named "mathomatic" and the static
library "libmathomatic.a".  The library code is included in the executable
because the library is static.  To run the test executable, type
"./mathomatic".  To do a system install of the library and C header file
"mathomatic.h", type:

	sudo make -f makefile.lib install

Be sure to "make clean" again, before using a different makefile.  See the
file "lib.c" for the simple API, and "test.c" for a simple example of how to
use it.  Just include the file "mathomatic.h" and call the functions in
"lib.c" to use this library.  Link your program with "libmathomatic.a" by
using "-lmathomatic -lm" at the end of the ld linker command line.

The following commands are omitted in the library: calculate, edit, pause,
quit, and tally.

Recently, the "nintegrate" and "integrate definite" commands are allowed; the
bounds of integration are specified in the two equation spaces following the
current equation.  cur_equation+1 is the lower bound, and cur_equation+2 is
the upper bound.  Of course, the integrate and nintegrate commands operate on
the current equation, specified by the global "cur_equation" variable (origin
0).  The equation number displayed is always origin 1, making it 1 greater
than "cur_equation", so keep that in mind.

Many bugs and inconsistencies in the symbolic math library have recently been
fixed, and it is best to always use a recent version of Mathomatic, when used
as a library.  The most recent version can always be found on the Mathomatic
website http://mathomatic.org
