# curve.fit changelog Selected changes to the interface, fitting behavior, and numerical results. Earlier version numbers are assigned retrospectively; dates identify grouped code changes, not exact deployment times. For reference datasets, published sources, and checks of all four uncertainty settings, see [Numerical validation](/help#numerical-validation). ## 2.2.7 — September 2026 ### Fixed-parameter uncertainties and fully fixed models - Parameter uncertainties are now always scaled with the number of points minus the number of free parameters. The solver's own divisor silently dropped any data point at which every free parameter's derivative is zero, for example a point at x = 0 when the intercept is fixed, or far-tail points of a Gaussian with a fixed offset, which inflated the reported uncertainties in those cases (about 5 % on 12 points). Fits with no fixed parameters are unchanged. - Fixing every parameter now plots that exact model against the data. Previously the solver received a problem with nothing to solve and the result contained undefined values. The report shows residuals and the goodness of fit, lists every uncertainty as 0, omits the confidence band, and carries the warning "All parameters fixed: model plotted, not fitted". In the JSON result this is the new warning `all_parameters_fixed`. - The header FEEDBACK button now matches TEMPLATE and HELP in size and spacing, in the Fit! button's blue. Pressing Enter on the focused Fit! button starts the fit (Enter elsewhere is still reserved for table editing). Help gains a Screen Size note. - New self-checking numerical tests cover unit and scale invariance, exact and degenerate fits, corrector equivalence, closed-form uncertainty propagation, fixed and free parameters, row order, built-in vs custom equations, and warning controls; a scheduled statistical calibration of the reported uncertainties runs weekly. See [Numerical validation](/help#numerical-validation). **Fit results:** Parameter values are unchanged everywhere. Uncertainties change only for fits with a fixed parameter and a data point where every free parameter's derivative is zero. Fully fixed requests now return a defined result. ## 2.2.6 — September 2026 ### Corrected warnings for well-determined fits - Version 2.2.4 could show "Not full rank" for perfectly determined fits whose parameters differ greatly in scale (for example the NIST Pontius quadratic, whose coefficients span 1e-15 to 1e-4) and for exact fits with zero residuals. Identifiability now follows the solver's own test plus genuinely singular directions; a perfect fit reports zero uncertainties without a warning. - A fit to constant y values now succeeds with R² shown as undefined (`n/a`) instead of failing. - The covariance sign correction for Gaussian and Lorentzian widths now applies only to those declared parameters, so an oscillator phase wrapped across ±π can no longer trigger it. - Header FEEDBACK button rendering fixed; the footer note is shorter. **Fit results:** Parameter values and uncertainties are unchanged. Warnings, `n/a` markers, and the R² display change only in the cases above; oscillator confidence bands after a phase wrap are corrected. ## 2.2.5 — September 2026 ### Feedback button and sturdier file import - The feedback notice moved out of the footer: a FEEDBACK button now sits in the header next to TEMPLATE and HELP (with a short explanation on hover), and a one-line note appears beside the version link. Both disappear when the feedback period ends. - Import File reports a clear message when a file contains no numeric rows instead of doing nothing, lets you re-import the same file, accepts semicolon-separated files as well as comma- and tab-separated ones, and skips blank lines. Column mapping is unchanged. **Fit calculations unchanged.** ## 2.2.4 — September 2026 ### Clearer warnings and consistent uncertainty bands - Reports now state every solver condition that qualifies a result, not only the first: "Jacobian not full rank", "Iteration limit reached", zero degrees of freedom, and any other solver message. A free parameter whose uncertainty cannot be determined is shown as `n/a` instead of `0`. - For Gaussian and Lorentzian fits whose width converged with a negative sign, the confidence band and the calculator's `dy` now use a covariance consistent with the displayed positive width. Parameter values and their individual uncertainties are unchanged. **Fit results:** Fitted parameters and their uncertainties are unchanged. Confidence bands and calculator uncertainties can change for the sign-corrected Gaussian and Lorentzian cases described above. Results now carry a machine-readable `warnings` list. ## 2.2.3 — September 2026 ### Corrected parameter scaling and stricter results - Fixed a parameter-scaling rule introduced in 2.2.1 that could treat a legitimately tiny, automatically estimated coefficient as numerical noise, for example the leading coefficient of a quadratic fitted to x values in the millions (the NIST Pontius dataset). Affected fits showed a false "Jacobian not full rank" warning and a zero or shrunken uncertainty for another parameter. - A fit whose result is not a finite number now reports an error instead of a report containing `nan`. Uncertainties must be finite and positive, and percentage or multiple uncertainties are taken relative to the magnitude of the data value. - Added this changelog, a version link in the footer, and the Numerical validation section of Help. **Fit results:** Fits with extremely small automatically estimated coefficients may change; the certified NIST Pontius values are reproduced. Fits that previously returned non-numeric results now fail with an explanation. Other fits are unchanged. **Validation:** Reference checks now run in the derivative configuration the site actually uses. See [Numerical validation](/help#numerical-validation). ## 2.2.2 — September 5, 2026 ### Clearer uncertainty controls - Unused δx and δy table columns are shaded. Values remain editable and are used when the corresponding uncertainty setting is **Table**. - Corrected shading when switching uncertainty settings. **Fit calculations unchanged.** ## 2.2.1 — September 4, 2026 ### Near-zero parameter correction - Fixed numerical scaling when an automatically estimated starting parameter is nonzero but extremely close to zero. Affected fits could incorrectly report zero uncertainty for a free parameter. - Applied the correction consistently across no-uncertainty, x-only, y-only, and combined x/y uncertainty settings without changing the starting values. **Fit results:** Affected parameter estimates and uncertainties may change. Recheck earlier fits with unexpectedly zero uncertainty for a free parameter; this correction does not resolve genuinely underdetermined models. (Version 2.2.3 narrows this rule; see above.) **Validation:** Corrected linear cases were checked against independent ordinary, weighted, inverse-weighted, and Deming regression calculations. See [Numerical validation](/help#numerical-validation) for the coverage and reference datasets. ## 2.2.0 — September 4, 2026 ### Updated numerical derivatives - All 19 built-in models now use analytic derivatives calculated directly from their equations. Custom equations retain numerical derivatives. - Corrected x-only uncertainty handling that could incorrectly treat a free parameter as undetermined and report zero uncertainty. **Fit results:** Re-running built-in models can change fitted parameters, reported uncertainties, and convergence behavior. The custom-equation fitting method is unchanged by this update.
Numerical checks and limitations Analytic derivatives were compared with independent finite-difference calculations. Built-in models were also tested with synthetic data and x-only and combined x/y uncertainty settings. In the Gaussian Energy reference case, parameter estimates differed from the previous implementation by less than 0.5%, and reported uncertainties by less than 4%. These are observed differences for one test case, not accuracy bounds for other datasets. Some Lorentzian, exponential, and other poorly constrained fits can still produce unreliable parameter uncertainties. A smaller residual or a convergence message does not establish that individual parameters are well determined. Additional warnings for these conditions are not yet implemented in this release.
## 2.1.0 — September 1, 2026 ### Custom-equation fixes and feedback - Restored some valid custom-equation fits that were rejected when the fitting process tried values outside the equation's mathematical domain. - Custom plots omit undefined segments outside the valid domain instead of failing an otherwise valid result. - Added a temporary feedback form for reporting issues with the updated application. **Fit results:** Previously rejected valid custom fits may now succeed. Final custom-fit results must still be finite and real over the observed data. Built-in fitting calculations are unchanged by this update. ## 2.0.0 — August 2026 ### Updated curve.fit - Introduced the new application generation, retaining the familiar model choices, uncertainty controls, starting and fixed parameters, and PDF and Raw Data outputs. - Improved page loading and plot updates. Reset clears old plot points and error bars, and Raw Data tables stay within the results page. - Added the NIST Norris, Pontius, Misra1a, Eckerle4, and DanWood datasets alongside the Pearson–York benchmark and Gaussian examples. **Numerical compatibility:** All nine reference cases passed the documented comparison with the previous implementation within their specified test tolerances. This is a reference-case check, not a guarantee of identical results for every dataset. ## 1.0.0 — Legacy version The original curve.fit application, before the version 2 transition. Earlier changes are not reconstructed here.