diff options
author | Mario <mario@mariovavti.com> | 2023-05-30 08:36:17 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2023-05-30 08:36:17 +0000 |
commit | b9812ba06ac16899df2a25f0abf25962ae3273f2 (patch) | |
tree | 35762d0183f5b0c6d866b00cdeebfbae595cfa56 /vendor/brick/math/src/BigNumber.php | |
parent | bc6aded074156ec81084334a4d6aa58bc0f37a68 (diff) | |
download | volse-hubzilla-b9812ba06ac16899df2a25f0abf25962ae3273f2.tar.gz volse-hubzilla-b9812ba06ac16899df2a25f0abf25962ae3273f2.tar.bz2 volse-hubzilla-b9812ba06ac16899df2a25f0abf25962ae3273f2.zip |
update composer libs
Diffstat (limited to 'vendor/brick/math/src/BigNumber.php')
-rw-r--r-- | vendor/brick/math/src/BigNumber.php | 132 |
1 files changed, 36 insertions, 96 deletions
diff --git a/vendor/brick/math/src/BigNumber.php b/vendor/brick/math/src/BigNumber.php index 38c8c554e..80146d207 100644 --- a/vendor/brick/math/src/BigNumber.php +++ b/vendor/brick/math/src/BigNumber.php @@ -48,16 +48,12 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * - strings containing a `.` character or using an exponential notation are returned as BigDecimal * - strings containing only digits with an optional leading `+` or `-` sign are returned as BigInteger * - * @param BigNumber|int|float|string $value - * - * @return BigNumber - * * @throws NumberFormatException If the format of the number is not valid. * @throws DivisionByZeroException If the value represents a rational number with a denominator of zero. * * @psalm-pure */ - public static function of($value) : BigNumber + public static function of(BigNumber|int|float|string $value) : BigNumber { if ($value instanceof BigNumber) { return $value; @@ -67,8 +63,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable return new BigInteger((string) $value); } - /** @psalm-suppress RedundantCastGivenDocblockType We cannot trust the untyped $value here! */ - $value = \is_float($value) ? self::floatToString($value) : (string) $value; + $value = \is_float($value) ? self::floatToString($value) : $value; $throw = static function() use ($value) : void { throw new NumberFormatException(\sprintf( @@ -81,9 +76,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable $throw(); } - $getMatch = static function(string $value) use ($matches) : ?string { - return isset($matches[$value]) && $matches[$value] !== '' ? $matches[$value] : null; - }; + $getMatch = static fn(string $value): ?string => (($matches[$value] ?? '') !== '') ? $matches[$value] : null; $sign = $getMatch('sign'); $numerator = $getMatch('numerator'); @@ -155,10 +148,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * * @see https://github.com/brick/math/pull/20 * - * @param float $float - * - * @return string - * * @psalm-pure * @psalm-suppress ImpureFunctionCall */ @@ -175,21 +164,36 @@ abstract class BigNumber implements \Serializable, \JsonSerializable } /** - * Proxy method to access protected constructors from sibling classes. + * Proxy method to access BigInteger's protected constructor from sibling classes. * * @internal + * @psalm-pure + */ + protected function newBigInteger(string $value) : BigInteger + { + return new BigInteger($value); + } + + /** + * Proxy method to access BigDecimal's protected constructor from sibling classes. * - * @param mixed ...$args The arguments to the constructor. - * - * @return static + * @internal + * @psalm-pure + */ + protected function newBigDecimal(string $value, int $scale = 0) : BigDecimal + { + return new BigDecimal($value, $scale); + } + + /** + * Proxy method to access BigRational's protected constructor from sibling classes. * + * @internal * @psalm-pure - * @psalm-suppress TooManyArguments - * @psalm-suppress UnsafeInstantiation */ - protected static function create(... $args) : BigNumber + protected function newBigRational(BigInteger $numerator, BigInteger $denominator, bool $checkDenominator) : BigRational { - return new static(... $args); + return new BigRational($numerator, $denominator, $checkDenominator); } /** @@ -198,8 +202,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible * to an instance of the class this method is called on. * - * @return static The minimum value. - * * @throws \InvalidArgumentException If no values are given. * @throws MathException If an argument is not valid. * @@ -207,7 +209,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * @psalm-suppress MoreSpecificReturnType * @psalm-pure */ - public static function min(...$values) : BigNumber + public static function min(BigNumber|int|float|string ...$values) : static { $min = null; @@ -232,8 +234,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible * to an instance of the class this method is called on. * - * @return static The maximum value. - * * @throws \InvalidArgumentException If no values are given. * @throws MathException If an argument is not valid. * @@ -241,7 +241,7 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * @psalm-suppress MoreSpecificReturnType * @psalm-pure */ - public static function max(...$values) : BigNumber + public static function max(BigNumber|int|float|string ...$values) : static { $max = null; @@ -266,18 +266,14 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * @param BigNumber|int|float|string ...$values The numbers to add. All the numbers need to be convertible * to an instance of the class this method is called on. * - * @return static The sum. - * * @throws \InvalidArgumentException If no values are given. * @throws MathException If an argument is not valid. * - * @psalm-suppress LessSpecificReturnStatement - * @psalm-suppress MoreSpecificReturnType * @psalm-pure */ - public static function sum(...$values) : BigNumber + public static function sum(BigNumber|int|float|string ...$values) : static { - /** @var BigNumber|null $sum */ + /** @var static|null $sum */ $sum = null; foreach ($values as $value) { @@ -301,11 +297,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * depending on their ability to perform the operation. This will also require a version bump because we're * potentially breaking custom BigNumber implementations (if any...) * - * @param BigNumber $a - * @param BigNumber $b - * - * @return BigNumber - * * @psalm-pure */ private static function add(BigNumber $a, BigNumber $b) : BigNumber @@ -336,8 +327,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * * @param string $number The number, validated as a non-empty string of digits with optional leading sign. * - * @return string - * * @psalm-pure */ private static function cleanUp(string $number) : string @@ -363,68 +352,46 @@ abstract class BigNumber implements \Serializable, \JsonSerializable /** * Checks if this number is equal to the given one. - * - * @param BigNumber|int|float|string $that - * - * @return bool */ - public function isEqualTo($that) : bool + public function isEqualTo(BigNumber|int|float|string $that) : bool { return $this->compareTo($that) === 0; } /** * Checks if this number is strictly lower than the given one. - * - * @param BigNumber|int|float|string $that - * - * @return bool */ - public function isLessThan($that) : bool + public function isLessThan(BigNumber|int|float|string $that) : bool { return $this->compareTo($that) < 0; } /** * Checks if this number is lower than or equal to the given one. - * - * @param BigNumber|int|float|string $that - * - * @return bool */ - public function isLessThanOrEqualTo($that) : bool + public function isLessThanOrEqualTo(BigNumber|int|float|string $that) : bool { return $this->compareTo($that) <= 0; } /** * Checks if this number is strictly greater than the given one. - * - * @param BigNumber|int|float|string $that - * - * @return bool */ - public function isGreaterThan($that) : bool + public function isGreaterThan(BigNumber|int|float|string $that) : bool { return $this->compareTo($that) > 0; } /** * Checks if this number is greater than or equal to the given one. - * - * @param BigNumber|int|float|string $that - * - * @return bool */ - public function isGreaterThanOrEqualTo($that) : bool + public function isGreaterThanOrEqualTo(BigNumber|int|float|string $that) : bool { return $this->compareTo($that) >= 0; } /** * Checks if this number equals zero. - * - * @return bool */ public function isZero() : bool { @@ -433,8 +400,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable /** * Checks if this number is strictly negative. - * - * @return bool */ public function isNegative() : bool { @@ -443,8 +408,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable /** * Checks if this number is negative or zero. - * - * @return bool */ public function isNegativeOrZero() : bool { @@ -453,8 +416,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable /** * Checks if this number is strictly positive. - * - * @return bool */ public function isPositive() : bool { @@ -463,8 +424,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable /** * Checks if this number is positive or zero. - * - * @return bool */ public function isPositiveOrZero() : bool { @@ -481,19 +440,15 @@ abstract class BigNumber implements \Serializable, \JsonSerializable /** * Compares this number to the given one. * - * @param BigNumber|int|float|string $that - * * @return int [-1,0,1] If `$this` is lower than, equal to, or greater than `$that`. * * @throws MathException If the number is not valid. */ - abstract public function compareTo($that) : int; + abstract public function compareTo(BigNumber|int|float|string $that) : int; /** * Converts this number to a BigInteger. * - * @return BigInteger The converted number. - * * @throws RoundingNecessaryException If this number cannot be converted to a BigInteger without rounding. */ abstract public function toBigInteger() : BigInteger; @@ -501,16 +456,12 @@ abstract class BigNumber implements \Serializable, \JsonSerializable /** * Converts this number to a BigDecimal. * - * @return BigDecimal The converted number. - * * @throws RoundingNecessaryException If this number cannot be converted to a BigDecimal without rounding. */ abstract public function toBigDecimal() : BigDecimal; /** * Converts this number to a BigRational. - * - * @return BigRational The converted number. */ abstract public function toBigRational() : BigRational; @@ -520,8 +471,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * @param int $scale The scale of the resulting `BigDecimal`. * @param int $roundingMode A `RoundingMode` constant. * - * @return BigDecimal - * * @throws RoundingNecessaryException If this number cannot be converted to the given scale without rounding. * This only applies when RoundingMode::UNNECESSARY is used. */ @@ -533,8 +482,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * If this number cannot be converted to a native integer without losing precision, an exception is thrown. * Note that the acceptable range for an integer depends on the platform and differs for 32-bit and 64-bit. * - * @return int The converted value. - * * @throws MathException If this number cannot be exactly converted to a native integer. */ abstract public function toInt() : int; @@ -547,8 +494,6 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * * If the number is greater than the largest representable floating point number, positive infinity is returned. * If the number is less than the smallest representable floating point number, negative infinity is returned. - * - * @return float The converted value. */ abstract public function toFloat() : float; @@ -557,14 +502,9 @@ abstract class BigNumber implements \Serializable, \JsonSerializable * * The output of this method can be parsed by the `of()` factory method; * this will yield an object equal to this one, without any information loss. - * - * @return string */ abstract public function __toString() : string; - /** - * {@inheritdoc} - */ public function jsonSerialize() : string { return $this->__toString(); |