Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:70913 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 87799 invoked from network); 30 Dec 2013 05:00:37 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 30 Dec 2013 05:00:37 -0000 Authentication-Results: pb1.pair.com smtp.mail=yohgaki@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=yohgaki@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.217.172 as permitted sender) X-PHP-List-Original-Sender: yohgaki@gmail.com X-Host-Fingerprint: 209.85.217.172 mail-lb0-f172.google.com Received: from [209.85.217.172] ([209.85.217.172:48103] helo=mail-lb0-f172.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id C6/30-20534-4FDF0C25 for ; Mon, 30 Dec 2013 00:00:36 -0500 Received: by mail-lb0-f172.google.com with SMTP id x18so5419196lbi.31 for ; Sun, 29 Dec 2013 21:00:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:content-type; bh=xxbOJ1clzvl+dk8wZyI5+Qhk7e9mMrYSWjWJNVX2/6Q=; b=qsFZOLxTAX6plMCkmIbiLoZmTuJQCpXC76YBj8bSMtU2ttcqx4mZnwFYeN66nT2VyZ FxgS9nrB+dYwebyvRU67k3+sV3gNpur23V8YU7SBiuwaZgiz33pujdUUPmAkaFlpxqCu gSwk1tuFCDOwrIHQCZaITUlVL4N8Vo5kUflWEyrSZg2w9j0TPuPEXbgbhO4gL/KkB5iS vLv9snfoD7TC1DSvmIuSc9stqiT7n0i1Z2p6lC2wNPmo4Qo/RtGH/YQUBxRrdGerUriz iX3bjinrPcTlnIZTKDyR6zvHTTa391iefi1yj7+V5fvYeCL4c7+OLTZ6bmD4oCypsFcY vTEQ== X-Received: by 10.112.128.226 with SMTP id nr2mr24949236lbb.17.1388379632794; Sun, 29 Dec 2013 21:00:32 -0800 (PST) MIME-Version: 1.0 Sender: yohgaki@gmail.com Received: by 10.112.6.68 with HTTP; Sun, 29 Dec 2013 20:59:52 -0800 (PST) In-Reply-To: References: Date: Mon, 30 Dec 2013 13:59:52 +0900 X-Google-Sender-Auth: YkkG_FvjyowfKpocYvpBqa7gBxM Message-ID: To: "internals@lists.php.net" Content-Type: multipart/alternative; boundary=047d7b3a84c2d3806304eeb952c2 Subject: Re: GMP and empty() From: yohgaki@ohgaki.net (Yasuo Ohgaki) --047d7b3a84c2d3806304eeb952c2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi all, I thought GMP object does not work with math functions, but some of them work. Apparently, I was only testing with function that does not work with GMP. Some math function works. e.g. pow() with small value. min()/max() seems ok. Not only empty(), but there are number of wired behavior with GMP and functions. I haven't tried them all, but we need to work more for these. It seems time to write more tests and fix issues. =3D=3D=3D pow() =3D=3D=3D [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("2"); var_dump(pow($v, 10));' int(1024) This works fine. [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("223423"); var_dump(pow($v, 234242));' float(INF) This returns float(INF). It may be acceptable. Returning GMP object with correct value is better. [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("223423423423423423423422342342342342.234234234"); var_dump(pow($v, 234242));' int(0) but this returns int(0). =3D=3D=3D round()/floor()/ceil()=3D=3D=3D [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("25.234242342"); var_dump(round($v));' float(0) It should be 25. floor()/ceil() is the same. =3D=3D=3Dabs()=3D=3D=3D [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("25.234242342"); var_dump(abs($v));' int(0) It returns int(0). =3D=3D=3Dacos()=3D=3D=3D [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("25.234242342"); var_dump(acos($v), acos(25.234242342));' float(1.5707963267949) float(NAN) Something wrong. =3D=3D=3Dcos()=3D=3D=3D [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("25.234242342"); var_dump(cos($v), cos(25.234242342));' float(1) float(0.99485318302495) Almost correct, but it's not. If GMP integer is passed, it raises E_WARNING. [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("2"); var_dump(cos($v), cos(2));' Warning: cos() expects parameter 1 to be double, object given in Command line code on line 1 NULL float(-0.41614683654714) =3D=3D=3Dlog=3D=3D=3D [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("2"); var_dump(log($v), log(2));' Warning: log() expects parameter 1 to be double, object given in Command line code on line 1 NULL float(0.69314718055995) [yohgaki@dev php-src]$ ./php-bin -d error_reporting=3D-1 -r '$v =3D gmp_init("2.2"); var_dump(log($v), log(2.2));' float(-INF) float(0.78845736036427) Something wrong. =E2=80=8B --047d7b3a84c2d3806304eeb952c2--