XXXVI. Функции GMP
Эти функции позволяют работать целыми числами произвольной точности с
использованием библиотеки GNU MP. Эти функции были введены в PHP 4.0.4.
Примечание: Большей частью функций GMP принимают GMP-количество аргументов,
определённое далее как resource. Однако большая часть этих функций принимает также числовые и строковые
аргументы, которые можно можно конвертировать в числа. Также,
если если имеется более быстрая функция, работающая с целочисленными аргументами,
она может использоваться вместо более медленной функции, если
предоставляемые аргументы являются целыми числами. Это делается прозрачно,
так что вы можете использовать целые числа в каждой функции, ожидающей GMP-числа. См. также
функцию gmp_init().
Предупреждение! |
---|
Если вы хотите явно специфицировать большое целое число,
специфицируйте его как строку. Если вы это не сделаете, PHP будет
интерпретировать сначала целочисленный литерал, возможно, с потерей
точности, даже перед использованием GMP. |
Вы можете загрузить библиотеку GMP с https://www.swox.com/gmp/. Этот сайт содержит также учебник по
GMP. Вам понадобится версия GMP 2 или новее для использования этих функций.
Некоторые функции могут потребовать использования самой последней версии библиотеки GMP.
Чтобы эти функции работали, вы обязаны скомпилировать PHP с поддержкой
GMP, используя опцию --with-gmp.
Это расширение не определяет никаких директив конфигурации.
Это расширение не определяет никакие типы ресурсов.
Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.
- GMP_ROUND_ZERO (integer)
- GMP_ROUND_PLUSINF (integer)
- GMP_ROUND_MINUSINF (integer)
Пример 1. Функция вычисления факториала с использованием GMP
<?php
function fact ($x) {
if ($x <= 1)
return 1;
else
return gmp_mul ($x, fact ($x-1));
}
print gmp_strval (fact (1000)) . "\n";
?> | |
Факториал 1000 будет вычислен (довольно большое число) весьма быстро.
Математические функции можно найти найти также в разделах
Математические функции BCMath произвольной точности и Математические функции.
- Содержание
- gmp_abs - абсолютное значение
- gmp_add - складывает числа
- gmp_and - логическое AND
- gmp_clrbit - очищает бит
- gmp_cmp - сравнивает числа
- gmp_com - высчитывает дополнение/complement a
- gmp_div_q - делит числа
- gmp_div_qr - делит числа и получает частное и остаток
- gmp_div_r - остаток от деления чисел
- gmp_div - делит числа
- gmp_divexact - точное деление чисел
- gmp_fact - факториал
- gmp_gcd - вычисляет GCD
- gmp_gcdext - вычисляет GCD и множители
- gmp_hamdist - Hamming distance (математики, переводите...)
- gmp_init - создаёт GMP-число
- gmp_intval - конвертирует GMP-число в целое/integer
- gmp_invert - инвертирует по modulo
- gmp_jacobi - символ Jacobi
- gmp_legendre - символ Legendre
- gmp_mod - операция Modulo
- gmp_mul - умножает числа
- gmp_neg - отрицает число
- gmp_or - логическое OR
- gmp_perfect_square - проверка точности квадрата
- gmp_popcount - счёт заполнения
- gmp_pow - возводит число в степень
- gmp_powm - возводит число в степень с modulo
- gmp_prob_prime - проверяет, является ли число "probably prime"
- gmp_random - случайное число
- gmp_scan0 - сканирует 0
- gmp_scan1 - сканирует 1
- gmp_setbit - устанавливает бит
- gmp_sign - знак числа
- gmp_sqrt - квадратный корень
- gmp_sqrtrm - квадратный корень с остатком
- gmp_strval - конвертирует GMP-число в строку
- gmp_sub - вычитает числа
- gmp_xor - логическое XOR
|