= 0; $i--) { $tmp = intval($a[$i]) + intval($b[$i]) + $mente; $res = strval($tmp % RADIX) . $res; $mente = $tmp / RADIX; } return $res; } function isub($a, $b) { $res = ""; $borrow = 0; for($i = LENGTH - 1; $i >= 0; $i--) { $tmp = intval($a[$i]) - intval($b[$i]) - $borrow; if($tmp < 0) { $tmp += RADIX; $borrow = 1; } else { $borrow = 0; } $res = strval($tmp) . $res; } return $res; } function iscale($v, $n) { $res = ""; $mente = 0; for($i = LENGTH - 1; $i >= 0; $i--) { $tmp = $n * intval($v[$i]) + $mente; $res = strval($tmp % RADIX) . $res; $mente = $tmp / RADIX; } return $res; } function imul($a, $b) { $res = izero(); for($i = LENGTH - 1; $i >= 0; $i--) { $res = iadd($res, ishiftl(iscale($a, intval($b[$i])), LENGTH - $i - 1)); } return $res; } function ieq($a, $b) { return $a == $b; } function ine($a, $b) { return !ieq($a, $b); } function ile($a, $b) { for($i = 0; $i < LENGTH; $i++) { if(intval($a[$i]) < intval($b[$i])) { return TRUE; } if(intval($a[$i]) > intval($b[$i])) { return FALSE; } } return TRUE; } function ilt($a, $b) { for($i = 0; $i < LENGTH; $i++) { if(intval($a[$i]) < intval($b[$i])) { return TRUE; } if(intval($a[$i]) > intval($b[$i])) { return FALSE; } } return FALSE; } function igt($a, $b) { return !ile($a, $b); } function ige($a, $b) { return !ilt($a, $b); } function idiv($a, $b) { if(ilt($a, $b)) { return izero(); } else { $tmp = ione(); while(ile(imul($b, ishiftl($tmp, 1)), $a)) $tmp = ishiftl($tmp, 1); return iadd($tmp, idiv(isub($a, imul($tmp, $b)), $b)); } } echo iadd("0077", "0129") . "\n"; echo isub("0129", "0077") . "\n"; echo imul("0011", "0013") . "\n"; echo idiv("0177", "0005") . "\n"; ?>