mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
MFH: add gmp_nextprime()
patch by ants dot aasma at gmail dot com
This commit is contained in:
parent
9ccbb28696
commit
9e905c3de7
3 changed files with 55 additions and 0 deletions
|
@ -260,6 +260,11 @@ ZEND_BEGIN_ARG_INFO(arginfo_gmp_scan1, 0)
|
|||
ZEND_ARG_INFO(0, start)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
static
|
||||
ZEND_BEGIN_ARG_INFO(arginfo_gmp_nextprime, 0)
|
||||
ZEND_ARG_INFO(0, a)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
/* }}} */
|
||||
|
||||
ZEND_DECLARE_MODULE_GLOBALS(gmp)
|
||||
|
@ -307,6 +312,7 @@ zend_function_entry gmp_functions[] = {
|
|||
ZEND_FE(gmp_scan1, arginfo_gmp_scan1)
|
||||
ZEND_FE(gmp_popcount, arginfo_gmp_popcount)
|
||||
ZEND_FE(gmp_hamdist, arginfo_gmp_hamdist)
|
||||
ZEND_FE(gmp_nextprime, arginfo_gmp_nextprime)
|
||||
{NULL, NULL, NULL} /* Must be the last line in gmp_functions[] */
|
||||
};
|
||||
/* }}} */
|
||||
|
@ -1424,6 +1430,14 @@ ZEND_FUNCTION(gmp_com)
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto resource gmp_nextprime(resource a)
|
||||
Finds next prime of a */
|
||||
ZEND_FUNCTION(gmp_nextprime)
|
||||
{
|
||||
gmp_unary_op(mpz_nextprime);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto resource gmp_xor(resource a, resource b)
|
||||
Calculates logical exclusive OR of a and b */
|
||||
ZEND_FUNCTION(gmp_xor)
|
||||
|
|
|
@ -75,6 +75,7 @@ ZEND_FUNCTION(gmp_scan0);
|
|||
ZEND_FUNCTION(gmp_scan1);
|
||||
ZEND_FUNCTION(gmp_popcount);
|
||||
ZEND_FUNCTION(gmp_hamdist);
|
||||
ZEND_FUNCTION(gmp_nextprime);
|
||||
|
||||
ZEND_BEGIN_MODULE_GLOBALS(gmp)
|
||||
zend_bool rand_initialized;
|
||||
|
|
40
ext/gmp/tests/gmp_nextprime.phpt
Normal file
40
ext/gmp/tests/gmp_nextprime.phpt
Normal file
|
@ -0,0 +1,40 @@
|
|||
--TEST--
|
||||
gmp_nextprime()
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("gmp")) print "skip"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$n = gmp_nextprime(-1);
|
||||
var_dump(gmp_strval($n));
|
||||
$n = gmp_nextprime(0);
|
||||
var_dump(gmp_strval($n));
|
||||
$n = gmp_nextprime(-1000);
|
||||
var_dump(gmp_strval($n));
|
||||
$n = gmp_nextprime(1000);
|
||||
var_dump(gmp_strval($n));
|
||||
$n = gmp_nextprime(100000);
|
||||
var_dump(gmp_strval($n));
|
||||
$n = gmp_nextprime(array());
|
||||
var_dump(gmp_strval($n));
|
||||
$n = gmp_nextprime("");
|
||||
var_dump(gmp_strval($n));
|
||||
$n = gmp_nextprime(new stdclass());
|
||||
var_dump(gmp_strval($n));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
string(1) "2"
|
||||
string(1) "2"
|
||||
string(4) "-997"
|
||||
string(4) "1009"
|
||||
string(6) "100003"
|
||||
|
||||
Warning: gmp_nextprime(): Unable to convert variable to GMP - wrong type in %s on line %d
|
||||
string(1) "0"
|
||||
string(1) "0"
|
||||
|
||||
Warning: gmp_nextprime(): Unable to convert variable to GMP - wrong type in %s on line %d
|
||||
string(1) "0"
|
||||
Done
|
Loading…
Add table
Add a link
Reference in a new issue