20130418


20121218

Documentation corrections to DDEABM.

20121110


20121004

Changed the way .zip and .tar.gz files were created, so they
are not recreated if unrelated input files are changed. This should
reduce the number of frequent changes to the archive files of smaller
libraries.

20121002

 New function QTNORMALIZE to normalize a quaternion
(Mathematics)
 New functions UNITIZE, UNITVECANG, and ANGUNITVEC to manipulate
unit vectors and spherical polar angles.
(Mathematics)
 Change CMREPLICATE to use [] array notation.
(Array / Set Operations).
 Documentation corrections for QTEULER, JPLEPHINTERP, TZOFFSET, MPFIT, MPFITFUN, MPCURVEFIT.
 Minor bug fixes for PXPERFECT, TAI_UTC, that do not affect the performance of the routine.

20120524

 MPFIT: Fix bug in interaction of AUTODERIVATIVE=0 and .MPSIDE=3. Document FJAC_MASK. (Thanks Mats Löfdahl)
(Fitting)
 New function ACIRCCIRC: calculate the area of overlap between two circular regions.
(Mathematics)
 TAI_UTC: added 20120701 leap second.
(Ephemeris and Timing)
 TDB2TDT: TBASE can now be a vector. (Thanks Jason Eastman)
(Ephemeris and Timing)
 The FXGPKG package now handles files larger than 2 GB.
(Input/Output)
 PXPERFECT: use square bracket array notation.
(Graphics)
 CMSVLIB: handles strings >127 characters. (Thanks Ulrike Helter)
(Save Files)
 GAPNAN: bug fix when more than one input array is passed.
(Array / Set Operations).

2011 Dec 21

 New function FILE_COMPILE: compiles an arbitrary procedure or function
stored on disk.
(Introspection)
 New function FLORMAT: make more readable format strings with named variables.
(Input/Output)
 New function GAPNAN: inserts NANs in time series gaps to make plotting
gappy series more meaningful.
(Array / Set Operations).
 New function MPPROPERR: used to propagate parameter uncertainties
to estimate the uncertainty of the model function.
(Fitting)
 New function PXPERFECT: for "pixel perfect" Postscript output which
matches the onscreen version.
(Graphics)
 New function TZOFFSET: to compute the local time zone offset from
GMT/UTC for any requested date.
(Ephemeris and Timing)
 MPFIT version 1.79: computes best residuals, Jacobian matrix, and
index of free parameters upon request via the /CALC_FJAC keyword.
(Also applies to MPFITFUN.)
(Fitting)
 MPFITPEAK: Improve performance of analytic derivative computations
(thanks to Wayne Landsman). Allow the user to compute estimates only
and return immediately with MAXITER=0.
(Fitting)
 TRANSREAD: add the DELIM keyword (thanks to Chris Holmes).
(Input/Output)
 GEOGRAV: now allows MMAX=0 case.
(Ephemeris and Timing)
 GTI: small modifications to the GTI library.
(Array / Set Operations).
 Documentation corrections for JPLEPHREAD, MPFIT, XATT_EL, and the IDL SAVE
file format document.

2010 Nov 18

 A bug fix to CMREPLICATE to prevent a runtime crash.
(Array / Set Operations).
 A bug fix to MCHOLDC which can affect the correction term for the final diagonal element of the array being factored.
(Mathematics)
 Upgrades to version 1.6 of the CMSAVE library for reading and writing IDL Save files. This version can handle files larger than 4 gigabytes created by IDL 5.5 and later. Documentation of the IDL save file format has been updated as well.
(Save Files)
 LITMSOL2 is a new and enhanced version of the original lighttime solver, which allows
for more flexibility to compute the bodys' positions.
(Ephemeris and Timing)
 PLOTIMAGE has been updated to allow a reverse color scale, if RANGE is [high,low] instead of [low,high].
(Graphics)
 INPUTFORM has new keywords ZERO, ARRAY_NOTATION which can create empty arrays; and N_FLOAT which controls numerical precision. INPUTFORM now handles NaN and Infinity values properly.
(Introspection)
 TAI_UTC now has a better default location for the leap second table; and the new RELOAD_EVERY keyword offers control over how often the file is reloaded from disk.
(Ephemeris and Timing)
 QPINT1D now does more error checking when a user mathematical expression fails.
(Mathematics)
 Improved documentation for HASHTABLE
(Array / Set Ops),
DDEABM
(Mathematics),
HPRNUTANG
(Ephemeris and Timing),
HPRSTATN
(Ephemeris and Timing).

2010 Nov 13

Version 1.2 of the MPFIT C library is now available. The main changes
are improved compatibility with Microsoft and C++ compilers, and
improved documentation in the README.html file. The mathematical
logic of the library has not changed. (C Version of MPFIT)

2010 Jun 22

Significant bug fixes and enhancements to the MPFIT library of functions.
Please see the Fitting page for a full list
of downloads and instructions.
 MPFIT  Fix bug in behavior of MPMAXSTEP when some parameters are frozen (the parameters were becoming scrambled; thanks to Josh Destree for reporting this);
 MPFIT, MPREADME  REFERENCES section is now more complete;
 MPFIT  Add the VERSION and MIN_VERSION keywords to allow for version checking;
 MPFIT, MPFIT2DFUN  Document alternate method to compute correlation matrix;
 MPFIT  enforce TIED constraints when preparing to terminate the routine;
 MPFITFUN  document the NAN keyword behavior;
 MPFITPEAK  correct one case of old IDL 4 () array syntax (thanks to I. Urra);
 MPCHILIM, MPCHITEST, MPFTEST, MPNORMTEST  Small changes to USAGE messages;
 MPFITELLIPSE  document an example of how to plot a tilted ellipse;
 MPFITELLIPSE  check for fitting error conditions and return immediately;

2009 Jun 28

Add new routine FILE_COMPILE. (Miscellaneous)

2009 May 05

 MPFIT has significant changes: users can now specify which
parameters have explicit derivatives vs. numerical derivatives
on a parameterbyparameter basis using PARINFO; a bug fix for
when MAXITER=0 and the user expects the covariance matrix to be
computed; avoid numerical roundoff errors when computing the
LM parameter.
(Fitting)
 MPFITPEAK now accepts the NAN keyword.
(Fitting)
 MPFITFUN has some small fixes when number of parameters
is large or the input uncertainties are negative.
(Fitting)
 A new function LINFITEX, used for fitting a linear model
to data with errors in both X and Y.
(Fitting)
 Two new functions CUBETERP and QUINTERP, which smoothly
interpolate a tabulated function that has known derivatives each
point.
(Mathematics)
 CMREPLICATE has been updated to avoid calling EXECUTE().
(Array / Set Operations).
 The FXGPKG package now handles gzipped files on Windows, and sets
its default scratch directory more intelligently.
(Input/Output)
 Documentation updates: TDB2TDT, MPFITFUN

2009 Feb 17


2009 Jan 21

 PLOTIMAGE: allow XLOG and YLOG keywords; improved documentation.
(Graphics)
 JPLEPHINTERP: new keyword.
(Ephemeris and Timing)
 HELPFORM: new keyword RECURSIVE_STRUCT, which will print the contents of structures within structures.
(Introspection)

2009 Jan 02

 MPFITPEAK: Slightly better error checking.
(Fitting)
 MPFIT: Better documentation of how TIED interacts with LIMITS.
(Fitting)
 MPFIT2DPEAK: Better documentation of what happens when ESTIMATES is not set.
(Fitting)
 HASHTABLE class: add the POSITION keyword to the ::REMOVE method, allowing a specific item (or items) to be removed.
(Array / Set Ops)
 Some documentation improvements to the quaternion library functions.
(Mathematics)
 EOPDATA, HPRNUTANG, JPLEPHINTERP: allow TBASE keyword to be a vector.
(Ephemeris and Timing)
 HPRSTATN, HPRNUTANG: some modifications to conserve memory.
(Ephemeris and Timing)

2008 Nov 08

 MPFIT: fix bug when parameter gets hung up near a parameter limit set to zero; improvements to errorhandling. (Fitting)
 MPFITPEAK: remove some remaining IDL4 array syntax. (Fitting)
 MULTISORT: fix several bugs in handling of values in the range 1.0 to +1.0; improve efficiency. (Array / Set Ops)
 JPLEPHINTERP: perform more validity checking on inputs; more informative output messages; allow 'SSB' and 'EMB' as shortcuts for solar system barycenter and earthmoon barycenter. (Ephemeris and Timing).
 TNMIN: make error handling consistent with MPFIT, for example using ERROR_STATE. (Fitting)
 DDEABM: fix bug in handling of the INIT keyword; add the MAX_STEPSIZE keyword for more control over the integration step size; handle discontinuities properly when integrating in the negative direction; add new control interface to pass additional information to the user function.
(Mathematics)
 CMRESTORE: handle the case of CMRESTORE, FILENAME, X properly. (Save Files)
 GTIWHERE: handle case of empty input GTI and /INVERT. (Array / Set Ops)
 TAI_UTC: added 01 Jan 2009 leap second. (Ephemeris and Timing)
 TDB2TDT: fix bug which enforces NTERMS keyword behavior. (Ephemeris and Timing)
 LITMSOL: allow userspecified ephemeris interpolator.
(Ephemeris and Timing)
 Improved documentation: ARRINSERT, MPFIT, QTERP.

2008 Jun 03

This website has been restored after a period of neglect.
Hackers destroyed the original computer hosting my site in midMay
2008, and a backup was in place in the interim.
Other updates:
 MPFIT had a bug due to the Mar 29 change, which caused LIMITED and
LIMITS to fail. This bug has been fixed.(Fitting)
 GTI2MASK should now have better performance than previously.
(Array / Set Ops)

2008 Mar 29

 MPFIT now enforces that START_PARMS and PARINFO must be onedimensional
arrays. MPFITELLIPSE has some documentation clarifications. (Fitting)
 The GTISEG function keyword named MINGTI, now also affects the
results returned in the INDICES keyword.
(Array / Set Ops)
 The efficiency of the MULTISORT function has been slightly
improved, along with some more internal documentation. (Array / Set Ops)
 The path functions NORMPATH and RELPATH now both have usage
messages. NORMPATH also now normalizes "a//b" as "a/b".
(I/O)

2007 Dec 17

 The quaternion functions QTERP and QTMAT have been enhanced.
QTMAT now has an INVERT keyword. QTERP has been simplified
internally. (Mathematics)
 Documentation for MPFIT, MPFIT2DFUN, MPFITEXPR, MPFITFUN,
MPFITPEAK, and TNMIN have been enhanced. MPFITELLIPSE now reports the
TILT angle in the range 0 to !DPI; semimajor axis always appears
first, followed by semiminor axis (and the axes are always positive).
Warnings now appear in MPFITELLIPSE saying that it is not suitable for
all applications.(Fitting)
 The GTISEG function keyword named MINGTI has now been implemented.
It used to be nonfunctional. GTIWHERE now handles the case where
/INVERT and /INCLUDE are both specified, which changes the boundary
conditions slightly. (Array / Set Ops)

2007 Sep 06

 A bug in MPFITFUN was fixed, in the case where the user explicitly
computes derivatives. The old method did not weight the derivatives
appropriately (no weighting at all actually), which led to slow convergence. (Fitting)
 A bug in the documentation of MPFIT has been fixed. If the
user computes explicit derivatives, the sign of the derivative was
documented incorrectly. The residuals are defined as "RESID = (DATA 
MODEL) / ERROR", so one might expect the derivatives of the residuals
to be something like (dMODEL/dP) / ERROR. However, due to a quirk in
the MPFIT implementation, it expects (dMODEL/dP) / ERROR (which is the
opposite sign). With the wrong sign, the fit will never converge, so
in most cases users should have noticed this problem early and
corrected it. (Fitting)
 In MPFIT documentation, the phrase "Explicit Derivatives" is used now
instead of "Analytic Derivatives." (Fitting)
 As a convenience, the quaternion routine QTMULT now allows either
term in the multiplication to be inverted. (Mathematics)
 A new quaternion routine QTMULTN has been added that can multiply
a chain of up to eight quaternions (or their inverses). (Mathematics)
 The FXGPKG package now handles gzipped files natively without
spawning a new process. (Input/Output)

2007 Aug 29

 The HASHTABLE class has fixes for a memory leak introduced by the
new NULL keyword; and for cases where many entries with the same key
were inserted into a table.(Array / Set Ops)
 GTI2MASK has a bug fix in the case where no overlap is present.
(Array / Set Ops)

2007 Jul 13

 A new function, MULTISORT, which can sort on multiple keys
simultaneously. (Array / Set Ops)
 A new function, XATT_EL, which computes the Xray attenuation
coefficents of a material, based on standard NIST cross sections.
(Miscellaneous)
 The HASHTABLE class has been significantly updated. A bug was
fixed which caused the ::REMOVE method to fail in some cases, and the
::REMOVE operation has been made more efficient. A new userdefined
"NULL" value can be specified when the object is created (the
NULL_VALUE keyword) which can make errorchecking more convenient.
Finally, the source code has been updated to use the square bracket
array index notation. (Array / Set Ops)
 CMCONGRID has been fixed in the case where INTERP=0 (nearest
neighbor interp) and expanding the image (thanks to Larry Bradley).
(Miscellaneous)
 STATUSLINE now checks for more variations of the "xterm" terminal
type (any terminal type beginning with "xterm" is allowed).
(Miscellaneous)
 For MPFIT, MPFITFUN and MPFITEXPR, the documentation of the user
function, derivatives, and the PARINFO keyword parameter have been
updated and clarified. (Fitting)
 Small documentation changes to PLOTIMAGE.
(Graphics)
 LITMSOL has more internal documentation and some code cleanup.
(Ephemeris and Timing)

2007 Mar 22

 MPFIT did not behave properly when MPMAXSTEP or MPSIDE were
specified with fixed parameters. These have now been fixed. The CASH
keyword of MPFITFUN is now documented to be not tested. (Fitting)
 PLOTIMAGE now has the ORDER keyword, which behaves just like the
!ORDER keyword. When ORDER=0, the (0,0) pixel is at the lower left of
the display; when ORDER=1, the (0,0) pixel is at the upper left of the
display. (Graphics)
 The HASHTABLE class now properly decrements its count of entries
after elements are deleted. (Array / Set Ops)
 CMRESTORE no longer prints duplicate information messages in
verbose mode. (Save Files)
 GTI2MASK can now find partial overlaps instead of just computing
values on a grid (using the OVERLAP keyword); MASK2GTI now has a usage
message. (Array / Set Ops)
 INPUTFORM has been changed to square bracket array syntax.
(Introspection)
 GEOGRAV has more documentation.
(Ephemeris and Timing)
 TDB2TDT now has the NTERMS keyword, which governs how many series
terms are summed. (Ephemeris and Timing)
 LITMSOL has been extensively revised. The
SHAPIRO_{CALC,DELAY,DERIV} keyword parameters have been added, to
return the Shapiro delay and its derivative. The final position and
velocity can now be returned. (Ephemeris and
Timing)
 Add NO_POLAR_MOTION keyword to HPRSTATN. Small change to
HPRNUTANG. (Ephemeris and Timing)

2006 Nov 24

 In the switch to square brackets, the MPFIT* functions used a
compiletime option (STRICTARR) which affected the global behavior of IDL. This
has been fixed. One round parenthesis error in MPFIT has also been
fixed. Finally MPCHILIM, MPCHITEST, MPNORMLIM and MPNORMTEST now have
usage messages. (fitting)
 The HASHTABLE class should now really handle an empty input
string. (Array / Set Ops)
 TNMIN uses the parameter information field 'TNSIDE', not 'MPSIDE'.
This has been documented correctly now. (Fitting)
 GTITRIM and GTIMERGE now handle the case where an input value has
Infinity or NAN. (Array / Set Ops)
 EOPDATA now allows one to specify the FILENAME keyword without any
other parameters, without an error messge. (Ephemeris and Timing)
 FXGPKG package: FXGOPEN  add the HTTP and FTP protocols (the user
must have the Unix 'curl' command line program; the procedure also
handles some error conditions when opening a pipe that were being
previously ignored. FXPOPENR  now protects against quotation marks
when making a temporary file name. (Input/Output)
 INPUTFORM now actually obeys the MAX_ELEMENTS keyword (it was
being ignored). (Introspection)

2006 Aug 09

 CMAPPLY now has fast IDL versions of '*', 'MEDIAN', 'MIN' and
'MAX', where the version of IDL supports it. Also, a bug was fixed in
the case of applying multiplication to an odd number of values. (Array / Set Ops)
 HASHTABLE was enhanced to accept empty strings.(Array / Set
Ops)
 RELPATH has been corrected to remove a dependence on an internal
routine.(I/O)

2006 Jul 01

MPFITPEAK has a workaround in case all of the Y values are exactly equal.
(Fitting)

2006 Mar 28

 PHUNWRAP now handles unsigned integer input. (Mathematics)
 CMSET_OP has a bug fix, to work around an IDL error message when using the "histogramming" technique. (Array / Set Ops)
 CMSAVE: some bug fix to handle the writing of byte data and empty
strings; also, avoid the (now) reserved keyword INHERITS. (Save Files)
 FXGPKG, now handles the deletion of temporary files much more smoothly
and transparently. (Input/Output)

2005 Dec 29

Two problems with CMSYSTIME have been fixed (handling of vector Julian days and local time zone offsets off by one second). (Miscellaneous)

2005 Dec 13

PLOTIMAGE has a new keyword, PIXEL_ASPECT_RATIO, which allows
the user to specify the relative pixel dimensions. (Graphics) Small bug fix to CMSET_OP regarding
type checking of inputs. (Array / Set
Ops)

2005 Oct 03

 A fix to MPFIT when parameter limits were negative, where
the fitting code would not "stick" to the lower limit;
(Fitting)
 TAI_UTC now includes the leap second expected for 01 Jan 2006;
(Ephemeris and Timing)
 TNMIN now uses squarebracket array indexing notation (thanks
to K. Tolbert);
(Fitting)
 MPFIT2DFUN and MPFIT2DPEAK now defend against users supplying
strangelydimensioned X and Y values;
(Fitting)
 MPCURVEFIT has documentation fixes;
(Fitting)

2005 Apr 10

Minor bug fixes to MPFIT and MPFIT2DFUN

2005 Mar 13

New features for CMSET_OP makes it work more nicely with
mixed input data types. (Array /
Set Ops)

2005 Jan 30

Fixes to CHEBEVAL include handling oneelement coefficient
sets, and also fix a bug in the evaluation of derivatives when there
are very few coefficients. (Mathematics)
JPLEPHINTERP has the same fix for derivative evaluations (the errors
are negligible). (Ephemeris and Timing)

2004 Nov 19

Small fix to GEOGRAV, to include an external routine.

2004 Nov 15

 MPFIT has a new keyword ITERPRINT which allows redirecting
the default ITERPROC output without defining a new ITERPROC.
Also, a bug fix was applied when the maximum step size
is specified for a negative parameter.
(Fitting)
 Updates to PS_FORM/CMPS_FORM contributed by Jeff Guerber. No
longer use obsolete PICKFILE routine; avoid using EXECUTE(); other bug
fixes. (Printing)

2004 Aug 25

Added the CMUNIQUE_ID routine, which provides a unique
identifier, needed for things like temporary file names.(Miscellaneous)

2004 Jul 16

 For MPFIT: Add MPFORMAT field to PARINFO, and correct behavior of interaction
between MPPRINT and PARNAME in MPFIT_DEFITERPROC (thanks to Tim
Robishaw). Also, a small bug correction in the QR factorization
routine.(Fitting)
 Bug fixes to QRFAC and QRSOLV (thanks to Neena Rodricks).(Mathematics)
 Include OPLOTBIN in the cmtotal archive (thanks to Gordon Farquharson).(Graphics)

2004 Apr 30

PLOTBIN and OPLOTBIN have a new keyword, PLOTVERT, which
allows vertical histograms to be generated (i.e. with the X and Y axes
transposed).(Graphics)
The string hash function of HASHTABLE has been revised to prevent
(cosmetic) numerical overflows.(Array / Set
Ops)

2004 Apr 23

Added the Google Site Search feature.

2004 April 19

Correct small error in the ordering of methods in the HASHTABLE
class. (Array / Set Ops)

2004 April 19

 DDEABM has been updated. There is an interface change: the
NGRID keyword is now inputonly, and the NOUTGRID keyword is used for
the number of output grid points. Also some bug fixes have be entered
(handles an outofbounds interpolation index; DOIMPULSE bug fix;
handle early termination during INTERMEDIATE case). (Mathematics)
 The new routines GEOGREAD and GEOGRAV read and interpolate high
precision gravitational potentials (and compute accelerations). (Ephemeris and Timing)
 A new HASHTABLE data struct object which provides a classic hash
table implementation. The hash keys are strings. (Array / Set Ops)
 The new routines RELPATH and NORMPATH are used to construct
relative and normalized file system path names. (I/O)
 HPRNUTANG and HPRSTATN now have a NO_NUTATION keyword. (Ephemeris and Timing)
 CMSET_OP has a bug fix to handle the case of singleton sets with
AND, where the singletons were equal. (Array /
Set Ops)
 The MPFIT* routines have some documentation updates of the
BESTNORM keyword. (Fitting)

2003 November 23

 BUG in MPFIT: a bug has been
found in MPFIT which probably affects all one parameter fits. Users
should upgrade or consult the report found on the (Fitting page.
 MPFITPEAK no longer assumes sorted data. MPNORMTEST handling of
the CLEVEL keyword has been corrected. (Fitting)
 PRINTLOG has been updated to have a global console output flag.
(I/O)
 INPUTFORM can now print object references. (Introspection)
 Documentation updates to GTISEG.
 Internal updates to PLOTBIN and OPLOTBIN. (Graphics)

2003 November 20

I added a new curve fitting FAQ entry on checking for errors from
MPFIT and its drivers.

2003 August 10

This is a fairly extensive update:
 New function PHUNWRAP which performs phase unwrapping, removing
cycle jumps. (Mathematics)
 PLOTIMAGE incorporates changes submitted by Jeff Guerber which
help to conserve memory. (Graphics)
 MPFIT now returns the formal number of degres of freedom in the
DOF keyword. MPFIT has a new keyword ITERKEYSTOP that controls which keyboard
key is used to stop the fit. The ITERPROC is now called in the last
iteration, where it was not before. Some improved error checking. (Fitting)
 MPFITFUN, MPFITEXPR, MPFIT2DFUN and MPFIT2DPEAK also have the DOF
keyword to return the formal number of degrees of freedom. (Fitting)
 MPCURVEFIT, MPFITPEAK, and MPFIT2DPEAK are now more
keywordcompatible with CURVEFIT (includes TOL and YERROR
keywords). (Fitting)
 CHEBFIT handles special case where the mean value is exactly zero.
CHEBFIT also now returns more keyword values from the MPFIT level,
including YFIT, PERROR, BESTNORM and DOF. (Mathematics)
 The FUNCTARGS keyword has been added to MPEVALEXPR (a utility
function inside of MPFITEXPR). (Fitting)
 PLOTBIN and OPLOTBIN now use EXECUTE() instead of _EXTRA, because
of a bad interaction with the local version of XFWINDOW. (Graphics)
 DDEABM now works with more than 32k simultaneous equations.
Change some STATUS codes to be consistent with MPFIT. User
friendliness: make sure INIT is set if STATE is not. Some code
cleanups. (Mathematics)
 GTITRIM  corrected bug which bypassed MINGTI/MAXGAP if there was
only one interval. (Array / Set Ops)
 Save file routines CMSAVEDIR, CMSV_RREC and CMSV now include
support for a new record found in IDL SAVE files which appears to be a
disclaimer. (Save Files)
 TNMIN now works properly with more than 32k parameters. (Fitting)

2003 May 16

Added the .idlwave_catalog file to archives, in order to
support catalogs automatically in the Emacs IDLWAVE editting mode.

2003 Apr 14

 Bug corrections to PRINTLOG, in case of too many args. (I/O)
 Bug corrections to OPLOTBIN for PIXCENTER keyword, same as for
OPLOTBIN a year ago. (Graphics)
 Documentation corrections to MPFTEST. (Fitting)

2003 Jan 24

 A bug fix for MPFITELLIPSE in case of CIRCULAR input (will happen
if input axes are different); error checking in MPFIT2DPEAK. (Fitting)
 Correct bug in CMAPPLY: there was an initialization error in the
MIN/MAX case. (Array / Set Ops)
 Add ability to print the INPUTFORM of pointers. (Introspection)

2002 Nov 06

 Documentation updates for MPFIT family of functions. (Fitting)
 PLOTIMAGE has added support for the Z buffer graphics device. (Graphics)

2002 Sep 25

 Small changes to MPFIT, MPFITFUN and MPFITEXPR. These routines
now return the number of parameters which were fixed, either because
of explicitly being FIXED, or because of being TIED; also returned is
the number of parameters which are "pegged" at a parameter boundary
(thanks Kristian Kjaer). (Fitting)
 MPFIT2DPEAK and MPFITELLIPSE now have a consistent use of the
CIRCULAR keyword (thanks Don Horner). (Fitting)
 A new function, LEGCHEB, which computes the coefficients of a
Legendre polynomial series, if the Chebyshev series coefficients are
known. (Mathematics)

2002 Jul 22

 Corrected two bugs in DDEABM which caused faulty interpolated
output, but only at very small levels, close to the machine precision.
QRFAC now can return the explicit "Q" matrix.
(Mathematics)
 Upgraded MPFITEXPR to use the FUNCTARGS more practically. Now
this keyword is passed as private data to the user expression. (Fitting)
 Attempted to correct behavior of YRANGE in PLOTCOLORFILL. (Graphics)

2002 Jun 07

Bug in CMSYSTIME handling of MJD keyword is now fixed. (Miscellaneous)

2002 Jun 03

Small updates to MPFIT, DDEABM, LITMSOL and JPLEPHMAKE.

2002 May 13

 The MPCURVEFIT function has a correction to the behavior of the
NODERIVATIVE keyword. (Fitting)
 The CMSVLIB library now includes a statement and license by
Research Systems Incorporated. (Save
Files)
 New routines HPRSTATN, which uses the Markwardt library to compute
high precision earth station positions and velocities; SRVDOPP, which
computes relativistic doppler shift; and LITMSOL, which solves the
light time equation for bodies in the solar system. (Ephemeris and Timing)
 Small corrections and updates to Quaternion library and other
mathematical routines (CHEBCOEF, CHEBFIT, DDEABM, QRFAC, QRSOLV). (Mathematics)

2002 May 2

 Correct a bug in MPFIT, in the way that the STEP and FIXED
parameters were interacting. If both STEP and FIXED were passed using
the PARINFO structure, then their actions would get scrambled. (Fitting)
 Corrected bug in PLOTBIN, in the way that the PIXCENTER keyword
functioned. (Graphics)
 Improve GTITRIM, with the addition of the MAXGTI keyword. (Array / Set Ops)

2002 Mar 26

The routines PROTRANS and PRODIS have been permanently removed
from the CMSVLIB library for reading save files. Reading compiled IDL
procedures from IDL save files is no longer supported. However,
the data portion of the library still works.

2002 Mar 25

The addition of three new files:
 DDEABM, a procedure which integrates systems of ordinary
differential equations using the AdamsBashforthMoulton
PredictorCorrector technique. The routine includes adaptive step
size, adaptive order, and error control. It is based on DDEABM.F in
the SLATEC library. (Mathematics)
 CHEBGRID, a function which estimates Chebyshev polynomial
coefficients for data tabulated on a regular grid. (Mathematics)
 JPLEPHMAKE, a procedure to construct a new ephemeris table, or to
augment an existing one, with custom data. (Ephemeris and Timing)

2002 Mar 22

UPDATE:After some discussions, a crucial element of the
compiled procedure SAVE translator has been temporarily removed. [
Now permanently removed. ] The package distributed will not presently
translate saved IDL code. The other functions of the library (for
data) will still work.

2002 Mar 22

 Updates and additions to the CMSAVE library which interrogates,
reads and writes IDL save files. (Save
Files)
 Major new addition of the PROTRANS, PRODIS, PROREND and PROFREE
procedures, which allow to read and translate compiled and saved IDL
procedures into more humanreadable forms.
 CMSAVEDIR now prints common block variables correctly.
 Some small changes for the library to recognize (but not decode)
compressed save files.

2002 Mar 22

More updates for today, in addition to the entry below.
 Enhancement to MPFIT. In cases where the function is too
difficult to evaluate using the standard approach (i.e., MPFIT calls
user function), users can now specify an "(EXTERNAL)" function. The
way this works is that the user evaluates the function and its
derivative before calling MPFIT. Every iteration, control
returns to the user to reevaluate both the function and its
derivatives. Otherwise the operation of MPFIT should be the same.
(Fitting)
 Changes to PLOTCOLORFILL to make it overlay axes more
appropriately (at least I think). (Graphics)
 Addition of two new routines. JBEPOCH computes Julian or
Besselian epoch year numbers to/from Julian day numbers. (Ephemeris and Timing) CROSSPN computes efficient
vector cross products of many terms. (Mathematics)
 Add usage messages and more error checking to: QRFAC, QRSOLV,
QPINT1D, MCHOLDC, and quaternion library (Mathematics); TAI_UTC, TDB2TDT, HPRNUTANG and
EOPDATA.
(Ephemeris and Timing)
 Quaternion function QTFIND now returns only quaternions with
positive 3rd component. Handle case of quaternions more than 180
degrees apart in QTERP, as well as interpolating "beyond" the known
grid of values.
(Mathematics)
 HPRNUTANG and EOPDATA now search for their input files more
intelligently. TAI_UTC has some small bug fixes for array inputs. The
routines JPLEPHREAD and JPLEPHINTERP have changes to make them
compatible with a soontocome routine called JPLEPHMAKE, which allows
one to make their own ephemeris table (Ephemeris
and Timing).

2002 Feb 15

Additions to the math section: two new routines QRFAC and
QRSOLV for solving linear least squares problems; and an update to the
output of MCHOLDC so it can be used with CHOLSOL. (Mathematics)

2002 Feb 15

Addition of routines EOPDATA and HPRNUTANG. This procedures
compute earth orientation parameters used for high precision
earthbased astronomy applications. (Ephemeris
and Timing)

2002 Feb 14

Documentation updates to TNMIN. (fitting)

2002 Feb 09

 Addition of QTEULER function to quaternion package, for chaining
together multiple Eulerlike rotations. Updates to other quaternion
functions to make them more "vectorizable" (especially in the vector
vs. scalar case, where scalar here means one quaternion). (Mathematics)
 Addition of SRVADD function, which computes the addition of
velocities according to special relativity. (Ephemeris and Timing)
 Small modifications to JPLEPHREAD, to improve documentation, and
to return more information from the ephemeris table. (Ephemeris and Timing)
 Changes to CMAPPLY. The function is now more optimized for MIN
and MAX operations. A userdefined function can be applied. (Array / Set Ops)

2002 Jan 17

Additional error checking in MPFIT; Corrected documentation in
MPFTEST (thanks to W. Landsman). (fitting)

2001 Dec 30

 Addition of library of functions to manipulate quaternions. (Mathematics)
 Addition of routine to compute the number of leap seconds for a
given UTC time (i.e., TAIUTC difference). (Ephemeris and Timing)
 Additional documentation to the MPFTEST function. (Fitting)

2001 Dec 11

Update to PS_FORM function to deal with IDL 5.5's structure
handling. (Printing)

2001 Nov 29

Additions to MPFIT: MPPRINT parameter field to control printed
output; default ITERPROC now prints degrees of freedom along with
chisquare value. (fitting)

2001 Nov 18

Small cleanups to statistical routines just added in the fitting section.

2001 Nov 16

Addition of routines in the fitting
section for statistical tests and confidence band estimation.
MPCHITEST, MPFTEST and MPNORMTEST perform hypothesis testing for the
chisquare F and normal distributions. MPCHILIM and MPNORMLIM
estimate confidence intervals for the chisquare and normal
distributions.

2001 Oct 18

Corrected small bug in JPLEPHINTERP when using string OBJNAME
designation for NUTATIONS or LIBRATIONS. (Ephemeris and Timing)

2001 Oct 13

Small fixes:

2001 Aug 24

Small improvements to PLOTIMAGE in the case of small numbers of
image pixels per image. The pixel scaling strategy is now more
robust, and a oneoff bug was corrected. (Graphics)

2001 Aug 02

Small fix to PLOTIMAGE on MacIntosh to make decomposed color
work. (Graphics)

2001 Jul 30

Small changes to JPLEPHTEST (remove external dependencies),
MPFITPEAK (usage message), PLOTCOLORFILL (optimize for singlecolor
histograms), CMSVLIB library (correctly test for IDL version number).

2001 Jul 1

 Addition of ephemeris and timing section, which includes
routines to interpolate the JPL planetary ephemerides DE200 or DE405
to very high precisions; data tables are provided; a routine which
calculates relativistic clock corrections in the solar system. (Ephemeris and Timing)
 Small bug fix to DXPRINT (under Miscellaneous)

2001 Jun 18

Addition of mathematical section, which includes an adaptive
numerical integrator, routines for Chebyshev polynomial approximation,
and Modified Cholesky factorization of matrices. (Mathematics)

2001 May 28

Bug fix to MPFITEXPR. If you had been using this function with
the WEIGHTS keyword, then the weights were not being applied. Fixed.
Also the dead MPFITELLIPSE.PRO link was fixed. (Fitting)

2001 Apr 30

Addition of routines to manipulate Good Time Intervals (GTIs),
or any set of onedimensional data that are partitioned into finite
intervals. Routines are provided to convert to and from the GTI
representation, and to manipulate the GTI arrays. (Array / Set Ops)

2001 Apr 30

Small updates to DXDEBUG package (under Miscellaneous) and HELPFORM (Introspection) to print more "help"
information about pointers. Internal enhancements to CMSAVE package
(Save Files) pave the way for the future.

2001 Apr 20

IMPORTANT: some bug fixes for the MPFIT and TNMIN routines.
 I have found and fixed a bug in MPFIT which was introduced in the
25 March posting of the routine. The bug only affects function calls
using the PARINFO keyword and parameter limits, and would be almost
immediately apparent because parameter values would become fixed at
the lower limit. (Fitting)
 I have fixed some problems with and streamlined TNMIN, the
function optimizer. I have also improved the documentation to the
point where it should now be on par with MPFIT.(Fitting)

2001 Mar 25

This is a pretty major update to several routines in the library:
 MPFIT has some large internal changes. A small bug in the way
that parameter LIMITS were implemented was fixed, and may improve the
fitting stability. New PARINFO fields: MPSIDE for various twosided
and onesided function derivatives; and MPMAXSTEP to limit the
parameter stepsize in any one iteration. Some other small bug fixes,
and other internal changes. More documentation on the fitting
technique. Other driver functions have newer documentation (MPFITFUN,
MPFITEXPR, MPFIT2DFUN, MPFITPEAK and MPFIT2DPEAK). (Fitting)
 New function MPFITELLIPSE to fit a set of XY scatter points to an
elliptical shape. Users should still consult the ODRPack Page which is more general
and robust for these types of problems, however MPFITELLIPSE is good
for quick and dirty problems where the measurement error is not too
great. (Fitting)
 The optimization function TNMIN has been updated and improved.
Most importantly, functions now do not need to specify their
derivatives. The number of PARINFO fields has been increased, and
brought into line with MPFIT. A MAXIMIZE keyword permits the target
function to be maximized rather than minimized. The documentation
still needs to be updated. (Fitting)
 The introspection routine HELPFORM now handles more input
types.
(Introspection)
 Most published functions should now have RCS identification codes.

2001 Feb 21

Search and Browse the comp.lang.idlpvwave Usenet newsgroup

2001 Feb 14

CMSVLIB should now support VMS better. (Save Files)

2001 Feb 12

The major new addition is the CMSVLIB library, which allows
normal users to read write and interrogate IDL save files. Different
levels of routines are provided: CMSAVEDIR, CMSAVE and CMRESTORE are
meant to be used at the command line and in programs; CMSVREAD and
CMSVWRITE can be used in most programs; and lowerlevel routines are
available. HELPFORM and TAGSIZE have been updated to accomodate this
new library. (Save Files)

2000 Nov 17

 MPFIT should be a better citizen under IDL5 with floating point
exception handling; it does not change the exception handling
level now. (Fitting)
 PLOTIMAGE now handles PRESERVE_ASPECT in combination with
POSITION, PANEL or SUBPANEL keywords. (Graphics)

2000 Oct 14

A fatal bug was corrected in MPFIT2DPEAK. (Fitting) This was introduced recently, and
simply caused the routine to crash. Some documentation improvements
to CMSET_OP and ARRINSERT.

2000 Sep 27

DXBREAK is more compatible with IDL v4 now (DXDEBUG package under Miscellaneous). Also, a few improvements and corrections to the ROUTINE_NAMES documentation (Introspection)

2000 Sep 22

ARG_PRESENT and CMARG_PRESENT are considered withdrawn until
I understand if they can in fact be made to work under IDL version 4.
(Introspection)

2000 Sep 21

 CMSET_OP has been further improved so that it avoids some problems
with the built in version of SORT. When using the AND function with
the INDEX keyword it now always returns elements from the first input
set (inspired by Ben Tupper). (Array / Set
Ops)
 I have documented what is known about the builtin ROUTINE_NAMES
function. This function can be very useful for introspection. (Introspection)
 MPFITPEAK and MPFIT2DPEAK have small cosmetic changes. (Fitting)
 FXGPKG, which provides seekable pipes for Unix, has had some small
internal changes and bug fixes. FXGOPEN now has errorhandling
semantics similar to OPENR for all IDL versions (Input/Output)
 TAGSIZE has small documentation changes. (Introspection)

2000 Aug 28

 A rewrite of portions of CMAPPLY, which should make it faster in
some cases, and corrects some bugs in the MIN/MAX code (inspired by
Todd Clements). (Array / Set Ops)
 CMSYSTIME now displays the correct time zone when the generating
text output in GMT, namely +0000. (Miscellaneous)

2000 Aug 16

Improved version of CMSET_OP which can now also return array
indices rather than values. (Array / Set Ops)

2000 Jul 20

 MPFIT has a slight improvement, for some pathological
functions. MPFITPEAK and MPFIT2DPEAK are only changed slightly in
documentation. (Fitting)
 INPUTFORM has been corrected for two errors that appear for float type inputs. (Introspection)

2000 Jul 05

 Three new introspection routines: HELPFORM, which constructs a "HELP" string for a variable; ARG_PRESENT, a function which works under all versions of IDL to date; and TAGSIZE, which computes type information about structure tags. (Introspection)
 A utility named CMSYSTIME, which does a whole lot more than SYSTIME. In addition to computing the current time, it can convert between several different time systems, and also shift between local vs. GM time. (Miscellaneous)

2000 Jun 22

Small improvements to some routines, including
 adding debugging to TRANSREAD;
 adding EDGE keyword to PLOTBIN, OPLOTBIN and PLOTCOLORFILL;
 corrections to documentation of STATUSLINE and PRINTLOG.

2000 Apr 20

Slight improvements and fixes to PLOTIMAGE. (Graphics)

2000 Apr 19

A new version of PLOTIMAGE (and OPLOTIMAGE). These versions
should now work with 24bit displays and images. The default is now
not to smooth the image on screen unless INTERP is set. In
addition, the printed image can be smoothed by selecting a minimum
desired dotperinch resolution. (Graphics)

2000 Apr 17

A new package named DXDEBUG which facilitates command line debugging, including inspection of variables at any call level, and setting and clearing breakpoints. (Miscellaneous)

2000 Apr 12

 New procedure SAVE_DIAG which inspects IDL SAVE files. (Introspection)
 New function INPUTFORM which converts a value to an expression string. (Introspection)
 New mathematical functions CMPRODUCT which performs fast array products. (Array / Set Ops)
 New functions ARRINSERT and ARRDELETE which efficiently insert and delete elements in an array. (Array / Set Ops)
 Small fix to CMSET_OP. (Array / Set Ops)
 Moved CMSET_OP, CMREPLICATE and CMAPPLY to a new page, Array / Set Operations.

2000 Mar 27

 Some minor improvements and corrections to MPFIT, which are not
likely to affect most people. Copying terms for all MPFIT functions
have been liberalized. (Fitting)
 CMSET_OP & CMAPPLY &emdash; minor documentation changes. (Miscellaneous)

2000 Mar 09

A small change to MPFIT to prevent conflicts with a common block variable (Fitting); an updated CMSET_OP with improved handling of empty sets (Miscellaneous)

2000 Mar 03

A few updates to the fitting tutorial and the lefthand index bar.

2000 Feb 28

A new procedure PRINTLOG captures a transcript of console output. (I/O)

2000 Feb 24

A small fix to CMREPLICATE on IDL 5.3. (Miscellaneous)

2000 Feb 23

 New function CMSET_OP performs standard set operations on numbers and strings. (Miscellaneous)
 CMCONGRID is (more!) correct, thanks to Wayne Landsman. (Miscellaneous)
 PLOTIMAGE has the corrected code as well, but under normal circumstances the change will not be visible. (Graphics)
 CMREPLICATE now accepts arrays of structures. (Miscellaneous)

2000 Feb 11

 MPFIT package now uses COMMON MPFIT_ERROR for internal error reporting. (Fitting)
 TNMIN uses COMMON TNMIN_ERROR for internal error reporting. (Fitting)
 PLOTCOLORFILL, PLOTBIN and OPLOTBIN now have a few more useful options. (Graphics)
 PLOTIMAGE  few small improvements. (Graphics)
 A new function CMREPLICATE which is more flexible than REPLICATE. (Miscellaneous)
 A new widget function SETFITPARM, contributed by Frank Bringezu, which can help you set MPFITPEAK parameters. (Fitting)

2000 Jan 18

Removed most of 1pixel spacers from HTML.

2000 Jan 05

Updated web page HTML to be more standardcompliant.

1999 Dec 13

Added Gaussian procedure GAUSS1P by request

1999 Nov 16

Several new and updated items:
 Further speed optimizations for MPFIT. Probably the maximum that
can be achieved. (Fitting)
 Two new application functions MPFITPEAK and MPFIT2DPEAK which
replace the IDL functions GAUSSFIT and GAUSS2DFIT. (Fitting)
 PLOTIMAGE handles integersized images, as it should. (Graphics)
 STATUSLINE updated to prevent crashes. (Miscellaneous)

1999 Oct 18

Some fine tuning, including updates of PLOTIMAGE (Graphics) and CMPS_FORM (Printing).

1999 Oct 17

Several new and updated items:
 Updated MPFIT package; includes 2D fitting and CURVEFIT replacement
 Updated PS_FORM, renamed to CMPS_FORM
 Updated PLOTIMAGE, now can flip image
 New STATUSLINE routine (Unix)
 New PLOTBIN for histograms
 New FXGPKG for seekable pipes (Unix)

1999 Oct 17

Major web page redesign
