Very Large Numbers - VLN
This Object Class allows the user to compute to very high
precision. The unique feature of this Object class is that
numbers are supported up to 1000 decimal digits or more,
limited only by available memory. While only integer data
is supported, scaled arithmetic allows numbers to be
used as small as 1 x 10 ^ -1000 or smaller.
Several basic operations are provided such as add,
subtract, multiply and divide. Further useful
operations include 2^n, 10^n, nth-power and nth-Root.
Write Hexadecimal and Write Decimal procedures are included.
Object definition:
))))))))))))))))))))))))))))))))))))))))))
)) ))
)) pWordArray = ^tWordArray ))
)) tWordArray = object ))
)) array[1..vlsize] of word; ))
)) end; ))
)) ))
)) pVryLrgNo =^tVryLrgNo; ))
)) tVryLrgNo = object ))
)) count : integer; ))
)) max : integer; ))
)) sign : integer; ))
)) tVLN : tWordArray; ))
)) ))
)) procedures and functions. ))
)) end; ))
)) ))
))))))))))))))))))))))))))))))))))))))))))
One problem in defining this data type, that can contain
more than a thousand bytes, is that there is no best size
for 'vlsize' the maximum allowed size. Some applications
will need a few numbers of immense size while others will
need many but not so big.
The user, if he does nothing special may use the default size
of 1000 words (which allows 5300 decimal digits) for all variables
in his program.
A way is illustrated to use less memory assuming he knows how large
the numbers will actually be. This method uses
GETMEM( name, size)
In the process of initializing a VLN variable, the programmer also
specifies 'MAX' the maximum size expected and this is tested in
all arithmetic procedures.
The main program is responsible for OpenTempRegs at the start
and CloseTempRegs at the end as well as disposing of any dynamic
variables that are created. This is to allow the user to specify maximum
size of the VLN
|