/*
* REVISION HISTORY
*
* Author:
* Kenneth S. Kundert
* University of California at Berkeley
* College of Engineering
* Department of Electrical Engineering and Computer Science
*
* Advising professor:
* Alberto Sangiovanni-Vincentelli
*
*
* Sparse is available for a $150.00 charge. The package includes the
* source code on tape, the user's guide and a paper that discusses techniques
* for solving sparse systems of equations [1]. To obtain a copy of Sparse,
* send a check or money order payable to the Regents of the University of
* California to:
*
* EECS Industrial Liaison Program
* Cindy Manly
* University of California
* Berkeley, CA 94720
*
* Please allow four weeks for delivery.
*
* The University often does not have the resources to consult with
* users on how to use or modify these programs. We would, however, like
* to be notified of any problems or errors in the material provided and
* appreciate copies on tape of any troublesome matrices. If the program
* is enhanced or converted to run on other systems, we would like to receive
* copies of the modified program so that it can be made available to the
* public.
*
* References
* [1] Kenneth S. Kundert. Sparse matrix techniques. In "Circuit Analysis,
* Simulation and Design," vol. 3, pt. 1, Albert E. Ruehli (editor).
* North-Holland, 1986.
*/
/*
* Copyright information.
*
* Copyright (c) 1985,86,87,88
* by Kenneth S. Kundert and the University of California.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and supporting
* documentation and that the authors and the University of California
* are properly credited. The authors and the University of California
* make no representations as to the suitability of this software for
* any purpose. It is provided `as is', without express or implied warranty.
*/
/*
* >>> Current revision information:
* $Author: kundert $
* $Date: 85/12/10 21:03:02 $
* $Revision: 2.2 $
*/
/*
* >>> History:
* Revision 1.1 January 1985
* Initial release.
*
* Revision 1.1a 20 March 1985
* Modified DecomposeMatrix() and OrderAndDecomposeMatrix() so that
* the parameters Growth, PseudoCondition and LargestElement may be
* given as NULL.
*
* Revision 1.1b 28 March 1985
* Corrected a bug that caused OrderAndDecomposeMatrix() to reorder
* the matrix every time it was called. Also made many of the global
* variables defined in MtrxDecom.c static.
*
* Revision 1.2 October 1985
* This new version of Sparse is meant to make it more compatible
* with interactive circuit simulators. In it the TRANSLATE
* option was added, along with the ability to access the matrix
* with AddElementToMatrix() and AddAdmittanceToMatrix() after it
* has been reordered. Also added were the DeleteRowAndColFromMatrix(),
* CleanMatrix(), GetMatrixSize(), SetMatrixReal() and SetMatrixComplex()
* routines.
*
* Revision 1.2a April 1986
* Fixed a bug that caused the matrix frame to get freed twice and one
* in the test program that caused sparse to crash when a complex matrix
* with no source vector was attempted.
*
* Revision 1.2b July 1986
* Modified the test routine so that it allocates vectors from the heap
* rather than the stack.
*
* Revision 1.2c February 1987
* Fixed off-by-one error in PreorderForModifiedNodal().
*
* Revision 1.2d
* Modified the pivot selection algorithm so that singletons also meet
* numerical threshold criterion. Deleted some global variables. Modified
* test program to add command line options among other things. Made
* thresholds sticky, so that once a valid threshold has been specified
* for a particular matrix, it becomes the new default.
*
* Revision 1.3a July 1988
* Made numerous changes. Highlights are:
* Routine names shortened and made unique to 8 characters.
* Unordering factorization is faster.
* Added self initialization feature.
* Sparse now aborts on errors that should not occur.
* Cleaned up test program.
* Separated growth and pseudocondition calculations from factorization.
* Added LINPACK condition number estimator.
* Rewrote spMNA_Preorder, algorithm extended to fix inadequacies.
* Eliminated all global variables.
* Added DIAGONAL_PIVOTING option (only diagonal pivoting before).
*/