summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--34.patch111
-rw-r--r--Number.php132
-rw-r--r--PHPINFO2
-rw-r--r--REFLECTION777
-rw-r--r--php-pecl-decimal.spec22
5 files changed, 954 insertions, 90 deletions
diff --git a/34.patch b/34.patch
new file mode 100644
index 0000000..d883be8
--- /dev/null
+++ b/34.patch
@@ -0,0 +1,111 @@
+From e71f1488b666e30e4f0121a10fee3eeab22bd327 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Tue, 4 Feb 2020 08:23:05 +0100
+Subject: [PATCH 1/3] fix harcoded path in test
+
+---
+ tests/Number/methods/pow.phpt | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tests/Number/methods/pow.phpt b/tests/Number/methods/pow.phpt
+index 5ce6582..2c78f16 100644
+--- a/tests/Number/methods/pow.phpt
++++ b/tests/Number/methods/pow.phpt
+@@ -87,7 +87,7 @@ Number Object
+ )
+ Number::pow
+
+-Warning: Decimal arithmetic operand truncated to integer in /Users/rtheunissen/dev/decimal/ext-decimal/tests/Number/helpers/Number.php on line 63
++Warning: Decimal arithmetic operand truncated to integer in %sNumber.php on line 63
+ Number Object
+ (
+ [value:protected] => Decimal\Rational Object
+@@ -99,7 +99,7 @@ Number Object
+ )
+ Number::pow
+
+-Warning: Decimal arithmetic operand truncated to integer in /Users/rtheunissen/dev/decimal/ext-decimal/tests/Number/helpers/Number.php on line 63
++Warning: Decimal arithmetic operand truncated to integer in %sNumber.php on line 63
+ Number Object
+ (
+ [value:protected] => Decimal\Rational Object
+@@ -123,7 +123,7 @@ Decimal\Decimal Object
+ )
+ Number::toRational
+
+-Warning: Decimal arithmetic operand truncated to integer in /Users/rtheunissen/dev/decimal/ext-decimal/tests/Number/methods/pow.php on line 38
++Warning: Decimal arithmetic operand truncated to integer in %spow.php on line 38
+ Decimal\Rational Object
+ (
+ [num] => 16
+@@ -131,7 +131,7 @@ Decimal\Rational Object
+ )
+ Number::toRational
+
+-Warning: Decimal arithmetic operand truncated to integer in /Users/rtheunissen/dev/decimal/ext-decimal/tests/Number/methods/pow.php on line 41
++Warning: Decimal arithmetic operand truncated to integer in %spow.php on line 41
+ Decimal\Rational Object
+ (
+ [num] => 16
+
+From d983b8f76f59996339a434c40d1f57703fadbd42 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Tue, 4 Feb 2020 08:25:35 +0100
+Subject: [PATCH 3/3] fix #33 remomve unused function
+
+---
+ src/convert.c | 15 +--------------
+ src/convert.h | 2 --
+ 2 files changed, 1 insertion(+), 16 deletions(-)
+
+diff --git a/src/convert.c b/src/convert.c
+index 4136a35..77581e3 100644
+--- a/src/convert.c
++++ b/src/convert.c
+@@ -444,19 +444,6 @@ zend_string *php_decimal_rational_to_sci(const php_rational_t *obj, zend_long pr
+ return str;
+ }
+
+-zend_string *php_decimal_rational_to_eng(const php_rational_t *obj, zend_long prec)
+-{
+- zend_string *str;
+-
+- PHP_DECIMAL_TEMP_MPD(tmp);
+- php_decimal_rational_evaluate(&tmp, obj, prec);
+-
+- str = php_decimal_mpd_to_eng(&tmp);
+- mpd_del(&tmp);
+-
+- return str;
+-}
+-
+ zend_string *php_decimal_rational_to_fixed(const php_rational_t *obj, zend_long places, zend_bool commas, php_decimal_rounding_t mode)
+ {
+ PHP_DECIMAL_TEMP_MPD(tmp);
+@@ -597,4 +584,4 @@ void php_decimal_number_to_num_den(mpd_t *num, mpd_t *den, const zval *obj)
+
+ assert(status == 0);
+ zval_ptr_dtor(&result);
+-}
+\ No newline at end of file
++}
+diff --git a/src/convert.h b/src/convert.h
+index cb5e031..a3924e3 100644
+--- a/src/convert.h
++++ b/src/convert.h
+@@ -56,7 +56,6 @@ php_decimal_success_t php_decimal_mpd_set_string(mpd_t *mpd, const zend_string *
+ php_decimal_success_t php_decimal_mpd_set_charptr(mpd_t *mpd, const char *str);
+
+ zend_string *php_decimal_mpd_to_serialized(const mpd_t *mpd);
+-zend_string *php_decimal_mpd_to_eng(const mpd_t *mpd);
+ zend_string *php_decimal_mpd_to_sci(const mpd_t *mpd);
+ zend_string *php_decimal_mpd_to_string(const mpd_t *mpd);
+ zend_string *php_decimal_mpd_to_fixed(const mpd_t *mpd, zend_long places, zend_bool commas, php_decimal_rounding_t mode);
+@@ -69,7 +68,6 @@ void php_decimal_rational_set_nan(php_rational_t *obj);
+ void php_decimal_rational_set_zero(php_rational_t *obj);
+
+ zend_string *php_decimal_rational_to_sci(const php_rational_t *obj, zend_long prec);
+-zend_string *php_decimal_rational_to_eng(const php_rational_t *obj, zend_long prec);
+ zend_string *php_decimal_rational_to_string(const php_rational_t *obj);
+ zend_string *php_decimal_rational_to_fixed(const php_rational_t *obj, zend_long places, zend_bool commas, php_decimal_rounding_t mode);
+ zend_long php_decimal_rational_to_long(const php_rational_t *obj);
diff --git a/Number.php b/Number.php
new file mode 100644
index 0000000..07ca222
--- /dev/null
+++ b/Number.php
@@ -0,0 +1,132 @@
+<?php
+
+/**
+ *
+ */
+class Number extends \Decimal\Number
+{
+ protected $value;
+
+ private static function parse($number)
+ {
+ $value = $number instanceof self ? $number->value : $number;
+
+ if ($value === "INF") $value = INF;
+ else if ($value === "-INF") $value = -INF;
+ else if ($value === "NAN") $value = NAN;
+
+ return $value;
+ }
+
+ protected function __construct($value)
+ {
+ $this->value = self::parse($value);
+ }
+
+ public static function valueOf($value): \Decimal\Number
+ {
+ return new static($value);
+ }
+
+ public function add($other): \Decimal\Number
+ {
+ printf("%s\n", __METHOD__);
+
+ return new static($this->value + $this->parse($other));
+ }
+
+ public function sub($other): \Decimal\Number
+ {
+ printf("%s\n", __METHOD__);
+
+ return new static($this->value - $this->parse($other));
+ }
+
+ public function mul($other): \Decimal\Number
+ {
+ printf("%s\n", __METHOD__);
+
+ return new static($this->value * $this->parse($other));
+ }
+
+ public function div($other): \Decimal\Number
+ {
+ printf("%s\n", __METHOD__);
+
+ return new static($this->value / $this->parse($other));
+ }
+
+ public function pow($other): \Decimal\Number
+ {
+ printf("%s\n", __METHOD__);
+
+ return new static($this->value ** $this->parse($other));
+ }
+
+ public function mod($other): \Decimal\Number
+ {
+ printf("%s\n", __METHOD__);
+
+ return new static($this->value % $this->parse($other));
+ }
+
+ public function shiftl($places): \Decimal\Number
+ {
+ printf("%s\n", __METHOD__);
+
+ return new static($this->value * (10 ** $places));
+ }
+
+ public function shiftr($places): \Decimal\Number
+ {
+ printf("%s\n", __METHOD__);
+
+ return new static($this->value / (10 ** $places));
+ }
+
+ public function round(int $places = NULL, int $mode = NULL): \Decimal\Number
+ {
+ return new static($this->toDecimal(\Decimal\Decimal::MAX_PRECISION)->round($places, $mode)->toString());
+ }
+
+ public function toFixed(int $places = NULL, bool $commas = NULL, int $mode = NULL): string
+ {
+ return new static($this->toDecimal(\Decimal\Decimal::MAX_PRECISION)->toFixed($places, $commas, $mode));
+ }
+
+ public function toDecimal(int $precision): \Decimal\Decimal
+ {
+ printf("%s\n", __METHOD__);
+
+ return parent::toDecimal($precision);
+ }
+
+ public function toRational(): \Decimal\Rational
+ {
+ printf("%s\n", __METHOD__);
+
+ return parent::toRational();
+ }
+
+ public function toString(): string
+ {
+ return (string) $this->value;
+ }
+
+ public function toInt(): int
+ {
+ return (int) $this->value;
+ }
+
+ public function toFloat(): float
+ {
+ return (float) $this->value;
+ }
+
+ public function compareTo($other): int
+ {
+ printf("%s\n", __METHOD__);
+
+ return $this->value <=> self::parse($other);
+ }
+}
diff --git a/PHPINFO b/PHPINFO
index 1690582..fb3ebaa 100644
--- a/PHPINFO
+++ b/PHPINFO
@@ -2,5 +2,5 @@
decimal
decimal support => enabled
-decimal version => 1.3.1
+decimal version => 2.0.0
libmpdec version => 2.4.2
diff --git a/REFLECTION b/REFLECTION
index bba6510..d8f893c 100644
--- a/REFLECTION
+++ b/REFLECTION
@@ -1,20 +1,20 @@
-Extension [ <persistent> extension #109 decimal version 1.3.1 ] {
+Extension [ <persistent> extension #109 decimal version 2.0.0 ] {
- - Classes [1] {
- Class [ <internal:decimal> final class Decimal\Decimal implements JsonSerializable ] {
+ - Classes [3] {
+ Class [ <internal:decimal> abstract class Decimal\Number implements JsonSerializable ] {
- Constants [13] {
+ Constant [ public int DEFAULT_ROUNDING ] { 3 }
Constant [ public int ROUND_UP ] { 101 }
Constant [ public int ROUND_DOWN ] { 102 }
Constant [ public int ROUND_CEILING ] { 103 }
Constant [ public int ROUND_FLOOR ] { 104 }
- Constant [ public int ROUND_HALF_UP ] { 105 }
- Constant [ public int ROUND_HALF_DOWN ] { 106 }
- Constant [ public int ROUND_HALF_EVEN ] { 107 }
- Constant [ public int ROUND_HALF_ODD ] { 108 }
- Constant [ public int ROUND_TRUNCATE ] { 109 }
- Constant [ public int DEFAULT_PRECISION ] { 28 }
- Constant [ public int DEFAULT_ROUNDING ] { 107 }
+ Constant [ public int ROUND_HALF_UP ] { 1 }
+ Constant [ public int ROUND_HALF_DOWN ] { 2 }
+ Constant [ public int ROUND_HALF_EVEN ] { 3 }
+ Constant [ public int ROUND_HALF_ODD ] { 4 }
+ Constant [ public int ROUND_TRUNCATE ] { 105 }
+ Constant [ public int DEFAULT_PRECISION ] { 34 }
Constant [ public int MIN_PRECISION ] { 1 }
Constant [ public int MAX_PRECISION ] { 999999999999999999 }
}
@@ -22,75 +22,346 @@ Extension [ <persistent> extension #109 decimal version 1.3.1 ] {
- Static properties [0] {
}
- - Static methods [2] {
- Method [ <internal:decimal> static public method sum ] {
+ - Static methods [1] {
+ Method [ <internal:decimal> static public method valueOf ] {
- - Parameters [2] {
- Parameter #0 [ <required> $values ]
- Parameter #1 [ <optional> int or NULL $precision ]
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
+ }
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [33] {
+ Method [ <internal:decimal> abstract public method add ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> abstract public method sub ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> static public method avg ] {
+ Method [ <internal:decimal> abstract public method mul ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> abstract public method div ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> abstract public method pow ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $exponent ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> abstract public method mod ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> abstract public method shiftl ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $places ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> abstract public method shiftr ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $places ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> abstract public method round ] {
- Parameters [2] {
- Parameter #0 [ <required> $values ]
- Parameter #1 [ <optional> int or NULL $precision ]
+ Parameter #0 [ <optional> int or NULL $places ]
+ Parameter #1 [ <optional> int or NULL $mode ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> public method floor ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> public method ceil ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> public method trunc ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> public method abs ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> public method negate ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> public method isNaN ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> public method isInf ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> public method isInteger ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> public method isZero ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> public method isEven ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> public method isOdd ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> public method isPositive ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> public method isNegative ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> abstract public method toString ] {
+
+ - Parameters [0] {
+ }
+ - Return [ string ]
+ }
+
+ Method [ <internal:decimal> abstract public method toFixed ] {
+
+ - Parameters [3] {
+ Parameter #0 [ <optional> int or NULL $places ]
+ Parameter #1 [ <optional> bool or NULL $commas ]
+ Parameter #2 [ <optional> int or NULL $mode ]
+ }
+ - Return [ string ]
+ }
+
+ Method [ <internal:decimal> abstract public method toInt ] {
+
+ - Parameters [0] {
+ }
+ - Return [ int ]
+ }
+
+ Method [ <internal:decimal> abstract public method toFloat ] {
+
+ - Parameters [0] {
+ }
+ - Return [ float ]
+ }
+
+ Method [ <internal:decimal> public method toDecimal ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> int $precision ]
}
- Return [ Decimal\Decimal ]
}
+
+ Method [ <internal:decimal> public method toRational ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Rational ]
+ }
+
+ Method [ <internal:decimal> abstract public method compareTo ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $other ]
+ }
+ - Return [ int ]
+ }
+
+ Method [ <internal:decimal> public method between ] {
+
+ - Parameters [3] {
+ Parameter #0 [ <required> $a ]
+ Parameter #1 [ <required> $b ]
+ Parameter #2 [ <optional> bool or NULL $inclusive ]
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> public method equals ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $other ]
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal> public method __toString ] {
+
+ - Parameters [0] {
+ }
+ - Return [ string ]
+ }
+
+ Method [ <internal:decimal, prototype JsonSerializable> public method jsonSerialize ] {
+
+ - Parameters [0] {
+ }
+ - Return [ string ]
+ }
}
+ }
- - Properties [0] {
+ Class [ <internal:decimal> final class Decimal\Decimal extends Decimal\Number implements JsonSerializable ] {
+
+ - Constants [15] {
+ Constant [ public int DEFAULT_ROUNDING ] { 3 }
+ Constant [ public int ROUND_UP ] { 101 }
+ Constant [ public int ROUND_DOWN ] { 102 }
+ Constant [ public int ROUND_CEILING ] { 103 }
+ Constant [ public int ROUND_FLOOR ] { 104 }
+ Constant [ public int ROUND_HALF_UP ] { 1 }
+ Constant [ public int ROUND_HALF_DOWN ] { 2 }
+ Constant [ public int ROUND_HALF_EVEN ] { 3 }
+ Constant [ public int ROUND_HALF_ODD ] { 4 }
+ Constant [ public int ROUND_TRUNCATE ] { 105 }
+ Constant [ public int DEFAULT_PRECISION ] { 34 }
+ Constant [ public int MIN_PRECISION ] { 1 }
+ Constant [ public int MAX_PRECISION ] { 999999999999999999 }
+ Constant [ public object PI ] { 3.141592653589793 }
+ Constant [ public object E ] { 2.7182818284590452353602874713526625 }
+ }
+
+ - Static properties [0] {
}
- - Methods [41] {
- Method [ <internal:decimal, ctor> public method __construct ] {
+ - Static methods [1] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> static public method valueOf ] {
- Parameters [2] {
- Parameter #0 [ <optional> $value ]
- Parameter #1 [ <optional> int $precision ]
+ Parameter #0 [ <required> $value ]
+ Parameter #1 [ <optional> int or NULL $precision ]
}
+ - Return [ Decimal\Number ]
}
+ }
- Method [ <internal:decimal> public method copy ] {
+ - Properties [0] {
+ }
+
+ - Methods [43] {
+ Method [ <internal:decimal, ctor> private method __construct ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
}
- Method [ <internal:decimal> public method add ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method add ] {
- Parameters [1] {
Parameter #0 [ <required> $value ]
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method sub ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method sub ] {
- Parameters [1] {
Parameter #0 [ <required> $value ]
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method mul ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method mul ] {
- Parameters [1] {
Parameter #0 [ <required> $value ]
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method div ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method div ] {
- Parameters [1] {
Parameter #0 [ <required> $value ]
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
Method [ <internal:decimal> public method rem ] {
@@ -98,96 +369,111 @@ Extension [ <persistent> extension #109 decimal version 1.3.1 ] {
- Parameters [1] {
Parameter #0 [ <required> $value ]
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method mod ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method mod ] {
- Parameters [1] {
Parameter #0 [ <required> $value ]
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method pow ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method pow ] {
- Parameters [1] {
Parameter #0 [ <required> $value ]
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method shiftl ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $places ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method shiftr ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $places ]
+ }
+ - Return [ Decimal\Number ]
}
Method [ <internal:decimal> public method ln ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
Method [ <internal:decimal> public method exp ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
Method [ <internal:decimal> public method log10 ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
Method [ <internal:decimal> public method sqrt ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method floor ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method floor ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method ceil ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method ceil ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method truncate ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method trunc ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method round ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method round ] {
- Parameters [2] {
Parameter #0 [ <optional> int or NULL $places ]
- Parameter #1 [ <optional> int or NULL $rounding ]
+ Parameter #1 [ <optional> int or NULL $mode ]
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method shift ] {
+ Method [ <internal:decimal> public method trim ] {
- - Parameters [1] {
- Parameter #0 [ <required> int $places ]
+ - Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
- Method [ <internal:decimal> public method trim ] {
+ Method [ <internal:decimal> public method reduce ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Number ]
}
Method [ <internal:decimal> public method precision ] {
@@ -197,130 +483,440 @@ Extension [ <persistent> extension #109 decimal version 1.3.1 ] {
- Return [ int ]
}
- Method [ <internal:decimal> public method signum ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method abs ] {
- Parameters [0] {
}
- - Return [ int ]
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method negate ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isEven ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isOdd ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isPositive ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isNegative ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isNaN ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isInf ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isInteger ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isZero ] {
+
+ - Parameters [0] {
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toString ] {
+
+ - Parameters [0] {
+ }
+ - Return [ string ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toFixed ] {
+
+ - Parameters [3] {
+ Parameter #0 [ <optional> int or NULL $places ]
+ Parameter #1 [ <optional> bool or NULL $commas ]
+ Parameter #2 [ <optional> int or NULL $mode ]
+ }
+ - Return [ string ]
+ }
+
+ Method [ <internal:decimal> public method toSci ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <optional> int or NULL $precision ]
+ }
+ - Return [ string ]
}
- Method [ <internal:decimal> public method parity ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toInt ] {
- Parameters [0] {
}
- Return [ int ]
}
- Method [ <internal:decimal> public method abs ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toFloat ] {
- Parameters [0] {
}
+ - Return [ float ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toDecimal ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <optional> int $precision ]
+ }
- Return [ Decimal\Decimal ]
}
- Method [ <internal:decimal> public method negate ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toRational ] {
- Parameters [0] {
}
- - Return [ Decimal\Decimal ]
+ - Return [ Decimal\Rational ]
}
- Method [ <internal:decimal> public method isEven ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method compareTo ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $other ]
+ }
+ - Return [ int ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method between ] {
+
+ - Parameters [3] {
+ Parameter #0 [ <required> $a ]
+ Parameter #1 [ <required> $b ]
+ Parameter #2 [ <optional> bool or NULL $inclusive ]
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method equals ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $other ]
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, inherits Decimal\Number> public method __toString ] {
+
+ - Parameters [0] {
+ }
+ - Return [ string ]
+ }
+
+ Method [ <internal:decimal, inherits Decimal\Number, prototype JsonSerializable> public method jsonSerialize ] {
+
+ - Parameters [0] {
+ }
+ - Return [ string ]
+ }
+ }
+ }
+
+ Class [ <internal:decimal> final class Decimal\Rational extends Decimal\Number implements JsonSerializable ] {
+
+ - Constants [13] {
+ Constant [ public int DEFAULT_ROUNDING ] { 3 }
+ Constant [ public int ROUND_UP ] { 101 }
+ Constant [ public int ROUND_DOWN ] { 102 }
+ Constant [ public int ROUND_CEILING ] { 103 }
+ Constant [ public int ROUND_FLOOR ] { 104 }
+ Constant [ public int ROUND_HALF_UP ] { 1 }
+ Constant [ public int ROUND_HALF_DOWN ] { 2 }
+ Constant [ public int ROUND_HALF_EVEN ] { 3 }
+ Constant [ public int ROUND_HALF_ODD ] { 4 }
+ Constant [ public int ROUND_TRUNCATE ] { 105 }
+ Constant [ public int DEFAULT_PRECISION ] { 34 }
+ Constant [ public int MIN_PRECISION ] { 1 }
+ Constant [ public int MAX_PRECISION ] { 999999999999999999 }
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [1] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> static public method valueOf ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [36] {
+ Method [ <internal:decimal, ctor> private method __construct ] {
+
+ - Parameters [0] {
+ }
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method add ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method sub ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method mul ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method div ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method pow ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $exponent ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal> public method rem ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method mod ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $value ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method shiftl ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $places ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method shiftr ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> $places ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method floor ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method ceil ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method trunc ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method round ] {
+
+ - Parameters [2] {
+ Parameter #0 [ <optional> int or NULL $places ]
+ Parameter #1 [ <optional> int or NULL $rounding ]
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method abs ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method negate ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Number ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isEven ] {
- Parameters [0] {
}
- Return [ bool ]
}
- Method [ <internal:decimal> public method isOdd ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isOdd ] {
- Parameters [0] {
}
- Return [ bool ]
}
- Method [ <internal:decimal> public method isPositive ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isPositive ] {
- Parameters [0] {
}
- Return [ bool ]
}
- Method [ <internal:decimal> public method isNegative ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isNegative ] {
- Parameters [0] {
}
- Return [ bool ]
}
- Method [ <internal:decimal> public method isNaN ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isNaN ] {
- Parameters [0] {
}
- Return [ bool ]
}
- Method [ <internal:decimal> public method isInf ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isInf ] {
- Parameters [0] {
}
- Return [ bool ]
}
- Method [ <internal:decimal> public method isInteger ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isInteger ] {
- Parameters [0] {
}
- Return [ bool ]
}
- Method [ <internal:decimal> public method isZero ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method isZero ] {
- Parameters [0] {
}
- Return [ bool ]
}
- Method [ <internal:decimal> public method toFixed ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toFixed ] {
- Parameters [3] {
Parameter #0 [ <optional> int or NULL $places ]
Parameter #1 [ <optional> bool or NULL $commas ]
- Parameter #2 [ <optional> int or NULL $rounding ]
+ Parameter #2 [ <optional> int or NULL $mode ]
}
- Return [ string ]
}
- Method [ <internal:decimal> public method toString ] {
+ Method [ <internal:decimal> public method toSci ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <optional> int or NULL $precision ]
+ }
+ - Return [ string ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toString ] {
- Parameters [0] {
}
- Return [ string ]
}
- Method [ <internal:decimal> public method toInt ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toInt ] {
- Parameters [0] {
}
- Return [ int ]
}
- Method [ <internal:decimal> public method toFloat ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toFloat ] {
- Parameters [0] {
}
- Return [ float ]
}
- Method [ <internal:decimal> public method equals ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toDecimal ] {
- Parameters [1] {
- Parameter #0 [ <required> $other ]
+ Parameter #0 [ <required> int $precision ]
}
- - Return [ bool ]
+ - Return [ Decimal\Decimal ]
}
- Method [ <internal:decimal> public method compareTo ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method toRational ] {
+
+ - Parameters [0] {
+ }
+ - Return [ Decimal\Rational ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method compareTo ] {
- Parameters [1] {
Parameter #0 [ <required> $other ]
@@ -328,23 +924,32 @@ Extension [ <persistent> extension #109 decimal version 1.3.1 ] {
- Return [ int ]
}
- Method [ <internal:decimal> public method between ] {
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method between ] {
- - Parameters [2] {
+ - Parameters [3] {
+ Parameter #0 [ <required> $a ]
+ Parameter #1 [ <required> $b ]
+ Parameter #2 [ <optional> bool or NULL $inclusive ]
+ }
+ - Return [ bool ]
+ }
+
+ Method [ <internal:decimal, overwrites Decimal\Number, prototype Decimal\Number> public method equals ] {
+
+ - Parameters [1] {
Parameter #0 [ <required> $other ]
- Parameter #1 [ <optional> $other ]
}
- Return [ bool ]
}
- Method [ <internal:decimal> public method __toString ] {
+ Method [ <internal:decimal, inherits Decimal\Number> public method __toString ] {
- Parameters [0] {
}
- Return [ string ]
}
- Method [ <internal:decimal, prototype JsonSerializable> public method jsonSerialize ] {
+ Method [ <internal:decimal, inherits Decimal\Number, prototype JsonSerializable> public method jsonSerialize ] {
- Parameters [0] {
}
diff --git a/php-pecl-decimal.spec b/php-pecl-decimal.spec
index d289100..d084c77 100644
--- a/php-pecl-decimal.spec
+++ b/php-pecl-decimal.spec
@@ -15,7 +15,8 @@
%scl_package php-pecl-decimal
%endif
-%global with_zts 0%{!?_without_zts:%{?__ztsphp:1}}
+# see https://github.com/php-decimal/ext-decimal/issues/35
+%global with_zts 0
%global with_tests 0%{!?_without_tests:1}
%global pecl_name decimal
# After 20-json.ini
@@ -23,14 +24,17 @@
Summary: Arbitrary-precision floating-point decimal
Name: %{?sub_prefix}php-pecl-%{pecl_name}
-Version: 1.3.1
+Version: 2.0.0
Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
License: MIT
URL: https://pecl.php.net/package/%{pecl_name}
Source0: https://pecl.php.net/get/%{pecl_name}-%{version}.tgz
+Source1: https://raw.githubusercontent.com/php-decimal/ext-decimal/42bfd98e8742c6321b9b58eedeebc3de13eede99/tests/Number/helpers/Number.php
+Patch0: https://patch-diff.githubusercontent.com/raw/php-decimal/ext-decimal/pull/34.patch
+
BuildRequires: %{?dtsprefix}gcc
-BuildRequires: %{?scl_prefix}php-devel > 7
+BuildRequires: %{?scl_prefix}php-devel > 7.2
BuildRequires: %{?scl_prefix}php-pear
BuildRequires: %{?scl_prefix}php-json
BuildRequires: mpdecimal-devel
@@ -92,6 +96,10 @@ sed -e 's/role="test"/role="src"/' \
mv %{pecl_name}-%{version} NTS
cd NTS
+mkdir tests/Number/helpers
+cp %{SOURCE1} tests/Number/helpers/Number.php
+%patch0 -p1 -b .pr34
+
# Sanity check, really often broken
extver=$(sed -n '/#define PHP_DECIMAL_VERSION/{s/.* "//;s/".*$//;p}' php_decimal.h)
if test "x${extver}" != "x%{version}%{?prever:-%{prever}}"; then
@@ -228,6 +236,14 @@ REPORT_EXIT_STATUS=1 \
%changelog
+* Tue Feb 4 2020 Remi Collet <remi@remirepo.net> - 2.0.0-1
+- update to 2.0.0 (alpha)
+- raise dependency on PHP 7.2
+- fix undefined symbol using patch from
+ https://github.com/php-decimal/ext-decimal/pull/34
+- disable ZTS build which segfaults, reported as
+ https://github.com/php-decimal/ext-decimal/issues/35
+
* Tue Feb 4 2020 Remi Collet <remi@remirepo.net> - 1.3.1-1
- update to 1.3.1
- drop patch merged upstream