simfit logo The Simfit package

Simfit is a completetly free, open-source package, distributed as 32-bit or 64-bit binaries. The source code can be downloaded from so that programmers can edit the drivers for their own needs or compile individual subroutines.


Simfit is a computer package for simulation, statistical analysis, curve fitting and graph plotting, using models from a compiled library or from ASCII text files supplied by the user. It can be used for teaching the principles of curve fitting, simulation and statistical analysis to students, but it will be found most useful by those interested in serious data analysis and creating professional, publication quality, scientific graphs.

Simfit is a collection of forty separate programs, each dedicated to a particular area of data analysis, but the package is run seamlessly from a program manager (w_simfit.exe in 32-bit versions or x64_simfit.exe in 64-bit versions) that has facilities for browsing and printing files. Data can be formatted by dedicated editors that can check for positive values, values in increasing order, sensible weighting factors, etc. or you can copy tables to the clipboard from any Windows application, then paste them into any Simfit program. Macros are provided to create correctly formatted data files from data held in Microsoft Office Excel format.

In order introduce first-time users to Simfit functionality, each time a procedure is selected a default data set is installed to demonstrate the data format required and the sort of results anticipated. Further, at any stage while using Simfit, the file-open dialogue has a button labeled [Demo] which lists typical data files for browsing or analysis.

Many advisory messages are displayed to help when using a procedure for the first time, but there is a speedup option to toggle these on or off as required.

After each analysis the results are written to archives for retrospective use.

There is a comprehensive reference manual (w_manual.pdf) compete with hyperlinks and an index as well as individual tutorials explaining each Simfit procedure. These are also distributed as a collected set (w_examples.pdf) with the Simfit package.

Simfit menu, Simfit home page


All the usual descriptive statistics (bar charts, histograms, best-fit distributions on sample cdfs, dendrograms, box and whisker or cluster plots), multivariate statistics (distance matrices and dendrograms, principal components and scree plots), time series (ACF, PACF, ARIMA) and frequently used tests (mostly with exact p values not the normal approximations), such as:
Simfit menu, Simfit home page

Curve fitting

Simfit menu, Simfit home page

Graph plotting

Simfit menu, Simfit home page


Simfit menu, Simfit home page

Special functions

These can all be called by 1-line commands as described in the documentation for user-defined models. Some of them have equivalent NAG library versions as indicated below.
 Command       NAG    Description
 arctanh(x)    S11AAF Inverse hyperbolic tangent
 arcsinh(x)    S11AAF Inverse hyperbolic sine
 arccosh(x)    S11AAF Inverse hyperbolic cosine
 ai(x)         S17AGF Airy function Ai(x)
 dai(x)        S17AJF Derivative of Ai(x)
 bi(x)         S17AHF Airy function Bi(x)
 dbi(x)        S17AKF Derivative of Bi(x)
 besj0(x)      S17AEF Bessel function J0
 besj1(x)      S17AFF Bessel function J1
 besy0(x)      S17ACF Bessel function Y0
 besy1(x)      S17ADF Bessel function Y1
 besi0(x)      S18ADF Bessel function I0
 besi1(x)      S18AFF Bessel function I1
 besk0(x)      S18ACF Bessel function K0
 besk1(x)      S18ADF Bessel function K1
 phi(x)        S15ABF Normal cdf
 phic(x)       S15ACF Normal cdf complement
 erf(x)        S15AEF Error function
 erfc(x)       S15ADF Error function complement
 dawson(x)     S15AFF Dawson integral
 ci(x)         S13ACF Cosine integral Ci(x)
 si(x)         S13ADF Sine integral Si(x)
 e1(x)         S13AAF Exponential integral E1(x)
 ei(x)         ...... Exponential integral Ei(x)
 rc(x,y)       S21BAF Elliptic integral RC
 rf(x,y,z)     S21BBF Elliptic integral RF
 rd(x,y,z)     S21BCF Elliptic integral RD
 rj(x,y,z,r)   S21BDF Elliptic integral RJ
 sn(x,m)       S21CAF Jacobi elliptic function SN
 cn(x,m)       S21CAF Jacobi elliptic function CN
 dn(x,m)       S21CAF Jacobi elliptic function DN
 ln(1+x)       S01BAF ln(1 + x) for x near zero
 mchoosen(m,n) ...... Binomial coefficient
 gamma(x)      S13AAF Gamma function
 lngamma(x)    S14ABF log Gamma function
 psi(x)        S14ADF Digamma function, (d/dx)log(Gamma(x))
 dpsi(x)       S14ADF Trigamma function, (d^2/dx^2)log(Gamma(x))
 igamma(x,a)   S14BAF Incomplete Gamma function
 igammac(x,a)  S14BAF Complement of Incomplete Gamma function
 fresnelc(x)   S20ADF Fresnel C function
 fresnels(x)   S20ACF Fresnel S function
 bei(x)        S19ABF Kelvin bei function
 ber(x)        S19AAF Kelvin ber function
 kei(x)        S19ADF Kelvin kei function
 ker(x)        S19ACF Kelvin ker function
 cdft(x,m)     G01EBF cdf for t distribution
 cdfc(x,m)     G01ECF cdf for chi-square distribution
 cdff(x,m,n)   G01EDF cdf for F distribution (m = num, n = denom)
 cdfb(x,a,b)   G01EEF cdf for beta distribution
 cdfg(x,a,b)   G01EFF cdf for gamma distribution
 invn(x)       G01FAF inverse normal
 invt(x,m)     G01FBF inverse t
 invc(x,m)     G01FCF inverse chi-square
 invb(x,a,b)   G01FEF inverse beta
 invg(x,a,b)   G01FFF inverse gamma
 spence(x)     ...... Spence integral: 0 to x of -(1/y)log|(1-y)|
 clausen(x)    ...... Clausen integral: 0 to x of -log(2*sin(t/2))
 struveh(x,m)  ...... Struve H function order m (m = 0, 1)
 struvel(x,m)  ...... Struve L function order m (m = 0, 1)
 kummerm(x,a,b)...... Confluent hypergeometric function M(a,b,x)
 kummeru(x,a,b)...... U(a,b,x), b = 1 + n, the logarithmic solution
 lpol(x,m,n)   ...... Legendre polynomial of the 1st kind, P_n^m(x),
                      -1 =< x =< 1, 0 =< m =< n
 abram(x,m)    ...... Abramovitz function order m (m = 0, 1, 2), x > 0,
                      integral: 0 to infinity of t^m exp( - t^2 - x/t)
 debye(x,m)    ...... Debye function of order m (m = 1, 2, 3, 4)
                      (m/x^m)[integral: 0 to x of t^m/(exp(t) - 1)]
 fermi(x,a)    ...... Fermi-Dirac integral (1/Gamma(1 + a))[integral:
                      0 to infinity t^a/(1 + exp(t - x))]
 heaviside(x,a)...... Heaviside unit function h(x - a)
 delta(i,j)    ...... Kronecker delta function
 impulse(x,a,b)...... Unit impulse function (small b for Dirac delta)
 spike(x,a,b)  ...... Unit triangular spike function
 gauss(x,a,b)  ...... Gauss pdf
 sqwave(x,a)   ...... Square wave amplitude 1, period 2a
 rtwave(x,a)   ...... Rectified triangular wave amplitude 1, period 2a
 mdwave(x,a)   ...... Morse dot wave amplitude 1, period 2a
 stwave(x,a)   ...... Sawtooth wave amplitude 1, period a
 rswave(x,a)   ...... Rectified sine wave amplitude 1, period pi/a
 shwave(x,a)   ...... Sine half-wave amplitude 1, period 2*pi/a
 uiwave(x,a,b) ...... Unit impulse wave area 1, period a, width b
Simfit menu, Simfit home page

NAG library routines

Early versions of Simfit used the NAG library routines for numerical procedures, and this can still be done if a valid license is available. Otherwise Simfit has a built-in library to use public domain versions of these routines. Some of these replacement routines have additional functionality and, where routines have been removed from the NAG library, additional code has been included so that newer NAG routines will be called when the NAG library is being used instead of the Simfit library. Simfit menu, Simfit home page


Simfit menu, Simfit home page


Simfit menu, Simfit home page


Simfit menu, Simfit home page


Requests for help may be answered by:

University of Manchester

I always repair errors and will usually help simfit users, including adding new mathematical models to the library.

Simfit menu, Simfit Home page