This is a library for working with numbers of arbitrarily finite size.
Int primitive is a member of the
Bounded typeclass, with
top == 2 ^ 31 - 1 and
bottom == - (2 ^ 32).
Number primitive is not
Bounded in the same way; however, there are problems with manipulating large-enough
> import Prelude > let x = 900000000000000000.0 > :t x Number > x + 1.0 == x true > x + 1.0 900000000000000000
In this library, correctness is prioritized above all else:
> import Data.HugeNum > let x = fromNumber 900000000000000000.0 > let y = fromNumber 1.0 > x + y == x false > x + y HugeNum 900000000000000001.0
Addition is implemented using an elementary-school method. Multiplication follows Karatsuba.
Available on pursuit.
There is also a newtype for integral values in
bower install purescript-hugenums