Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. NativeCalculator.php

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\Calculator

Code

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;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal