Bigint
Must be included via require
.
bigint.new
To instantiate a bigint, you can call the bigint.new
function, or use the new
operator.
Parameters
- The decimal value of the bigint.
pluto
local bigint = require "pluto:bigint"print(new bigint("123")) --> 123
bigint.tostring
, __tostring
As seen above, the __tostring
metamethod provides a string representation of the Bigint in decimal.
bigint.hex
Provides a hexadecimal representation of the Bigint.
pluto
local bigint = require "pluto:bigint"print(new bigint("420"):hex()) --> 1A4
bigint.binary
Provides a binary representation of the Bigint.
pluto
local bigint = require "pluto:bigint"print(new bigint("420"):binary()) --> 110100100
bigint.add
, __add
Adds two bigints together. Returns a new bigint.
bigint.sub
, __sub
Performs subtraction on two bigints. Returns a new bigint.
bigint.mul
, __mul
Performs multiplication on two bigints. Returns a new bigint.
bigint.div
Performs division on two bigints. Returns two new bigints: quotient and remainder.
pluto
local bigint = require "pluto:bigint"print(new bigint(10):div(new bigint(3))) --> 3 1
__div
Performs division on two bigints. Returns a new bigint with the quotient.
pluto
local bigint = require "pluto:bigint"print(new bigint(10) / new bigint(3)) --> 3
bigint.mod
, __mod
Performs divison on two bigints. Returns a new bigint with the remainder.
pluto
local bigint = require "pluto:bigint"print(new bigint(10) % new bigint(3)) --> 1
__unm
Returns a new bigint with the sign bit flipped.
pluto
local bigint = require "pluto:bigint"print(-new bigint(10)) --> -10
bigint.abs
Returns a new bigint with the sign bit zeroed.
pluto
local bigint = require "pluto:bigint"print(new bigint(-10):abs()) --> 10
bigint.pow
, __pow
Performs expontentiation on two bigints. Returns a new bigint.
pluto
local bigint = require "pluto:bigint"print(new bigint(2) ^ new bigint(10)) --> 1024
bigint.gcd
Computes the greates common divisor shared by 2 bigints.
pluto
local bigint = require "pluto:bigint"print(bigint.new(48):gcd(bigint.new(18))) --> 6
bigint.bitlength
Returns the position of the most significant set bit as a plain integer.
pluto
local bigint = require "pluto:bigint"print(new bigint(420):bitlength()) --> 9
bigint.isprobableprime
Non-deterministically check if a number is prime.
Parameters
- The bigint.
- Number of Miller-Rabin iterations to perform.
pluto
local bigint = require "pluto:bigint"print(new bigint(91):isprobableprime(10)) --> false
bigint.export
Exports the bigint to a big-endian binary string.
Parameters
- The bigint.
- The minimum number of bytes to return.
pluto
local bigint = require "pluto:bigint"print(new bigint("1056"):export():tohex()) --> 0420print(new bigint("1056"):export(4):tohex()) --> 00000420
bigint.import
Creates a bigint from a big-endian binary string.
pluto
local bigint = require "pluto:bigint"print(bigint.import("\x04\x20"):tostring()) --> 1056print(bigint.import("\x00\x00\x04\x20"):tostring()) --> 1056