Full Basic version. The library source code and precompiled QuickLibraries
for QuickBasic 4.5, PDS 7.1 and Visual Basic for Dos 1.0 are packed with
the largeint demo modules. Includes a library version for the new,
32-bit Linux/Windows FreeBasic 1.06.0 compiler.
Version w/date 06-06-2009:
Sub 'Mult p, q, r' returns its result in r now,
leaving p unchanged. Added wrappers 'Lmul p, q' and 'Ldiv p, d'
to return results in left argument p.
Renamed function Decf(p) to Bufl(p) for (string)bufferlength,
sub 'CnvSt g, p' needs largeint p as second argument.
Sub Isqrt now uses the binomial (Ibn al-Banna) algorithm,
a third argument is added to return residue p - r^2.
Rewrote 'Ratdec g, p, q' as 'RatCnv g, p, q, b', where
b is added to expand p / q in any base from 2 through 17,
the string of base b-digits is in exponential format.
Sub 'Printr p, q, f, k, sw' has a CrLf-switch added.
Sub 'Readst p, g' also accepts hexadecimal string g now.
Added function LibErr to handle run-time error codes.
Fixed Logf(p) bug: used only 45 largeint bits.
Arranged all library subroutines in hierarchical order,
removed $-suffixes on string functions (quickbasic remnant).
Replaced all 'ByVal arg AS STRING' occurrences (passing string
address) with 'ByVal arg AS ZSTRING PTR' (more accurately
reflecting the actual goings on while retaining VB compatibility).
Replaced module-level DEF###'s with the $LANG "qb" metacommand
and a single DEF-line in the -lang QB section of largeint.bi.
Rewrote PowrModC.bas, PowrMtrx.bas and SquFoFac.bas,
replaced BigLog.bas with Transcnd.bas, added Pmpqs.bas.
date 01-06-2009, FB version 0.20.0 (aug. 2008):
Rewrote the library in a simpler, more flexible form.
The size of the largeint number array is set at 95 Kb,
length and sign are both encoded in the initial word,
the sign of a negative number is now -32768, else zero,
internal constants are moved from the include file to LargeInt.bas
changed array i() type INTEGER to SHORT PTR for leaner binaries.
Added integer functions Divint(p, a) and Odd(p),
stripped argument d from function Kronec(p, q, d),
also 5th argument h from sub 'Printr p, q, r, f, h',
renamed subroutine 'Copyf p, q' to 'Dup p, q', also the
Gete/ Sete pair to Getw/ Setw in both library and modules,
removed 'Dcr p, a', as 'Inc p, a' has signed argument a now,
sub 'Isqrt p, q' doubles root length each iteration step,
sub 'Bezout p, q, d' gives shorter return values,
and function Nxtprm(sw) is 3 times reentrant.
Added modules LLL_Hnf.bas and LLL_int.bas
date 01-15-2008, FB version 0.18.3 (dec. 2007):
Added modules RadpAdic.bas, CFracFac.bas, BernPoly.bas and subroutine Work.
In the library changed LONG to INTEGER, INTEGER to SHORT
to be compatible with the modules' -lang qb 16-bit INTEGER's.
Memory is used more economically now, the drawback is that -lang qb
doesn't recognize SHORT, so the project needs two include files:
largeint.fbi for building the library, largeint.bi for
compiling the QB-modules and linking with the dll.
This material cannot be compiled with previous FB versions.
date 05-05-2007, FB version 0.17b:
In the library all variables are explicitly declared now;
moved DEF###'s to the modules.
The library must be compiled in default fb-mode,
all modules must be compiled with the '-lang qb' option.
Added constant Asize in include-file largeint.bi to set number array memory usage.
Added modules LDioSyst.bas and ZnStruct.bas
date 01-30-2007, FB version 0.16b:
The library uses ByVal-strings now, instead of ByRef Byte-pointers,
so you'll have to recompile every existing FB or VB largeint module
that calls the new largeint.dll or bignumVB.dll binaries.
Also, the module names are all-lowercase now,
which should facilitate using this package under Linux.
Changed the name of subroutine 'Init()' to 'LargeInit()'
Removed subroutines Andf, DecLSB, Pwr2, Pwr10
Added subroutines
Absf%, Bezout, Bitl%, Boolf, Gcd, Lcm, Logf#, Mp2%, Powr, Triald, EnQ, ExQ%
Fixed a bug in function Kronec%
Rewrote SquFoFac.bas, EllCrvFr.bas, PrimRoot.bas and TrialDiv.bas using the new Sub's.
Rewrote Genrator.bas, Encoder.bas and Decoder.bas to comply with laboratory standards.
Added modules GaussInt.bas and PowrModc.bas using Gaussian integers; modules FormTabl.bas,
QuadForm.bas, Reprsent.bas and PowrQfb.bas for computing with binary quadratic forms.
S.J.S.