function CalculateLargeNumbersPower($base, $exponent) {
$digits = [1]; // Least significant digit first
for ($i = 0; $i < $exponent; $i++) {
$carry = 0;
for ($j = 0; $j < count($digits); $j++) {
$num = $digits[$j] * $base + $carry;
$digits[$j] = $num % 10;
$carry = intdiv($num, 10);
}
while ($carry > 0) {
$digits[] = $carry % 10;
$carry = intdiv($carry, 10);
}
}
$result = "";
foreach ($digits as $d) {
$result .= $d;
}
return strrev($result);
}
$base = 2; $exponent = 15;
echo "2^$exponent = " . CalculateLargeNumbersPower($base, $exponent) . PHP_EOL;
$base = 2; $exponent = 100;
echo "2^$exponent = " . CalculateLargeNumbersPower($base, $exponent) . PHP_EOL;
/*
run:
2^15 = 32768
2^100 = 1267650600228229401496703205376
*/