aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/brick/math/src/Internal/Calculator/NativeCalculator.php')
-rw-r--r--vendor/brick/math/src/Internal/Calculator/NativeCalculator.php28
1 files changed, 23 insertions, 5 deletions
diff --git a/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php b/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php
index d248e6849..a5f8a9b48 100644
--- a/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php
+++ b/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php
@@ -53,6 +53,10 @@ class NativeCalculator extends Calculator
*/
public function add(string $a, string $b) : string
{
+ /**
+ * @psalm-var numeric-string $a
+ * @psalm-var numeric-string $b
+ */
$result = $a + $b;
if (is_int($result)) {
@@ -69,11 +73,7 @@ class NativeCalculator extends Calculator
[$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b);
- if ($aNeg === $bNeg) {
- $result = $this->doAdd($aDig, $bDig);
- } else {
- $result = $this->doSub($aDig, $bDig);
- }
+ $result = $aNeg === $bNeg ? $this->doAdd($aDig, $bDig) : $this->doSub($aDig, $bDig);
if ($aNeg) {
$result = $this->neg($result);
@@ -95,6 +95,10 @@ class NativeCalculator extends Calculator
*/
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)) {
@@ -169,9 +173,11 @@ class NativeCalculator extends Calculator
return [$this->neg($a), '0'];
}
+ /** @psalm-var numeric-string $a */
$na = $a * 1; // cast to number
if (is_int($na)) {
+ /** @psalm-var numeric-string $b */
$nb = $b * 1;
if (is_int($nb)) {
@@ -221,6 +227,8 @@ class NativeCalculator extends Calculator
$e -= $odd;
$aa = $this->mul($a, $a);
+
+ /** @psalm-suppress PossiblyInvalidArgument We're sure that $e / 2 is an int now */
$result = $this->pow($aa, $e / 2);
if ($odd === 1) {
@@ -316,10 +324,14 @@ class NativeCalculator extends Calculator
if ($i < 0) {
$blockLength += $i;
+ /** @psalm-suppress LoopInvalidation */
$i = 0;
}
+ /** @psalm-var numeric-string $blockA */
$blockA = \substr($a, $i, $blockLength);
+
+ /** @psalm-var numeric-string $blockB */
$blockB = \substr($b, $i, $blockLength);
$sum = (string) ($blockA + $blockB + $carry);
@@ -386,10 +398,14 @@ class NativeCalculator extends Calculator
if ($i < 0) {
$blockLength += $i;
+ /** @psalm-suppress LoopInvalidation */
$i = 0;
}
+ /** @psalm-var numeric-string $blockA */
$blockA = \substr($a, $i, $blockLength);
+
+ /** @psalm-var numeric-string $blockB */
$blockB = \substr($b, $i, $blockLength);
$sum = $blockA - $blockB - $carry;
@@ -450,6 +466,7 @@ class NativeCalculator extends Calculator
if ($i < 0) {
$blockALength += $i;
+ /** @psalm-suppress LoopInvalidation */
$i = 0;
}
@@ -463,6 +480,7 @@ class NativeCalculator extends Calculator
if ($j < 0) {
$blockBLength += $j;
+ /** @psalm-suppress LoopInvalidation */
$j = 0;
}