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.
Unit AMath V2.44 with
the new features: Moved ext2 routines to new unit AMath2, new ext2 routines
(abs2x, ceil2x, chs2x, cmp2x, exp1_2x, exp2x, floor2x, ldexp2x, ln2x, ln2_2x,
nroot2x, pow2x, trunc2x),
changed:
suppress silly warnings for FPC32+ with stc.inc, remove old work-arounds;
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.
Compvers
V0.39 unit (support for FPC 3.2.0 and FPC 3.3.1),
version 1.71 of the standard include file
std.inc
(with symbol FPC32Plus and suppression of silly FPC32+ warnings).
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.
New functions: Complex arithmetic-geometric
mean (mpc_agm, mpc_agm1);
Changed functions:
Extended s_mp_nroot_modp,
small change in s_mp_is_pth_power,
fixed/extended mp_dfact for n < 0;
AMath archive with
unit AMath V1.96
(small Bernoulli numbers as hex constants),
Special Functions V1.30.02
(improved hyperg_1f1 with limiting expression for very small a,b and
no Kummer transformation, if b is a negative integer), and
AMCmplx V0.79
(new dilogarithm, complete elliptic integrals of the first kind and more).
New scrypt key derivation function in
the CRC/Hash archive and
updated introduction
Serpent archive
with new fast BASM32 routines contributed by EddyHawk
AMath archive
with Special Functions V1.28.10
(new parabolic cylinder function V(a,x), new Catalan function,
improved and expanded prime zeta, and more)
The basic introduction and the multi precision
calculator t_calc are adjusted.
AMath V1.94
(with the new functions compound, logit, pow1p;
and double-extended support)
and Special Functions V1.27.09
(with the two forked units sfGamma2, sfZeta2,
and new functions: the functional inverses lngamma_inv, psi_inv, ibeta_inv
and the parabolic cylinder functions CylinderD, CylinderU, HermiteH)
AMath archive
including unit AMath V1.90 (with new functions
ln1mexp and PolEvalS);
Special Functions V1.26.09 (New
Functional inverse of the Logarithmic Integral,
Fibonacci and Lucas polynomials,
Lobachevski's log-sin and log-cos integrals,
Lévy distribution);
and AMCmplx V0.70 (improved cexpm1 and cln1p).
SHA-3 implementation
according to NIST Draft FIPS 202 (including SHAKE 128/256)
Util archive with
Compvers V0.29 unit (support for Delphi 20/XE6);
new memh V0.15 unit for portable heap memory allocation;
updated units BTypes V0.20,
BitArray V0.19, and
std.inc V1.59
AMath archive with
Special Functions V1.25.03
(new: harmonic and generalized harmonic number functions, Zipf distribution)
and AMCmplx V0.68
(new: cexpm1, cln1p, clog10, clogbase, cpolar, cpowx).
Multi precision arithmetic package MPArith V1.28.05 with
new functions in unit mp_cmplx (arccot, arccotc, arccoth,
arccothc, arccsc, arccsch, arcsec, arcsech, csc,
csch, sec, sech) and updated introduction.
AMath archive with small changes in the
AMath V1.87 unit, the
Special Functions V1.24.02,
and the accompanying introduction.
Unit AMCmplx V0.63
with new functions (cgamma, clngamma, csgn),
improvements (carccsc/sec/sech without branch point series, and more),
and a new MPArith test program to measure the accuracy of the complex functions.