You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document records the functions of the PHP GMP extension that have not yet been implemented in the BigInt type, as a reference for future development.
Statistics
The GMP extension has 44 functions in total (excluding gmp_init and the alias gmp_div). 17 are covered, 27 are not covered.
Implemented
GMP function
BigInt method / operator
Description
gmp_init
std::bigInt()
construction
gmp_add
add() / +
addition
gmp_sub
sub() / -
subtraction
gmp_mul
mul() / *
multiplication
gmp_div_q
div() / /
division (quotient)
gmp_div_r
mod() / %
division (remainder)
gmp_div_qr
divmod()
quotient and remainder
gmp_mod
mod() / %
modulo
gmp_pow
pow()
power
gmp_powm
powmod()
modular exponentiation
gmp_neg
neg() / - (unary)
negation
gmp_abs
abs()
absolute value
gmp_sqrt
sqrt()
square root
gmp_gcd
gcd()
greatest common divisor
gmp_cmp
cmp() / <=>
comparison
gmp_and
bitAnd() / &
bitwise AND
gmp_or
bitOr() / |
bitwise OR
gmp_xor
bitXor() / ^
bitwise XOR
gmp_com
bitNot() / ~
bitwise NOT
gmp_testbit
testBit()
bit test
gmp_popcount
popCount()
population count
gmp_intval
toInt()
to int
gmp_strval
toString()
to string
Not implemented (sorted by priority)
High priority — commonly used number-theory functions
GMP function
Suggested method name
Signature
Description
gmp_sign
sign()
(): int
sign, returns -1/0/1
gmp_lcm
lcm($x)
(BigInt): BigInt
least common multiple
gmp_perfect_square
perfectSquare()
(): bool
whether it is a perfect square
gmp_perfect_power
perfectPower()
(): bool
whether it is a perfect power
gmp_prob_prime
probPrime($reps = 10)
(int): int
probabilistic primality test (Miller-Rabin)
gmp_nextprime
nextPrime()
(): BigInt
next prime
gmp_binomial
binomial($k)
(int): BigInt
binomial coefficient C(n, k)
gmp_fact
fact()
(): BigInt
factorial n!
Medium priority — advanced number-theory functions
GMP function
Suggested method name
Signature
Description
gmp_gcdext
gcdext($x)
(BigInt): array
extended GCD, returns [g, s, t] such that g = s·a + t·b
gmp_invert
invert($mod)
(BigInt): BigInt|false
modular inverse, returns false when it does not exist
gmp_sqrtrem
sqrtrem()
(): array
square root + remainder, returns [root, rem]
gmp_jacobi
jacobi($x)
(BigInt): int
Jacobi symbol
gmp_legendre
legendre($x)
(BigInt): int
Legendre symbol
gmp_kronecker
kronecker($x)
(BigInt): int
Kronecker symbol
Low priority — less commonly used
GMP function
Suggested method name
Signature
Description
gmp_divexact
divExact($x)
(BigInt): BigInt
exact division (used when divisibility is known; faster than ordinary division)
gmp_root
root($n)
(int): BigInt
n-th root (truncated)
gmp_rootrem
rootrem($n)
(int): array
n-th root + remainder
gmp_hamdist
hamDist($x)
(BigInt): int
Hamming distance
Not applicable — conflicts with the immutable design
GMP function
Reason
gmp_setbit
directly modifies the GMP object; BigInt is immutable
gmp_clrbit
directly modifies the GMP object; BigInt is immutable
To be evaluated
GMP function
Description
gmp_scan0
finds the first 0 bit from the specified position
gmp_scan1
finds the first 1 bit from the specified position
gmp_random_bits
generates a random-bit BigInt (needs a global seed; not suitable as an instance method)
gmp_random_range
random BigInt in a range (needs a global seed; not suitable as an instance method)
gmp_random_seed
sets the random seed (global state; not suitable as an instance method)
gmp_import
imports from a binary string
gmp_export
exports to a binary string
toString enhancement
Missing feature
Description
toString($base)
the current toString() only supports decimal. GMP's gmp_strval supports base 2-62 output
Update log
2026-05-27: initial version, compared against PHP 8.4.14 GMP extension