[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/vendor/brick/math/src/Internal/Calculator/ -> GmpCalculator.php (source)

   1  <?php
   2  
   3  declare(strict_types=1);
   4  
   5  namespace Brick\Math\Internal\Calculator;
   6  
   7  use Brick\Math\Internal\Calculator;
   8  
   9  /**
  10   * Calculator implementation built around the GMP library.
  11   *
  12   * @internal
  13   *
  14   * @psalm-immutable
  15   */
  16  class GmpCalculator extends Calculator
  17  {
  18      /**
  19       * {@inheritdoc}
  20       */
  21      public function add(string $a, string $b) : string
  22      {
  23          return \gmp_strval(\gmp_add($a, $b));
  24      }
  25  
  26      /**
  27       * {@inheritdoc}
  28       */
  29      public function sub(string $a, string $b) : string
  30      {
  31          return \gmp_strval(\gmp_sub($a, $b));
  32      }
  33  
  34      /**
  35       * {@inheritdoc}
  36       */
  37      public function mul(string $a, string $b) : string
  38      {
  39          return \gmp_strval(\gmp_mul($a, $b));
  40      }
  41  
  42      /**
  43       * {@inheritdoc}
  44       */
  45      public function divQ(string $a, string $b) : string
  46      {
  47          return \gmp_strval(\gmp_div_q($a, $b));
  48      }
  49  
  50      /**
  51       * {@inheritdoc}
  52       */
  53      public function divR(string $a, string $b) : string
  54      {
  55          return \gmp_strval(\gmp_div_r($a, $b));
  56      }
  57  
  58      /**
  59       * {@inheritdoc}
  60       */
  61      public function divQR(string $a, string $b) : array
  62      {
  63          [$q, $r] = \gmp_div_qr($a, $b);
  64  
  65          return [
  66              \gmp_strval($q),
  67              \gmp_strval($r)
  68          ];
  69      }
  70  
  71      /**
  72       * {@inheritdoc}
  73       */
  74      public function pow(string $a, int $e) : string
  75      {
  76          return \gmp_strval(\gmp_pow($a, $e));
  77      }
  78  
  79      /**
  80       * {@inheritdoc}
  81       */
  82      public function modInverse(string $x, string $m) : ?string
  83      {
  84          $result = \gmp_invert($x, $m);
  85  
  86          if ($result === false) {
  87              return null;
  88          }
  89  
  90          return \gmp_strval($result);
  91      }
  92  
  93      /**
  94       * {@inheritdoc}
  95       */
  96      public function modPow(string $base, string $exp, string $mod) : string
  97      {
  98          return \gmp_strval(\gmp_powm($base, $exp, $mod));
  99      }
 100  
 101      /**
 102       * {@inheritdoc}
 103       */
 104      public function gcd(string $a, string $b) : string
 105      {
 106          return \gmp_strval(\gmp_gcd($a, $b));
 107      }
 108  
 109      /**
 110       * {@inheritdoc}
 111       */
 112      public function fromBase(string $number, int $base) : string
 113      {
 114          return \gmp_strval(\gmp_init($number, $base));
 115      }
 116  
 117      /**
 118       * {@inheritdoc}
 119       */
 120      public function toBase(string $number, int $base) : string
 121      {
 122          return \gmp_strval($number, $base);
 123      }
 124  
 125      /**
 126       * {@inheritdoc}
 127       */
 128      public function and(string $a, string $b) : string
 129      {
 130          return \gmp_strval(\gmp_and($a, $b));
 131      }
 132  
 133      /**
 134       * {@inheritdoc}
 135       */
 136      public function or(string $a, string $b) : string
 137      {
 138          return \gmp_strval(\gmp_or($a, $b));
 139      }
 140  
 141      /**
 142       * {@inheritdoc}
 143       */
 144      public function xor(string $a, string $b) : string
 145      {
 146          return \gmp_strval(\gmp_xor($a, $b));
 147      }
 148  
 149      /**
 150       * {@inheritDoc}
 151       */
 152      public function sqrt(string $n) : string
 153      {
 154          return \gmp_strval(\gmp_sqrt($n));
 155      }
 156  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer