HugeInt
An advanced numerical data type designed to handle very large integers.
Declaration
The HugeInt
type supports integers up to 4096 bits. Here's how you can declare a HugeInt
:
h = 0x123456789abcdef # HugeInt declaration
HugeInt
is always expressed in hexadecimal format
Operating HugeInts
HugeInt
supports a variety of operations, making it versatile for complex calculations:
==
equal!=
not equal+
plus-
minus*
multiply/
divide%
modulus**
power<
less<=
less or equal>
more>=
more or equal&
logical AND|
logical OR
Caveats
In FatScript, HugeInt
is specifically designed as an unsigned type, and thus it can only represent positive values.
Interactions between HugeInt
and other numeric types, such as Number, are not directly available. To perform such operations, you should convert the value to HugeInt
using its constructor (available through the prototype extensions).
Precision
HugeInt
offers high precision for very large integers, essential in fields like cryptography and large-scale computations. This precision remains consistent across its entire range.
prime = 0xfffffffffffffffc90fdA... # a large prime number
Contrary to floating-point numbers, HugeInt
represents discrete integer values, maintaining consistent precision and spacing throughout its range:
0_____________________________________max.
| | | | | | | | | | | | | | overflow!
the maximum value is 2^4096 - 1, equivalent to a number with 1233 decimal digits or the 0xfff... literal (with 1024 repetitions of the letter f)
HugeInt
is particularly well-suited for scenarios that demand exact integer arithmetic without rounding errors, especially when dealing with values far beyond the limits of Number type. It is important to ensure that all operations remain within its supported capacity, as exceeding this limit will raise a ValueError
.