Log of Changes to MATH77/mathc90 Since Release 6.0

For questions send mail to: fkrogh@mathalacarte.com

In reverse order

6.25 2009-11-05 -- FTK
Van Snyder of JPL, has run checks with the NAG, Intel, and Lahey compilers on a Linux system.   (Our usual checks are with gfortran on Linux.) In the process it has been discovered that a number of variables were not getting explicitly initialized prior to being referenced. As far as we know none of the cases led to bugs, but in the interest of having the libraries compilable and working with a full degree of checking turned on, changes have been made to the following routines: DMESS/SMESS, MESS, DBESYN/SBESYN, DBLSE/SBLSE, DDAS1/SDAS1, DDASLS/SDASLS, DDASLX/SDASLX, DPLOT/SPLOT, DIVA/SIVA, DIVADB/SIVADB, DINTA/SINTA, DINTM/SINTM and DINTMA/SINTMA.

A new option has been added to DIVA/SIVA to allow the user to indicate that DIVADB/SIVADB is being called, so that variables that might be printed prior to being initialized will get initialized in this case.

DRSPOLZ has been changed to use a complex type for the roots, and new capability has been added to M77CON to simplify doing this with our conversion tools.

XERBLA now prints the value of INFO.


6.24 2009-10-22 -- FTK
Lots of time has passed since the previous release, but maintenance had been ongoing.   Here is a list of changes since the last release. The dates in parentheses are the dates the last change was made.

Changes in library codes

DIVA/SIVA (2009-10-19) A few changes on how the stepsize is controlled when noise appears to be limiting the precision.   Got rid of NaN in diagnostic print when LSC is 3.

DINTA/SINTA (2009-10-17) Set AACUM to ACUM when nodes are coalescing and a few other changes.

DPLOT/SPLOT (2009-10-18) Added "save ADJIN" in dplota.   Added a facility to read sets of points from a file.

DXRK8/SXRK8 (2009-15-09) Changed starting stepsize, many changes in the way the stepsize is selected, and a new method of checking for stiffness.   There have also been some changes in usage and some bug fixes.   Also some fixes in DXRK8G/SXRK8G.

DINTO/SINTO (2009-07-15) Fixes in some of the messages output.

DMESS/SMESS (2009-07-23) Many many minor fixes in outputs.

MESS (2009-02-28) Fixes for NAG compiler and fixed "f" format for C code, definitions.

DPRTSV/SPRTSV (2008-11-26) Fixed format to be Fortran standard.

DDASLX/SDASLX (2008-11-13) Fixed comments on starting, corrected leading dimension for banded problem, allowed INFO(11) = 0, 1, 2 for new startup, and added argument of leading dimension to ddasf/sdasf.

CSORTP (2008-10-29) Moved the string.h line for the C code up.

XERBLA (2008-10-27) Changed to use the MATH77/mathc90 error processor.

DDASLS/SDASLS (2008-10-26) Big changes in how we get starting values in solving differential algebraic equations.   (The earlier code has some serious problems.)

DDASTP/SDASTP (2008-10-24) Declared dnrm2, added argument of leading dimension to ddasf/sdasf.

DDASF/SDASF (2008-10-24) Added row dimension argument, shortened the first line to 72 characters.

DDAS1/SDAS1, DDASJ/SDASJ, DDASLV/SDASLV (2008-08-26) Added argument for leading dimension to ddasf/sdasf.

DZERO/SZERO (2008-03-01) Minor changes in diagnostic print.

DINTMA/SINTMA (2008-01-11) Added a new error message.

DINTDU/SINTDU (2007-03-28) Bug fixed.

DTGPD/STGPD (2007-02-28) Big changes to eliminate assigned go to's.

DRPRL3/SRPRL3 (2007-02-28) Fixed a rounding problem in the labels.


Changes in demonstration drivers

DRDDASL6/DRSDASL6 (2009-10-21) Fixed out of range reference by replacing km upper limit on "do 120 ..." with km=1.   New code for initial y' values, minor changes for conversion to C.

DRDDASL2/DRSDASL2 (2009-10-19) Fixed so 0 value of d(4,4) does not lead to divide by 0.   Code changed to use new starting procedure for y', row dimension added to evaluators, minor changes for C conversion.

DRDJACG2/DRSJACG2 (2008-11-01) Added total energy constraint to the third example, and added row dimension parameter to evaluators.

DRDDASL4/DRSDASL4 (2008-10-29) New starting computation for y', added row dimension to evaluator call, multiple changes for C conversion.

DRDDASL7/DRSDASL7 (2008-10-26) New starting computation for y', changes for conversion to C.

DRDDASL5/DRSDASL5 (2008-10-26) Added total energy as a constraint, new code for getting initial y', a few changes for conversion to C.

DRDDASL3/DRSDASL3, DRDDASL1/DRSDASL1 (2008-10-26) Added row dimension for evaluators, new starting computation of y', minor changes for conversion to C.

DRDXRK8/DRSXRK8 (2008-02-24) Changed dimensions for new usage.

DRDCKDER/DRSCKDER (2007-01-02) Put commas around ':' in formats.

6.23 2006-05-26 -- FTK
There has been major work on the entire library getting rid of code that does not strictly satisfy the standards, cleaning up comments, correcting some problems in the conversion to C, and fixing cases of uninitialized variables and subscripts which could get out of range..

Bugs in the interpolation codes (D/S)ILUP have been corrected.   They were flagging extrapolation in the case when interpolation was being done at the end point of a table when using indexed look ups.   This led to getting incorrect results in the multi-dimensional codes (D/S)ILUPM when using indexed look ups.   Also the multi-dimensional codes were getting slightly better accuracy when error estimates were requested.   They have been changed so that results don't depend on whether error estimates are requested.

Significant changes to the DAE solvers, (D/S)DASLX, have been made, especially in the code for projecting on to constraints.

Code has been added, (D/S)ILUPMD, to print out the structure of tables used in multi-dimensional interpolation.

A sparse matrix solver using Gaussian Elimination, (D/S)SPGE, has been added.   In connection with this the message routines (MESS,(D?S)MESS) have had code added to support the output of sparse vectors and indirectly the output of sparse matrices.

6.22 2005-12-10 -- FTK
Minor edits and fixes in (D/S)FMIN, MESS, (D/S)MESS, (D/S)PLOT, (D/S)PRPL3, CSORTP, (D/S)TGPD, RANPK2.   Many of these changes only affect the C versions of these codes.   The only changes which may effect results were in MESS, (D/S)MESS where some floating point numbers printed as "*****" in boundary cases, and in (D/S)PLOT.   There have also been a number of changes in various demonstration drivers to improve the translation to C.

There has also been a change to M77CON to make it more portable and to handle the type conversions for code that is in the comments for the conversion to C. And some bugs in GLOCH1 (used mainly for the conversion to C) were corrected.

6.21 2003-07-24 -- FTK
The main addition here is djacg (and sjacg) for doing numerical differentiation.   Documentation is provided in ch08.4.

Another major change has been in the ddasslx/sddaslx codes for differential algebraic systems.   A new method of stepsize selection due to Gustaf Söderlind has been incorporated into the code.   The code does a much better job of getting accuracy that is smoothly dependent on the error tolerance and is slightly more efficient when getting a given accuracy.   These changes required some changes in the logic for checking convergence of the iterations for solving the corrector equation.   An option of getting numerical derivatives has also been added.

Other miscellaneous changes include,
6.20 2002-01-30 -- FTK
The main change here is the additions of ddaslx (and sdaslx) for the solution of differential algebraic equations.   This software is also useful for solving stiff ordinary differential equations.   Documentation is provided in ch14.3.

Other miscellaneous changes include,

6.19 2001-09-14 -- FTK
Added feature to Adams codes to allow the tolerance to be specified for G-Stops. This resulted in changes to diva, divag, divadb, siva, sivag, and sivadb. Changed quadrature codes dinta and sinta to avoid a problem that arose with them subdividing an interval into one piece that was ridiculously small. Neither change affects current usage. The change in the quadrature codes may change results from the previous version, the change to the Adams codes should have no effect if the new feature is not used. Also some updates to the documentation for Chapter 14.1 and 14.2.

6.18 2001-07-16 -- FTK
A bunch of minor changes to get rid of diagnostics in code converted to f95. The only ones changing results were in a few demos where constants without exponents were given exponents of 0, thus changing some double precision results. Routines changed are: divset, sivset, dmlc, smlc, ducomp, sucomp, dwcomp, swcomp, zpolz, dcpltk, drcomp, srcomp, diva, siva, cwofz, dcspxx, scspxx, drcval, srcval, drdval, srdval, drexp, srexp, drjval, srjval, dsnpxx, ssnpxx, and scpltk.   And for demos: drcgefsc, drdcpltk, drscpltk, drdivdb, drsivdb, drdivx, drsivx, drdran, drsran, drdsfitc, drssfitc, drdtgfi, drstgfi, drdtgfi1, drstgfi1, drdtgfi2, drstgfi2, drdtgrec, and drstgrec.

6.17 2001-06-17 -- FTK
Minor changes to drdcpltk and drscpltk so as to get consistent results in Fortran 77, C, and Fortran 95. All docs, except for three appendices and the index have had a copyright added. The documentation for diva/siva has been changed to note that when no error control is requested for a group of equations, two locations in the F array are used for the error control. Finally the Fortran 95 codes no longer use amach (it was a slip that they missed passing though the filter removing amach in the last go around).

6.16 2001-06-14 -- FTK
In the process of setting up codes for automated conversion to Fortran 95 the following codes were changed: cged, cpolz, dasinh, dbespq, dblse, dchol, devbh, dgamma, dged, diva, dmatp, dnqsol, dplot, dpolz, dsvdrs, dvecp. All the codes with names starting with 'd' had the same names with the d replaced by 's' updated also. In addition (changes which may be necessary on some systems) dmess/smess had Hollerith formats removed and in dprtsv/sprtsv the length of a couple of character parameters were increased.

Similarly for the drivers, the following codes were changed (with a "drs" file for every "drd" file listed): drcgam, drcgefsc, drdasinh, drdblas3, drdcdchi, drdcdnml, drdcdpoi, drdcon, drdcpval, drdfrenl, drdgami, drdge2, drdgefsc, drdhfti, drdilup, drdilupm, drdintmf, drdintmr, drdiva, drdivdb, drdivx, drdmlc01, drdnlafb, drdnlagb, drdnlsfb, drdnlsfu, drdnlsgb, drdnlsgu, drdpoi, drdrane, drdrang, drdrangv, drdranr, drdtgfi, drdtgfi1, drdtgfi2, drdtgrec, drdxrk8, drmatp, drmatpr, drvecp, drvecpr, drzgam. All such changes were minor.

6.15 2001-04-25 -- FTK
Small change to cdemo to allow integers followed by a comma to be matched with a floating point number.

6.14 2001-01-29 -- FTK
Changes to accommodate a C compiler that wanted to reserve the name csqrt: Changed zsqrt to zsqrtx and (in C only) csqrt to csqrtx. This required changes in dcomqr.f, scomqr.f, and drzcomp.f. In the process of doing this it was discovered that the files derrp1.f, serrp1.f, derrp2.f, and serrp2.f were in the library when they should have been removed awaiting fixes in the function testing software which is not currently in the library. They are now removed. As a result of the name change, the following documentation files have been changed: app_a.tex, app_b.tex, app_c.tex, app_d.tex, ch09-03.tex, ch17-03.tex, and index.tex.
6.13 2001-01-22 -- FTK
More changes to remove some diagnostics in the C codes and to clean up the print statements to look a little more like they would have been written, if written initially in C.   Code has been added to the filter post-processing the C code to make the following changes in print statements: (1) character literals are now put into the format part, (2) an argument corresponding to a `*' in a format is always cast to (int), (3) an 'l' in a format is removed if the corresponding argument is a number or the result of a "#define".   Also in the drivers argv and argc have been removed, and main is always declared to be of type int. A few minor changes were made in mess.f, dprtsv.f, sprtsv.f, dblse.f, and sblse.f to correct problems with the conversion to C.   In the drivers, minor changes were made to drdbinom.f, drsbinom.f, drdmpval.f, and drsmpval.f for the same reasons.

6.12 2001-01-03 -- FTK
A bunch of minor changes to remove some diagnostics in the C codes.   Files changed include:   dplot.f, splot.f, mess.f, dmess.f, smess.f, dxrk8.f, and sxrk8.f.   Also the generation of the C codes now contains a step to remove variables introduced by the converter.   This step has resulted in 746 unused variables being removed from the C codes and 379 unused variables being removed from the C demos.

6.11 2000-12-08 -- FTK
A lot of codes changed here.   The most important change was to dilup and silup.   It was possible for these codes to reference and compute with variables which were not set when they were called from dilupm and silupm.   These computations did not affect final results.
In the following routines some unused parameters were removed: cgesld, cgeslt, dblse, sblse, dfmin, sfmin, dfrenl, sftenl, dilup, silup, dinto, sinto, dintop, sintop, diva, siva, divadb, sivadb, dmatpr, smatpr, dnlafb, snlafb, dnqsol, snqsol, dtgext, stgext, dvecpr, svecpr, dzero, szero, idranp, isranp, idsta1, issta1, and imatpr.
In dc2fit, sc2fit, dsfit, and ssfit changed dimension of SDI from NXY to * to avoid diagnostic when the actual argument has dimension 1.
In drnsgb and srnsgb removed references to IV(RESTOR) which is not initialized.

6.10 2000-11-15 -- FTK
Fixed dchol and schol so that S in not stored to if S .le. 0.

6.09 2000-09-07 -- FTK
Fixed bug in sfrenl and dfrenl where x was used instead of ax (= |x|) in a test for deciding on which branch of the code to use.

6.08 2000-01-05 -- FTK
The f90 compiler on the Cray found a few routines with variables which have been referenced without being initialized.   I don't think any of these cases resulted in bad results.   changes were made to: dbesyn, sbesyn, dplot, splot, drn2g, and srn2g.   In addition the file fcrt.h has had a "*/" added at the end of a comment line, even though it should not be needed.   Cray is evidently fussy here.

6.07 1999-11-23 -- FTK
Changes to splot and dplot to avoid output of empty mfpic section.

6.06 1999-08-19 -- FTK
Commented out a test in diva/siva which could never be satisfied.

6.05 1999-08-12 -- FTK
A short loop in dsvdrs and ssvdrs has been broken up in to two two line loops as the former caused the Sun Ultra Sparc 10 optimizer to generate incorrect code at the highest level of optimization.

6.04 1999-07-17 -- FTK
Changed dilupm and silupm so allow interpolation in up to 10 dimensions.

6.03 1998-10-01 -- FTK
These libraries are no longer supported at JPL.  Fred Krogh is planning to support them as a private business.

6.02 1998-07-01 -- FTK
Code for optchk (used by diva/siva and dilupm/silupm) has been rewritten to handle a case when diva claimed it could not find space for an option when in fact space could be found.     If you are not getting a fatal error when running these codes this change should not effect the results you get (except output from optchk has a slightly different format).
Changed comments in dprtsv/sprtsv to eliminate complaints when generating C code from the Fortran code.     Should not affect results.
Fixed dplot/splot so logarithms are not computed on physical coordinates.

6.01 1998-06-03 -- FTK
Removed an unused parameter from diva and siva, and from dzero and szero.     Affects both the Fortran and C versions.     This change is probably not worth downloading the new code; it should not affect results.

6.00 1998-05-20
Initial distribution of MATH77/mathc90 Release 6.0.   This release involves changes to 289 of the 506 Fortran files, and all of the C file have been regenerated.
Last modified: Thu Nov 5 07:27:48 PST 2009