Skip to content
Plugins (183)

bignum

stable

Arbitrary-precision integer arithmetic using base-10^9 digit arrays, supporting addition, subtraction, multiplication, division, power, GCD, and comparisons on numbers of any size.

use plugin bignum::{from_string, from_int, add, …}
12 functions Math
Runs with the native Zolo host

Plugin snippets can be edited in the Playground, but native capabilities are executed locally with the Zolo CLI.

/ filter jk navigate Esc clear
Functions (12)
  1. from_string Parses a decimal string (optionally prefixed with + or -) into a BigNum.
  2. from_int Creates a BigNum from a native Zolo integer.
  3. add Adds two BigNum values and returns a new BigNum.
  4. sub Subtracts b from a and returns a new BigNum.
  5. mul Multiplies two BigNum values using schoolbook multiplication.
  6. div Integer division truncated toward zero.
  7. rem Returns the remainder after integer division.
  8. pow Raises a BigNum to a non-negative integer exponent using fast exponentiation.
  9. gcd Computes the greatest common divisor of two BigNums using Euclidean algorithm.
  10. compare Returns -1 if a < b, 0 if a == b, or 1 if a > b.
  11. to_string Converts a BigNum back to its decimal string representation.
  12. digit_count Returns the number of decimal digits in the BigNum (excluding sign).

From import to result

  1. 01Import only what you use
  2. 02Copy the smallest example
  3. 03Run it with the Zolo CLI

Parses a decimal string (optionally prefixed with + or -) into a BigNum.

Parses a decimal string (optionally prefixed with + or -) into a BigNum. Use this when you have a large number that exceeds native integer range.

use plugin bignum::{from_string, to_string, add}

let a = from_string("999999999999999999999999999999")
let b = from_string("1")
let result = add(a, b)
print(to_string(result))

Creates a BigNum from a native Zolo integer.

Creates a BigNum from a native Zolo integer. Useful when starting arithmetic that will grow beyond native int bounds.

use plugin bignum::{from_int, mul, to_string}

let n = from_int(1000000)
let squared = mul(n, n)
print(to_string(squared))

Adds two BigNum values and returns a new BigNum.

Adds two BigNum values and returns a new BigNum. Handles mixed signs correctly.

use plugin bignum::{from_string, add, to_string}

let x = from_string("123456789012345678901234567890")
let y = from_string("987654321098765432109876543210")
print(to_string(add(x, y)))

Subtracts b from a and returns a new BigNum.

Subtracts b from a and returns a new BigNum.

use plugin bignum::{from_string, sub, to_string}

let x = from_string("1000000000000000000000")
let y = from_string("1")
print(to_string(sub(x, y)))

Multiplies two BigNum values using schoolbook multiplication.

Multiplies two BigNum values using schoolbook multiplication.

use plugin bignum::{from_int, mul, to_string}

let factorial = from_int(1)
let i = from_int(1)
let limit = from_int(20)
// compute 20! manually
print(to_string(mul(from_int(2432902008176640000), from_int(1))))

Integer division truncated toward zero.

Integer division truncated toward zero. Raises an error on division by zero.

use plugin bignum::{from_string, div, to_string}

let a = from_string("1000000000000000000000")
let b = from_string("7")
print(to_string(div(a, b)))

Returns the remainder after integer division.

Returns the remainder after integer division. Sign matches the dividend.

use plugin bignum::{from_string, rem, to_string}

let a = from_string("1000000000000000000007")
let b = from_string("7")
print(to_string(rem(a, b)))

Raises a BigNum to a non-negative integer exponent using fast exponentiation.

Raises a BigNum to a non-negative integer exponent using fast exponentiation.

use plugin bignum::{from_int, pow, to_string, digit_count}

let two = from_int(2)
let p = pow(two, 100)
print("2^100 has {digit_count(p)} digits: {to_string(p)}")

Computes the greatest common divisor of two BigNums using Euclidean algorithm.

Computes the greatest common divisor of two BigNums using Euclidean algorithm.

use plugin bignum::{from_string, gcd, to_string}

let a = from_string("123456789012345678901234567890")
let b = from_string("987654321098765432109876543210")
print(to_string(gcd(a, b)))

Returns -1 if a < b, 0 if a == b, or 1 if a > b.

Returns -1 if a < b, 0 if a == b, or 1 if a > b. Useful for sorting or conditional logic.

use plugin bignum::{from_string, compare}

let a = from_string("999999999999999")
let b = from_string("1000000000000000")
let ord = compare(a, b)
print("order: {ord}")

Converts a BigNum back to its decimal string representation.

Converts a BigNum back to its decimal string representation.

use plugin bignum::{from_string, pow, to_string}

let base = from_string("10")
let result = pow(base, 50)
print(to_string(result))

Returns the number of decimal digits in the BigNum (excluding sign).

Returns the number of decimal digits in the BigNum (excluding sign).

use plugin bignum::{from_string, pow, from_int, digit_count}

let two = from_int(2)
let p = pow(two, 1000)
print("2^1000 has {digit_count(p)} decimal digits")

Global index

Find your way through Zolo

Try an idea

Start here

9 results

9 results

en