update README

This commit is contained in:
Reza Behzadan 2020-05-16 18:42:37 +04:30
parent 0e6df8c5e7
commit 273f56ac1d

View File

@ -0,0 +1,85 @@
# BigIntLua
Pure Lua library for working with big integers
# Usage
```lua
BigInt = require 'bigint'
-- constructor accepts a number
a1 = BigInt(562949953421312)
-- or a string
a2 = BigInt'562949953421312'
-- or a string with thousands separator of ',' or whitespace
a3 = BigInt'562,949,953,421,312'
a4 = BigInt'562 949 953 421 312'
a1 == a2 --> true
a1 == a3 --> true
a3 == a4 --> true
-- you can compare them
a = BigInt'8,796,093,022,208'
b = BigInt'562,949,953,421,312'
c = BigInt'39,614,081,257,132,168,796,771,975,168'
a == a1 --> true
a <= a1 --> true
a == b --> false
a <= b --> true
c > a --> true
-- NOTE: equality test works only with two BigInts
a = BigInt'562949953421312'
a == 562949953421312 --> false
-- NOTE: other comparisons between Lua Numbers and BigInts are ok
a = BigInt'56294995342'
a <= 56294995342 --> true
a > 12323 --> true
a >= 56294995342 --> true
32423412312 < a --> true
32423412312 > a --> false
-- four arithmetic operations
a = BigInt'1,099,511,627,776' -- 2 ^ 40
b = BigInt'1,125,899,906,842,624' -- 2 ^ 50
a + b --> 1126999418470400
a - b --> -1124800395214848
a * b --> 1237940039285380274899124224
a / b --> 0
b / a --> 1024
-- negation
a = BigInt'562949953421312'
b = -a --> -562949953421312
a + b --> 0
-- divmod
a = BigInt'1,099,511,627,776' -- 2 ^ 40
b = BigInt'1,125,899,906,842,625' -- 2 ^ 50 + 1
b:divmod(b, a) --> 1024, 1
-- power
a = BigInt(2)
a ^ 95 --> 39614081257132168796771975168
```
# TODO
- Optional thousands separator in `tostring()` function.
- GCD and LCD
- Base conversion
- Prime check
- Prime factorization
# See also
- [https://github.com/user-none/lua-nums]()
- [https://github.com/empyreuma/bigint.lua]()
- [https://github.com/thenumbernine/lua-bignumber]()
- [https://github.com/A-Benlolo/BigInteger.lua]()