Most pages are available in English and German, for navigation or language
switching use the top and bottom menus. Please feel free to report bugs in
the software or send questions or comments to the e-mail address (listed in mangled form
together with my public PGP key at the bottom of this page).
Make sure the subject line is related to these pages, e.g. contains CRC/Hash;
if you do not get a reply within a few days then retry to send your mail.
Before downloading any software from this site please read this
legal notice.
News
Dec. 28, 2018
For health reasons, there will be no updates in the next few weeks.
Nov. 27, 2018
Updated multi precision arithmetic package MPArith 1.39.12 with
New functions:
succd/s/x, predd/s/x in mp_rcalc,
mpc_log10, mpc_is_ia in mp_cmplx,
and the new unit mp_ccalc, which parses and evaluates mp_complex expressions;
Changed functions:
adjust sign of mpc_arctanh on the branch cut,
error MP_PRECISION in s_mpf_mod_pi2k instead of assert;
Other: configuration parameter MPC_NO_EXECPTIONS;
Bugfixes: mp_real: copy/paste bug in mpf_sinhcosh, subtle bug for mpf_arctan2(y,0),
mp_cmplx: mpc_ln1p and mpc_expm1 for small imaginary a, mpc_arctanh for real |a| > 1.
The basic introduction and the multi precision
calculator t_rcalc are updated,
there is the new calculator t_ccalc
for complex expressions.
Unit AMath V2.50 with
the new functions: population covariance pcov/x and
generic aliases Infinity, NegInfinity, NaN;
Special Functions V1.53.03
with the new functions:
derivatives of the zero order Kelvin functions
(kelvin_berp / beip / kerp / keip);
Unit AMCmplx V1.14
with the new functions: zeta, sinpi, Ei, E1, li;
changed functions:
Set agm(x,-x) = 0, nroot special cases n=1,2;
fixed: expm1 and ln1p for small pure imaginary arguments.
Util archive with the standard include file
std.inc V1.75
and unit Compvers V0.41.
The std.inc file has basic support for Delphi 26 / 10.3 'Rio' / VER330;
it is needed for some units, e.g. for mem_util.
Nov. 02, 2018
AMath archive with
unit AMath V2.47 (reintegrated amath2/ext2);
Special Functions V1.52.04
(new: modified digamma, synchrotron functions F and G;
changed: Nan/Inf checks for sfc_EllipticPiCim,
maximum iteration check in some elliptic integrals);
unit AMCmplx V1.04
(new: separate Jacobi elliptic functions sn, cn, dn;
changed: LambertWk (order of arguments and initial approximations),
RStheta with Maclaurin series for |z| < 1/64,
improved lngamma for 0 ≤ z.re < 2);
AMTools V0.46 with Ridders root finding method.
D/AMath internal archive complexdemo with the
complex expression parser / interpreter amccalc.pas and the demo
programs PlotPhase (a GUI application for the visualization of complex
functions) and T_CCalcX (a console program for the evaluation of complex expressions);
Util archive with
Compvers V0.40 and version 1.73 of the standard include file std.inc.
Oct. 08, 2018
AMath with
unit AMath V2.44
(more ext2 routines: abs2x, ceil2x, chs2x, cmp2x, exp1_2x, exp2x, floor2x,
ldexp2x, ln2x, ln2_2x,nroot2x, pow2x, trunc2x);
Special Functions V1.51.07
with the new unit sfBessl2 and new functions:
Coulomb functions (phase shift, normalizing constant, regular and irregular wave
functions), truncated exponential sum function;
changed functions:
igamma with Laguerre expansion and x < 0,
igammal for x < 0,
removed igamman;
unit AMCmplx V0.98
with the integer power function cpowi.
Updated Util archive with unit
Compvers V0.39
(support for FPC 3.2.0 and FPC 3.3.1)
and version 1.71 of the standard include file.
Sep. 12, 2018
AMath with
unit AMath V2.42
(new: Total variance tvar/x, signaling NaNs;
changed: Bitmask names of single exceptions compatible to DAMath);
Special Functions V1.50.18
(new: Euler polynomials, Bessel polynomials, logarithm of Barnes G,
exponential integral beta, incomplete gamma function igamma(n,x),
partial x-derivative of P(a,x);
changed:
Exponential integral E_n for n <0 and x > 0,
implemented max. iteration check in some elliptic integral functions,
fix return type of M_EllipticPiC, more NaN/Inf checks).
64-bit compatible DAMath archive with
the units DAMath V1.11,
Special Functions V1.35.17.
Unit DFPU now supports Get/SetExceptionMask, in unit DAMath
there are fixes for some 32-bit compiler functions
(trunc/round/frac changed FPC control word) and for ln in some
FPC versions (non-standard exceptions and Inf handling).
Aug. 08, 2018
Updated multi precision arithmetic package MPArith 1.38.10 with
New functions:
Simulated ASX for 64-bit, const PINC for default precision elevation;
Changed functions:
frexpx/ldxepx only if not EXT64, prime32 uses doubles,
mpf_??_ext changed to mpf_??_dbl, mpc_??_ext changed to mpc_??_dbl,
s_mp_ln/log2 return double;
AMath archive including
unit AMath V2.38 with
SafeDivX (safe division), CoeffVar/X (coefficient of variation),
interfaced sqr12x; improved intpower.
Special Functions V1.49.03
with relative exponential of order n, hypergeometric function 2F0.
AMath archive with
unit AMath V2.31
(new relative compound function and a fix for FPC2.6.x)
and Special Functions V1.48.04
(with the new functions: Derivatives of Weierstrass elliptic functions
(wpe_der / wpg_der), Mathematica style incomplete elliptic integral of the
third kind,
Special Functions V1.47.15
with the new functions:
Weierstrass elliptic functions and inverses,
Klein invariant, modular lambda function,
Mathematica style incomplete elliptic integrals;
changed functions:
sfc_el2 is computed with Carlson functions,
changed argument check in sfc_ell_rd;
Note for FreePascal users:
The errors with FPC 3.1.1-r20:38296_[2018/02/21] are corrected: The bad FPC design decision to evaluate constants like 2.0/9.0 in single precision,
is fixed by using integer(!) quotients like 2/9 (hoping this will stay correct in future versions).
The broken frac function for 64-bit will be fixed in upcoming FPC snapshots
(see https://bugs.freepascal.org/view.php?id=33635),
until then DAMath defines its own frac function for FPC64/311.
AMath archive with
Special Functions V1.46.15
(new functions: Integrals of zero-order Bessel functions,
EllipticPiCim (for imaginary modulus), Mathematica style complete elliptic
integrals, Neville theta functions, inverse lemniscate functions;
changed functions: comp_ellint_b/d and EllipticPiC for |k| ≥ 1,
fixed Nakagami distribution return types in specfun),
unit AMCmplx V0.95
with the new Riemann-Siegel theta and the
reciprocal gamma function.
AMath archive
with unit AMath V2.28
and the new procedure CSEvalXDer (evaluate Chebyshev sum and derivative);
Special Functions V1.45.11
with the new functions:
Bose-Einstein integrals,
inverse Langevin function,
inverse tangent integral of real order,
Rogers-Ramanujan continued fraction;
changed functions:
LegendreChi for |x| > 1,
LerchPhi for z < -1,
polylogarithms of real order for x > 1.
AMath with
unit AMath V2.26
(types for functions with pointer to parameters);
Special Functions V1.44.17
(new: Owen's T function, inverse RiemannR, inverse erfce, Einstein functions,
transport integrals, Fermi-Dirac functions of real order;
changed; Polylogarithms (integer order for x > 1, real order for x < -1),
improved RiemannR, and other changes in erf_p, erf_q, Debye functions, Struve H_v(x)).
Unit AMTools V0.44 with the
new procedures intde_p and intdei_p (parameter pointer versions
of the double exponential integration routines) and PolyRootsOA (open array version).
User-requested unit
BJL3
which implements Bob Jenkins' non-cryptographic
hash function lookup3 (which is used in Delphi's system.hash unit);
Another user-request: The [hash]file functions take a string as
file name parameter type (str255 was a relict from
older versions which had DLL compatible functions).
Unit AMath V2.24 with the new
accurate helper function fma_x to compute a*b + c; old non-BASM code was removed.
Special Functions V1.42.01
with the new exponentially scaled exponential integral eisx2; the domain
of the Goodwin-Staton integral gsi was extended to negative arguments.
AMCmplx V0.92
with LambertW function for all branches.
New unitAMQuat V0.19 with
quaternionic arithmetic and elementary transcendental functions.
New functions: mp_fact_swing, mp_swing and from AMath/fdamsupp:
mpf_arccosd, mpf_arccotcd, mpf_arccotd, mpf_arcsind, mpf_arctand,
mpf_cbrt, mpf_cosd, mpf_cospi, mpf_cotd, mpf_deg2rad, mpf_rad2deg,
mpf_rem,2pi, mpf_sind, mpf_sinpi, mpf_tand, mpf_tanpi
Changed functions: mp_fact: check n ≤ MaxFact; mp_types: no threadvar for FPC1.0.10/Win32
AMath archive with
unit AMath V2.22:
accurate helper functions ln1pexp, logaddexp, logsubexp;
ext2 procedures xmul12, xadd12, xdivrem; and the function isRMNearest.
Special Functions V1.41.06 with
the Fresnel auxiliary functions FresnelF/G, Bessel lambda functions,
accurate two parameter error function erfh and erf2,
and the chi distribution chi_pdf/cdf/inv.
AMTools V0.39 with root polishing for complex roots.
AMath archive
with unit AMath V2.16:
accurate helper functions lncosh, lnsinh, some polynomial routines
(PolEvalC, PolEvalDeriv, PolEvalCHEDer), tanPi, pow1pf.
Special Functions V1.40.07
with q-Pochhammer Euler function, Dedekind eta for imaginary
arguments, complete elliptic integrals K and E for k>1.
AMTools V0.37 with the new
PolyRoots
procedure to find the real and complex roots of a polynomial up to
degree 20 using a companion matrix method, balancing, and the QR
algorithm for the eigenvalues of an upper Hessenberg matrix.
Fully integrated
Blake2s hash functions. The source
in the archive should be compatible with units/applications that do not
expect the old values of MaxOIDLen or C_HashVers.
All CRC and
FCA/FZCA demo programs programs compile without changes.
Tested with Raspberry Pi 3 and Delphi 25 (Tokyo starter)
and more ...
Updated Util archive with a
fix for debug mode range check error in Base2N V0.42.
May 14, 2017
The 64-bit compatible DAMath functions
now support Raspberry Pi 3. There are no changes in the DAMath units,
some error bounds in the test files have been adjusted for FPC/ARM with
Raspberry Pi, results from FPC 3.0.2 are now included in the test suite.
and version 1.68 of the standard include file
std.inc
Apr. 21, 2017
The first update after 6 months brings only some minor changes:
std.zip addresses Delphi 25 (VER320, 'Tokyo') and FPC/CPUARM;
the HMAC-SHA3 test vector page
is updated and some broken links are corrected.
In the near future there will be ARM (Raspberry Pi 3) compatible
versions of many packages, starting with MPArith, CRC/Hash, and DAMath.
Testing on AMD processors will be dropped.
Unit AMath V2.09 with the new
accurate helper function sqrt1pmx = sqrt(1+x^2)-x;
Special Functions V1.39.04
with the new general Fibonacci function,
general Chebyshev function the first kind, the nth "probabilists'" Hermite polynomial,
CDF and ICDF for the limiting form of the Kolmogorov distribution function,
and the functional inverse of gamma;
AMTools V0.35 with the new
function zbrenty for zeros of f(x)-y.
AMath with
Special Functions V1.38.06
(new complete and incomplete elliptic integrals B, Bring radical, Wright omega function)
and AMCmplx V0.91
(improved complete elliptic integral E, new Jacobi elliptic functions
sn, cn, dn for complex argument z and real modulus k).
Updated HMAC-SHA3 test program and vectors;
now including intermediate values.
Oct. 27, 2015
AMath with Special Functions V1.36.02
(new lemniscate functions sin lemn and cos lemn,
the reflection formula for polygamma uses derivatives of Euler's series for π cot(π x),
the parabolic cylinder function V(a,x) is extended to negative a)
AMath and
the 64-bit compatible DAMath
avoid some inaccuracies introduced by
FreePascal's -O4 fastmath 'optimization' (FPC 2.7.1, 3.0.0/1, 3.1.1): Among
others floating point division by constants may be replaced by multiplication
with the inverse, leading to quotients which are sometimes
not correctly rounded!
I recommend to turn off this feature using
{$OPTIMIZATION NOFASTMATH} or with command line option –OoNOFASTMATH!
Fully integrated SHA3 hashes: The source in the archive should be
compatible with units/applications that do not expect the old size of
THashContext. All
CRC and
FCA/FZCA demo programs programs compile without changes.
AMath archive
with unit AMath V2.06,
Special Functions V1.34.06
(Struve functions H and L for negative real order, faster
Dirichlet eta function for s near 1, improved
Gauss hypergeometric function 2F1, and some special cases for Bessel Y
and Bulirsch's incomplete elliptic integral of the 1st kind)
and unit AMCmplx V0.84
(optional scaled robust division, new functions elle, ellke, exp2, exp10
and improved cpolyr using Knuth's faster evaluation scheme).
AMath archive with unit
AMath V2.05
(new accurate functions sinhc, sinhmx, versint)
and Special Functions V1.33.15
(completely symmetric elliptic Carlson integral R_{G},
Struve and modified Struve functions of positive real order,
scaled Airy functions, solutions of Kepler's equation and more)
Util archive with
Compvers V0.33 unit
(basic support for Delphi 22 / XE8, VER290),
unit BTypes V0.21,
and version 1.64 of the standard include
file std.inc
AMath archive
with unit AMath V2.02
(two new accurate functions for scaled integer powers of Pi) and
Special Functions V1.32.04 (new
complete elliptic integral D, functional inverse ei_inv of the exponential integral)
Multi precision arithmetic package MPArith V1.32.04 with
with updated introduction,
new BIT16 compatibility functions (mpf_adecimal, mpf_adecimal_alt),
some FPC adjustments, and more.
Jan. 18, 2015
Util archive with
Compvers V0.32 unit (basic support for
FPC 2.7.1, FPC 3.0.1, FPC 3.1.1) and version 1.62 of the standard include
file std.inc
AMath archive with unit
AMath V2.00
and Special Functions V1.31.08
with new statistical distributions (inverse gamma, logarithmic series, Wald)
Euler numbers, and more.