Perhaps some one can find useful this function to compute the modular inverse of a integer (extended euclidean algorithm):
function invmod($a,$b) {
$n=$b;
$x=0; $lx=1; $y=1; $ly=0;
while ($b) {
$t=$b;
$q=bcdiv($a,$b,0);
$b=bcmod($a,$b);
$a=$t;
$t=$x; $x=bcsub($lx,bcmod(bcmul($q,$x),$n)); $lx=$t;
$t=$y; $y=bcsub($ly,bcmod(bcmul($q,$y),$n)); $ly=$t;
}
if (bccomp($lx,0) == -1)
$lx=bcadd($lx,$n);
return $lx;
}
// verify
$n="2447995268898324993537772139997802321";
$t="64941057316178801556773346239351236811";
$m="123456789";
$i=invmod($t,$n);
// (t*m)*inv(t) is m
echo bcmod(bcmul(bcmod(bcmul($t,$m),$n),$i),$n) == $m;
PHP.mk документација
bcdiv
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
function.bcdiv.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
function.bcdiv.php
bcdiv
Референца за `function.bcdiv.php` со подобрена типографија и навигација.
bcdiv
(PHP 4, PHP 5, PHP 7, PHP 8)
bcdiv — Подели два броја со произволна прецизност
Параметри
num1-
Деливото, како стринг.
num2-
Делителот, како стринг.
scale-
Овој параметар се користи за поставување на бројот на цифри по децималната точка во резултатот. Ако
null, тоа ќе се стандардно постави на стандардната скала поставена со bcscale(), или ќе се врати на вредноста наbcmath.scaleINI директивата.
Вратени вредности
Враќа резултат од делењето како стринг.
Errors/Exceptions
Оваа функција фрла ValueError во следниве случаи:
-
num1ornum2не е добро формиран BCMath нумерички стринг. -
scaleе надвор од валидниот опсег.
Оваа функција фрла DivisionByZeroError
Враќа асоцијативен низ со клучеви црвена, зелена, сина и алфа кои ги содржат соодветните вредности за одредениот индекс на бојата. num2 is 0.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
scale сега е null.
|
| 8.0.0 |
Делење со 0 сега фрла
DivisionByZeroError исклучок наместо враќање null.
|
Примери
Пример #1 bcdiv() example
<?php
echo bcdiv('105', '6.55957', 3); // 16.007
?>Види Исто така
- bcdivmod() - Земи го количникот и остатокот од број со произволна прецизност
- bcmod() - Земи модул од произволен број со прецизност
- bcmul() - Помножи два броја со произволна прецизност
- BcMath\Number::div() - Дели со број со произволна прецизност
Белешки од корисници 1 белешка
MM ¶
пред 18 години