MFH: add gmp_nextprime()

patch by ants dot aasma at gmail dot com
This commit is contained in:
Antony Dovgal 2006-07-18 14:54:32 +00:00
parent 9ccbb28696
commit 9e905c3de7
3 changed files with 55 additions and 0 deletions

View file

@ -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)

View file

@ -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;

View 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