mirror of
https://github.com/php/php-src.git
synced 2025-08-18 06:58:55 +02:00

Factorials only make sense for integer inputs. To do something factorial-like, the Gamma Function should be used instead. However, at this point it's no longer a factorial. For PHP/GMP, we'll raise a warning on trying to use a non-integer input, but carry on returning the truncated value as we used to (avoiding BC breakage).
67 lines
1.7 KiB
PHP
67 lines
1.7 KiB
PHP
--TEST--
|
|
gmp_fact() basic tests
|
|
--SKIPIF--
|
|
<?php if (!extension_loaded("gmp")) print "skip"; ?>
|
|
--FILE--
|
|
<?php
|
|
|
|
var_dump(gmp_strval(gmp_fact(0)));
|
|
var_dump(gmp_strval(gmp_fact("")));
|
|
var_dump(gmp_strval(gmp_fact("0")));
|
|
var_dump(gmp_strval(gmp_fact("-1")));
|
|
var_dump(gmp_strval(gmp_fact(-1)));
|
|
var_dump(gmp_strval(gmp_fact(1.1)));
|
|
var_dump(gmp_strval(gmp_fact(20)));
|
|
var_dump(gmp_strval(gmp_fact("50")));
|
|
var_dump(gmp_strval(gmp_fact("10")));
|
|
var_dump(gmp_strval(gmp_fact("0000")));
|
|
|
|
$n = gmp_init(12);
|
|
var_dump(gmp_strval(gmp_fact($n)));
|
|
$n = gmp_init(-10);
|
|
var_dump(gmp_strval(gmp_fact($n)));
|
|
|
|
var_dump(gmp_fact());
|
|
var_dump(gmp_fact(1,1));
|
|
var_dump(gmp_fact(array()));
|
|
var_dump(gmp_strval(gmp_fact(array())));
|
|
|
|
echo "Done\n";
|
|
?>
|
|
--EXPECTF--
|
|
string(1) "1"
|
|
string(1) "1"
|
|
string(1) "1"
|
|
|
|
Warning: gmp_fact(): Number has to be greater than or equal to 0 in %s on line %d
|
|
string(1) "0"
|
|
|
|
Warning: gmp_fact(): Number has to be greater than or equal to 0 in %s on line %d
|
|
string(1) "0"
|
|
|
|
Warning: gmp_fact(): Number has to be an integer in %s on line %d
|
|
string(1) "1"
|
|
string(19) "2432902008176640000"
|
|
string(65) "30414093201713378043612608166064768844377641568960512000000000000"
|
|
string(7) "3628800"
|
|
string(1) "1"
|
|
string(9) "479001600"
|
|
|
|
Warning: gmp_fact(): Number has to be greater than or equal to 0 in %s on line %d
|
|
string(1) "0"
|
|
|
|
Warning: gmp_fact() expects exactly 1 parameter, 0 given in %s on line %d
|
|
NULL
|
|
|
|
Warning: gmp_fact() expects exactly 1 parameter, 2 given in %s on line %d
|
|
NULL
|
|
|
|
Warning: gmp_fact(): Number has to be an integer in %s on line %d
|
|
object(GMP)#%d (1) {
|
|
["num"]=>
|
|
string(1) "1"
|
|
}
|
|
|
|
Warning: gmp_fact(): Number has to be an integer in %s on line %d
|
|
string(1) "1"
|
|
Done
|