Markwardt IDL Page

What's New

   Curve Fitting
   Fitting Tutorial
   Save Files
   Full Listing


Markwardt IDL Pages
Entire Web

Craig's techie blog.

Home Page of Craig Markwardt



  • TAI_UTC: add leap second for Jan 2017 (Ephemeris and Timing)
  • MPFIT: Add MPFORMAT_PARNAME for explicit formatting of printed parameter names (Fitting)
  • Improved documentation: MPFITCOVAR
2016-06-02 Fix versioning metadata in cmpfit, release version 1.3a.

Version 1.3 of the MPFIT C library is now available. The main change is a bug fix for two-sided derivatives when using derivative-debugging (thanks M. Wojdyr for reporting and testing). Also, allow maxiter=MP_NO_ITER upon input. (C Version of MPFIT)

Additional changes:

  • New function MPFITCOVAR: for solving problems with correlated errors; i.e. measurement covariance matrix instead of simple weights or error bars. (Fitting)
  • TAI_UTC: add leap second for July 2015 (Ephemeris and Timing)
  • PLOTIMAGE: add check for decomposed state of Z buffer (Thanks David Palmer) (Graphics)
  • GTISEG, GTI2MASK: bug fix to handle scalar input (Array / Set Ops)
  • EOPDATA: fix bug in interpolation of nutation and polar motion adjustments (thanks Tim Lister) (Ephemeris and Timing)
  • QTFIND: fix bug which could produce all-zero quaternion in rare cases; add documentation about numerical accuracy (Mathematics)
  • MPFIT: bug fix to handle FNORM calculation more robustly in rare cases (Fitting)
  • TDB2TDT: bug fix when TBASE is a scalar. (Ephemeris and Timing)
2012-12-18 Documentation corrections to DDEABM.
2012-10-04 Changed the way .zip and .tar.gz files were created, so they are not re-created if unrelated input files are changed. This should reduce the number of frequent changes to the archive files of smaller libraries.
  • 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).
  • Minor bug fixes for PXPERFECT, TAI_UTC, that do not affect the performance of the routine.
  • 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 2012-07-01 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 on-screen 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 run-time 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 light-time 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);
  • 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 parameter-by-parameter basis using PARINFO; a bug fix for when MAXITER=0 and the user expects the covariance matrix to be computed; avoid numerical round-off 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 error-handling. (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 earth-moon 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 user-specified 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 mid-May 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 one-dimensional 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; semi-major axis always appears first, followed by semi-minor 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 non-functional. 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 X-ray 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 user-defined "NULL" value can be specified when the object is created (the NULL_VALUE keyword) which can make error-checking 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 compile-time 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 square-bracket array indexing notation (thanks to K. Tolbert); (Fitting)
  • MPFIT2DFUN and MPFIT2DPEAK now defend against users supplying strangely-dimensioned 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 one-element 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 input-only, and the NOUTGRID keyword is used for the number of output grid points. Also some bug fixes have be entered (handles an out-of-bounds 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 keyword-compatible 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 Adams-Bashforth-Moulton Predictor-Corrector 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 human-readable 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 re-evaluate 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 soon-to-come 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 earth-based 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 Euler-like 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 user-defined 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., TAI-UTC 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 chi-square 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 chi-square F and normal distributions. MPCHILIM and MPNORMLIM estimate confidence intervals for the chi-square 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 one-off 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 single-color 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 one-dimensional 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 two-sided and one-sided 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 X-Y 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.idl-pvwave 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 lower-level 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 built-in 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 error-handling 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;
  • 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 24-bit 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 dot-per-inch 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 left-hand 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 1-pixel spacers from HTML.
2000 Jan 05 Updated web page HTML to be more standard-compliant.
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 integer-sized 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

Copyright © 1997-2010 Craig B. Markwardt
Last Modified on 2017-01-03 13:57:27 by Craig Markwardt