Re: Re: GMP and empty()
| From: | Yasuo Ohgaki | Date: | Mon, 30 Dec 2013 10:02:36 +0000 |
| Subject: | Re: Re: GMP and empty() | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-70916@lists.php.net to get a copy of this message | ||
On Mon, Dec 30, 2013 at 6:47 PM, Yasuo Ohgaki <yohgaki@ohgaki.net> wrote:
> And I was expecting
>
> [yohgaki@dev php-src]$ ./php-bin -d error_reporting=-1 -r
> '$f=2.2;$v=gmp_init($f); var_dump($v);'
>
> Warning: gmp_init(): Unable to convert variable to GMP - wrong type in
> Command line code on line 1
> bool(false)
>
> this kind of behavior for literal, too. ;)
>
> Why is PHP not raising error for float literal?
>
ZEND_FUNCTION(gmp_init)
{
zval *number_arg;
mpz_ptr gmpnumber;
long base = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|l",
&number_arg, &base) == FAILURE) {
return;
}
if (base && (base < 2 || base > MAX_BASE)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad base for
conversion: %ld (should be between 2 and %d)", base, MAX_BASE);
RETURN_FALSE;
}
INIT_GMP_RETVAL(gmpnumber);
if (convert_to_gmp(gmpnumber, number_arg, base TSRMLS_CC) == FAILURE) {
zval_dtor(return_value);
RETURN_FALSE;
}
}
Apparently, we need type check and/or float support in GMP.
Are there any technical reasons not to support GMP float?
https://gmplib.org/manual/Initializing-Floats.html#Initializing-Floats
--
Yasuo Ohgaki
yohgaki@ohgaki.net