function NativeCalculator::mul
Overrides Calculator::mul
2 calls to NativeCalculator::mul()
- NativeCalculator::modPow in vendor/
brick/ math/ src/ Internal/ Calculator/ NativeCalculator.php - Algorithm from: https://www.geeksforgeeks.org/modular-exponentiation-power-in-modular-a…
- NativeCalculator::pow in vendor/
brick/ math/ src/ Internal/ Calculator/ NativeCalculator.php - Exponentiates a number.
File
-
vendor/
brick/ math/ src/ Internal/ Calculator/ NativeCalculator.php, line 76
Class
- NativeCalculator
- Calculator implementation using only native PHP code.
Namespace
Brick\Math\Internal\CalculatorCode
public function mul(string $a, string $b) : string {
/**
* @psalm-var numeric-string $a
* @psalm-var numeric-string $b
*/
$result = $a * $b;
if (is_int($result)) {
return (string) $result;
}
if ($a === '0' || $b === '0') {
return '0';
}
if ($a === '1') {
return $b;
}
if ($b === '1') {
return $a;
}
if ($a === '-1') {
return $this->neg($b);
}
if ($b === '-1') {
return $this->neg($a);
}
[
$aNeg,
$bNeg,
$aDig,
$bDig,
] = $this->init($a, $b);
$result = $this->doMul($aDig, $bDig);
if ($aNeg !== $bNeg) {
$result = $this->neg($result);
}
return $result;
}