note 72704 added to function.bcpowmod
| From: | laysoft at gmail dot com | Date: | Tue, 30 Jan 2007 13:34:37 +0000 |
| Subject: | note 72704 added to function.bcpowmod | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-122353@lists.php.net to get a copy of this message | ||
I found a better way to emulate bcpowmod on PHP 4, which works with very big numbers too:
function powmod($m,$e,$n) {
if (intval(PHP_VERSION)>4) {
return(bcpowmod($m,$e,$n));
} else {
$r="";
while ($e!="0") {
$t=bcmod($e,"4096");
$r=substr("000000000000".decbin(intval($t)),-12).$r;
$e=bcdiv($e,"4096");
}
$r=preg_replace("!^0+!","",$r);
if ($r=="") $r="0";
$m=bcmod($m,$n);
$erb=strrev($r);
$q="1";
$a[0]=$m;
for ($i=1;$i<strlen($erb);$i++) {
$a[$i]=bcmod(bcmul($a[$i-1],$a[$i-1]),$n);
}
for ($i=0;$i<strlen($erb);$i++) {
if ($erb[$i]=="1") {
$q=bcmod(bcmul($q,$a[$i]),$n);
}
}
return($q);
}
}
----
Server IP: 69.147.83.197
Probable Submitter: 89.132.88.122
----
Manual Page -- http://www.php.net/manual/en/function.bcpowmod.php
Edit -- https://master.php.net/note/edit/72704
Del: integrated -- https://master.php.net/note/delete/72704/integrated
Del: useless -- https://master.php.net/note/delete/72704/useless
Del: bad code -- https://master.php.net/note/delete/72704/bad+code
Del: spam -- https://master.php.net/note/delete/72704/spam
Del: non-english -- https://master.php.net/note/delete/72704/non-english
Del: in docs -- https://master.php.net/note/delete/72704/in+docs
Del: other reasons-- https://master.php.net/note/delete/72704
Reject -- https://master.php.net/note/reject/72704
Search -- https://master.php.net/manage/user-notes.php