text_deriv v. 1.0
-----------------

This package is designed to do simple symbolic derivatives.  At the
heart of the library is a routine (take_deriv) which takes an expression
and a variable (both passed as strings) and returns either another
string (which should be the derivative of the expression passed in) or
NULL in which case there is a syntax error in the original expression.

Layered on top of this routine is a hook into TCL which allows you to
make use of this subroutine directly from TCL.  Something like:

% set f a*b*c+a*b
a*b*c+a*b
% deriv $f b
a*c+a

Note : You don't need to use TCL to actually use the library.

I have to admit that this is pretty much a simple hack I put together.
I've tried to clean it up before releasing it but it probably still
has some rough edges.  In any event, this is my first project using
TCL and it was really a learning experience but I hope people find
this at least a little useful.

This stuff is written in ANSI C and also makes use of flex and bison.
I have tested it on a Sun4 running gcc.  It shouldn't be too bad
porting to other machines but I haven't actually tried it.

The flex part is probably the worst hack of all of this.  Rather than
read from a file, my driver reads from a string.  The way I actually
did this is probably subject to some bugs.  Also, I reset the lexical
driver after every string (in a way that really hammers on flex I
suspect) and I have noticed it does tend to get confused on occasion
and report syntax errors for expressions that don't have syntax errors
in them.

I'm actually using this for something so I would appreciate bug reports
and enhancements so send them if you have any.  Of course, I can't make
any promises about supporting anything.


INSTALLATION:

Just set TCL_INC and TCL_LIB in src/Makefile.  If you don't have TCL
but want to use the library anyway, I think you could get by with
removing tcl.c from the SRCS definition


Michael Tiller
University of Illinois (Urbana-Champaign)

email: tiller@solace.me.uiuc.edu
