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;
Mif 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
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
The next version of the CRC/Hash archive will include a
Pascal port of Blake2S and more Rocksoft parameter sets.
There are user requests to rename the Hash unit (e.g. xyzHash
or ewp_hash), in order to work around a Delphi XE8+ quirk
(unit hash and system.hash cannot be used together; fixed in
new D25 versions). Because renaming my unit forces existing
applications to change their code, I would like to get some
feedback comments before releasing the new archive; please
send comments to the e-mail address.
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.
New:
Bateman's G function,
Bernoulli polynomials (bernpoly),
Chebyshev polynomials of the third and fourth kinds (chebyshev_v, chebyshev_w),
power integrals (cosint, sinint),
internal special_reduce_modpi
Improved: sfc_zetah/hurwitz_formula
Changed: Quasi-periodic code for sfc_ellint_1/2/3 and sfc_hlambda
Unit AMath V1.74 with
degrees versions of trigonometric functions and their inverses
Special Functions V1.18.19
with the new unit sfHyperG for hypergeometric functions:
Gauss (hyperg_2f1), Kummer (hyperg_1f1), Tricomi (hyperg_u).
New Airy/Scorer functions Gi and Hi, and improved functions
(beta3 for a ≤ 0 or b ≤ 0;
polygamma for large order: e.g. (3000,200))
The Compvers V0.26 unit from the
util archive supports Delphi 18 (XE4).
May 05, 2013
Unit AMath V1.69 with
new functions (exp10m1, log2p1, log10p1)
and changed functions (frexp/d/s, ilogb, power support denormal).
Special Functions V1.17.12 units
with new functions: fermi_dirac_p15, separate FresnelC/S, non-normalised incomplete beta (beta3),
statistical distributions (Extreme Value Type I, Maxwell, Rayleigh);
improved functions: sfc_chi2_pdf for very small x, sfc_beta, sfc_polygamma;
and changed functions (longint k in sfc_poisson_pmf,
ibeta_series with parameter normalised).
Version 1.56 of the standard include file in std.zip
with definitions for Delphi 18 (XE4, VER250)
Apr. 03, 2013
AMath units
Special Functions V1.16.13
with new functions (remaining Jacobi elliptic functions and their inverses,
trilogarithm, Hurwitz zeta for s < 0),
improved functions (sfc_binomial, sfc_jacobi_arcsn/cn/dn),
and fixes (sfc_zeta for TP5).
orthogonal polynomials, Legendre functions and related
statistical distributions,
and other special functions.
AMath archive
with unit AMath V1.61
(special cases |y|=1/2 in power, constants succx0Hex, succx0, ln_succx0) and
Special Functions V1.15.07 units with
new function Yv_series (handles some near overflows in bessel_jy),
improved functions (sfc_git, sfc_jn, sfc_yn, sfc_zetah),
and fixes (sfc_expint3 for arguments 0.4e-6 .. 6e-6; sfc_trigamma, sfc_tetragamma,
sfc_pentagamma for very large arguments).
New DAMath archive for 64-bit compatible
double precision accurate mathematical methods without
extended precision, 387-FPU, or assembler:
The DAMath unit
implements the double precision accurate mathematical functions,
polynomial, vector, statistic operations and more, the
DAMTools unit
provides reliable tools
for finding zeros and local minima, numerical integration etc.
Special Functions units
with D17 (XE3) adjustments and a more compact sfc_eiex function in
the updated AMath archive
Minor changes for MPArith V1.25.03
after switching to max. 2^24 mp_digits.
The basic introduction and the multi precision
calculator t_rcalc are updated.
Jan. 07, 2013
MPArith V1.24.23 without
the old 32000 digits restriction: For 32/64-bit compilers
mp_int numbers with up to 2^24 mp_digits (max. about 520 Mio bits)
are implemented; if uint64 is available, the configuration
parameter MPC_PurePascal can be used to avoid ASM code.
There is the new fast generalized binomial coefficient function (s_mp_gbinom);
the factorial, binomial, and Catalan functions use prime sieve generators;
and more.
The PurePascalCRC/Hash
routines are now included in the main archive, together with some D17(XE3) and 64-bit adjustments.
The Delphi CRT unit now supports ANSI console output with D17(XE3)
on 32- and 64-bit Windows systems.
Updated util and
PRNG archives with D17/64-bit compatibility changes
Version 1.55 of the standard include file in std.zip
Small D17/64-bit adjustments for some test programs of Crypto archives, mainly
related to D17 unit scope names and 64-bit console mode selection