Use and copying of this software and preparation of derivative works
based upon this software are permitted.  However, any distribution of
this software or derivative works must include the above copyright
notice.

This software is made available AS IS, and neither the Electronics
Research Laboratory or the University of California make any
warranty about the software, its performance or its conformity to
any specification.


Animation and differentiation routines were added by Paul Walker,
NCSA and UIUC Dept of Physics.  The following copyright and disclaimer
applies to these parts of the code only.

UNIVERSITY OF ILLINOIS (UI), NATIONAL CENTER FOR SUPERCOMPUTING
APPLICATIONS (NCSA), Software Distribution Policy for Copyrighted
Software

The above mentioned modifications to XGraph made with the authors
consent are copyrighted, but available without fee for education,
academic research and non-commercial purposes.  The modifications are
copyrighted in the name of the UI, and ownership of the modifications
remains with the UI.  Users may distribute the binary and source code
to third parties provided that the copyright notice and this statement
appears on all copies and that no charge is made for such copies.
Any entity wishing to integrate all or part of the source code into a
product for commercial use or resale, should contact the University of
Illinois, c/o NCSA, to negotiate an appropriate license for such
commercial use.

UI MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR
ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
WARRANTY.  THE UI SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY THE
USER OF THIS SOFTWARE.  The software may have been developed under
agreements between the UI and the Federal Government which entitle the
Government to certain rights.

By copying this program, you, the user, agree to abide by the
copyright conditions and understandings with respect to any software
which is marked with a copyright notice.
