Numerics 0.55 is available for download
The main improvements are:
1) Explicit DLL load is supported by the function
function LoadNumerics(const Name: string = ''): TF_RESULT;
and this is now the recommended method to load the dll because it enables error handling:
if LoadNumerics() < 0 then raise Exception.Create('!!! - DLL load error');
if the LoadNumerics was not called the dll is loaded transparently when needed.
2) More BigInteger functions implemented:
2.1) Integer square root:
class function Sqrt(A: BigInteger): BigInteger; static;
2.2) Euclid algorithm (aka Greatest Common Divisor) and Extended Euclid algorithm:
class function GCD(A, B: BigInteger): BigInteger; static; class function EGCD(A, B: BigInteger; var X, Y: BigInteger): BigInteger; static;
2.3) Modular arithmetic:
class function ModPow(const BaseValue, ExpValue, Modulo: BigInteger): BigInteger; static; class function ModInverse(A, Modulo: BigInteger): BigInteger; static;
Most of the above functions were written while I was doing the programming assignments of the Coursera Cryptography 1 course by prof. Dan Boneh. It was fun to use my own BigInteger implementation.
3) C++ support added. I used free CodeBlocks IDE to port the PiBench console application to C++.
Merry Christmas and Happy New Year!