#42143 [Asn]: The constant NAN is reported as 0 on Windows build

2008-07-18 Thread jani
 ID:   42143
 Updated by:   [EMAIL PROTECTED]
 Reported By:  zoe at uk dot ibm dot com
 Status:   Assigned
 Bug Type: Math related
 Operating System: Windows
 PHP Version:  5CVS-2007-07-30 (snap)
-Assigned To:  edink
+Assigned To:  pajoye
 New Comment:

Pierre, assigning to you since Edin is MIA.


Previous Comments:


[2007-08-03 05:24:53] [EMAIL PROTECTED]

Little notice about VC6, using it with the very last SDK works. I'm not
sure which SDK is used on our win32 build box. It may be a platform sdk
bug more than a VC bug. Edin, can you try to upgrade the SDK (if we can
upgrade it:)?



[2007-08-02 22:27:25] [EMAIL PROTECTED]

Saw a bug under msvc2005 that can be related to this - get_nan()
function produced FP exception. Weird thing is that it happens only if
engine is started, shut down and then started again inside the same
process. Maybe has something to do with some kind of floating point.
Using PHP_DOUBLE_QUIET_NAN_HIGH instead seems to fix the problem. 



[2007-08-02 09:47:42] [EMAIL PROTECTED]

I tried using vc 2k3 and 2k5 and NAN is correctly defined. VC6 seems to
have a different way to define/get/use NAN. Maybe we can rely on
fmod(1,0) instead (always return NaN on windows).



[2007-07-31 11:42:49] [EMAIL PROTECTED]

Edin, can you check if there's some problem with the win32 build in
this?



[2007-07-30 08:05:26] zoe at uk dot ibm dot com

Description:

The constant NAN is reported as '0' on the Windows binary downloaded
from the snaps.php.net site. The function is correct on Linux.

A colleague built locally (on Windows) from source and got the correct
value for NAN (ie NAN). We stepped through this code (in
basic_functions.c): 

PHPAPI double php_get_nan(void)
{
#if HAVE_HUGE_VAL_NAN
return HUGE_VAL + -HUGE_VAL;
#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) ||
defined(_ALPHA) || defined(__alpha)
double val = 0.0;
((php_uint32*)val)[1] = PHP_DOUBLE_QUIET_NAN_HIGH;
((php_uint32*)val)[0] = 0;
return val;
#elif HAVE_ATOF_ACCEPTS_NAN
return atof(NAN);
#else
return 0.0/0.0;
#endif
}

and found that the local build goes through the first if section,
that is, HAVE_HUGE_VAL_NAN is true. We can't step through the Windows
binary we downloaded but guessing that it's not executing the same
section. 

Reproduce code:
---
?php
echo NAN= ;
var_dump(NAN);
?


Expected result:

NAN= float(NAN)

Actual result:
--
NAN= float(0)





-- 
Edit this bug report at http://bugs.php.net/?id=42143edit=1



#42143 [Asn]: The constant NAN is reported as 0 on Windows build

2007-08-02 Thread pajoye
 ID:   42143
 Updated by:   [EMAIL PROTECTED]
 Reported By:  zoe at uk dot ibm dot com
 Status:   Assigned
 Bug Type: Math related
 Operating System: Windows
 PHP Version:  5CVS-2007-07-30 (snap)
 Assigned To:  edink
 New Comment:

I tried using vc 2k3 and 2k5 and NAN is correctly defined. VC6 seems to
have a different way to define/get/use NAN. Maybe we can rely on
fmod(1,0) instead (always return NaN on windows).


Previous Comments:


[2007-07-31 11:42:49] [EMAIL PROTECTED]

Edin, can you check if there's some problem with the win32 build in
this?



[2007-07-30 08:05:26] zoe at uk dot ibm dot com

Description:

The constant NAN is reported as '0' on the Windows binary downloaded
from the snaps.php.net site. The function is correct on Linux.

A colleague built locally (on Windows) from source and got the correct
value for NAN (ie NAN). We stepped through this code (in
basic_functions.c): 

PHPAPI double php_get_nan(void)
{
#if HAVE_HUGE_VAL_NAN
return HUGE_VAL + -HUGE_VAL;
#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) ||
defined(_ALPHA) || defined(__alpha)
double val = 0.0;
((php_uint32*)val)[1] = PHP_DOUBLE_QUIET_NAN_HIGH;
((php_uint32*)val)[0] = 0;
return val;
#elif HAVE_ATOF_ACCEPTS_NAN
return atof(NAN);
#else
return 0.0/0.0;
#endif
}

and found that the local build goes through the first if section,
that is, HAVE_HUGE_VAL_NAN is true. We can't step through the Windows
binary we downloaded but guessing that it's not executing the same
section. 

Reproduce code:
---
?php
echo NAN= ;
var_dump(NAN);
?


Expected result:

NAN= float(NAN)

Actual result:
--
NAN= float(0)





-- 
Edit this bug report at http://bugs.php.net/?id=42143edit=1


#42143 [Asn]: The constant NAN is reported as 0 on Windows build

2007-08-02 Thread stas
 ID:   42143
 Updated by:   [EMAIL PROTECTED]
 Reported By:  zoe at uk dot ibm dot com
 Status:   Assigned
 Bug Type: Math related
 Operating System: Windows
 PHP Version:  5CVS-2007-07-30 (snap)
 Assigned To:  edink
 New Comment:

Saw a bug under msvc2005 that can be related to this - get_nan()
function produced FP exception. Weird thing is that it happens only if
engine is started, shut down and then started again inside the same
process. Maybe has something to do with some kind of floating point.
Using PHP_DOUBLE_QUIET_NAN_HIGH instead seems to fix the problem. 


Previous Comments:


[2007-08-02 09:47:42] [EMAIL PROTECTED]

I tried using vc 2k3 and 2k5 and NAN is correctly defined. VC6 seems to
have a different way to define/get/use NAN. Maybe we can rely on
fmod(1,0) instead (always return NaN on windows).



[2007-07-31 11:42:49] [EMAIL PROTECTED]

Edin, can you check if there's some problem with the win32 build in
this?



[2007-07-30 08:05:26] zoe at uk dot ibm dot com

Description:

The constant NAN is reported as '0' on the Windows binary downloaded
from the snaps.php.net site. The function is correct on Linux.

A colleague built locally (on Windows) from source and got the correct
value for NAN (ie NAN). We stepped through this code (in
basic_functions.c): 

PHPAPI double php_get_nan(void)
{
#if HAVE_HUGE_VAL_NAN
return HUGE_VAL + -HUGE_VAL;
#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) ||
defined(_ALPHA) || defined(__alpha)
double val = 0.0;
((php_uint32*)val)[1] = PHP_DOUBLE_QUIET_NAN_HIGH;
((php_uint32*)val)[0] = 0;
return val;
#elif HAVE_ATOF_ACCEPTS_NAN
return atof(NAN);
#else
return 0.0/0.0;
#endif
}

and found that the local build goes through the first if section,
that is, HAVE_HUGE_VAL_NAN is true. We can't step through the Windows
binary we downloaded but guessing that it's not executing the same
section. 

Reproduce code:
---
?php
echo NAN= ;
var_dump(NAN);
?


Expected result:

NAN= float(NAN)

Actual result:
--
NAN= float(0)





-- 
Edit this bug report at http://bugs.php.net/?id=42143edit=1


#42143 [Asn]: The constant NAN is reported as 0 on Windows build

2007-08-02 Thread pajoye
 ID:   42143
 Updated by:   [EMAIL PROTECTED]
 Reported By:  zoe at uk dot ibm dot com
 Status:   Assigned
 Bug Type: Math related
 Operating System: Windows
 PHP Version:  5CVS-2007-07-30 (snap)
 Assigned To:  edink
 New Comment:

Little notice about VC6, using it with the very last SDK works. I'm not
sure which SDK is used on our win32 build box. It may be a platform sdk
bug more than a VC bug. Edin, can you try to upgrade the SDK (if we can
upgrade it:)?


Previous Comments:


[2007-08-02 22:27:25] [EMAIL PROTECTED]

Saw a bug under msvc2005 that can be related to this - get_nan()
function produced FP exception. Weird thing is that it happens only if
engine is started, shut down and then started again inside the same
process. Maybe has something to do with some kind of floating point.
Using PHP_DOUBLE_QUIET_NAN_HIGH instead seems to fix the problem. 



[2007-08-02 09:47:42] [EMAIL PROTECTED]

I tried using vc 2k3 and 2k5 and NAN is correctly defined. VC6 seems to
have a different way to define/get/use NAN. Maybe we can rely on
fmod(1,0) instead (always return NaN on windows).



[2007-07-31 11:42:49] [EMAIL PROTECTED]

Edin, can you check if there's some problem with the win32 build in
this?



[2007-07-30 08:05:26] zoe at uk dot ibm dot com

Description:

The constant NAN is reported as '0' on the Windows binary downloaded
from the snaps.php.net site. The function is correct on Linux.

A colleague built locally (on Windows) from source and got the correct
value for NAN (ie NAN). We stepped through this code (in
basic_functions.c): 

PHPAPI double php_get_nan(void)
{
#if HAVE_HUGE_VAL_NAN
return HUGE_VAL + -HUGE_VAL;
#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) ||
defined(_ALPHA) || defined(__alpha)
double val = 0.0;
((php_uint32*)val)[1] = PHP_DOUBLE_QUIET_NAN_HIGH;
((php_uint32*)val)[0] = 0;
return val;
#elif HAVE_ATOF_ACCEPTS_NAN
return atof(NAN);
#else
return 0.0/0.0;
#endif
}

and found that the local build goes through the first if section,
that is, HAVE_HUGE_VAL_NAN is true. We can't step through the Windows
binary we downloaded but guessing that it's not executing the same
section. 

Reproduce code:
---
?php
echo NAN= ;
var_dump(NAN);
?


Expected result:

NAN= float(NAN)

Actual result:
--
NAN= float(0)





-- 
Edit this bug report at http://bugs.php.net/?id=42143edit=1