Numerics 0.55 released

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!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s