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