# Very Large Unsigned (VLU) Integer Arithmatic

## Description of VLU numbers.

The digits are base 65536 (2^16). Each digit is an element in a
dword array. The least significant digit (right most) is the element value times
65536^{0}. The next digit to the left is the value times
65536^{1}, next after that is value times 65536^{2}, and so
on. With 63 digits, that is 1008 bits; and the array can have many more digits.
Using zero based element indexing, the indexes and exponents are the same number.
The word size of a VLU digit in dwords allows keeping carry bits. Worst case
carry is hFFFF times hFFFF equals hFFFE0001, which is 32bits. The upper 16 bits
are added to the next digit then masked out (carried).

For now VLU is coded for PowerBASIC, a 32 bit compiler. With the
algorithms worked out, changing variable size is easy.

## Arithmatic Operations Implemented

There are 5 basic operations:

VLU Addition

VLU Subtraction

VLU Multiplication

VLU Division

VLU Square Root

## Support Operations

When used by the arithmatic operation functions the code here is
copied into them. These may also be useful as separate functions, and testing
was less complicated.

VLU Trim to MSD

VLU Compare (>, = or <)

Created on 20 December 2021; last edit 20 Dec 2021.