[ 
https://issues.apache.org/jira/browse/STDCXX-897?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Farid Zaripov updated STDCXX-897:
---------------------------------

    Description: 
The 18.numeric.special.float test fails with the following assertions:

{noformat}
# ASSERTION (S7) (4 lines):
# TEXT: _fpclass(numeric_limits<float>::signaling_NaN()) == 1 (_FPCLASS_SNAN), 
got 2 (_FPCLASS_QNAN)
# CLAUSE: numeric.special
# LINE: 318

# ASSERTION (S7) (4 lines):
# TEXT: numeric_limits<float>::has_denorm == -1, got 1
# CLAUSE: numeric.special
# LINE: 1360

# ASSERTION (S7) (4 lines):
# TEXT: numeric_limits<double>::has_denorm == -1, got 1
# CLAUSE: numeric.special
# LINE: 1360

# ASSERTION (S7) (4 lines):
# TEXT: numeric_limits<long double>::has_denorm == -1, got 1
# CLAUSE: numeric.special
# LINE: 1360
{noformat}

The first assertions is caused due to MSVC provides _fpclass() function for 
double type only and X87 and SSE floating point commands are incorrect 
converting float signaling NaN value to double type. So for example the float 
signaling NaN value with bitmask 0x7F800001, calculated in INFINITY config 
test, is converted to double value with bitmask 0x7ff8000020000000, which is a 
quiet NaN value.

The rest of the assertions are caused due to test expects, that 
numeric_limits<>::has_denorm == 1 on the _AIX, __hpux and __osf__ platforms 
only.

  was:
The 18.numeric.special.float test fails with the following assertions:

{noformat}
# ASSERTION (S7) (4 lines):
# TEXT: _fpclass(numeric_limits<float>::signaling_NaN()) == 1 (_FPCLASS_SNAN), 
got 2 (_FPCLASS_QNAN)
# CLAUSE: numeric.special
# LINE: 318

# ASSERTION (S7) (4 lines):
# TEXT: numeric_limits<float>::has_denorm == -1, got 1
# CLAUSE: numeric.special
# LINE: 1360

# ASSERTION (S7) (4 lines):
# TEXT: numeric_limits<double>::has_denorm == -1, got 1
# CLAUSE: numeric.special
# LINE: 1360

# ASSERTION (S7) (4 lines):
# TEXT: numeric_limits<long double>::has_denorm == -1, got 1
# CLAUSE: numeric.special
# LINE: 1360
{noformat}

The first assertions is caused due to MSVC provides _fpclass() function for 
double type only and X87 and SSE floating point commands are incorrect 
converting float signaling NaN value to double type. So for example the float 
signaling NaN value with bitmask 0x7F800001, calculated in INFINITY config 
test, is converted to double value with bitmask 0x7ff8000020000000, which is a 
quiet NaN value.

The rest of the assertions are caused due to test expects, that 
numeric_limits<>::has_denorm == 1 on the _AIX, __hpux and __osf__ platforms.


> [MSVC] 18.numeric.special.float test fails
> ------------------------------------------
>
>                 Key: STDCXX-897
>                 URL: https://issues.apache.org/jira/browse/STDCXX-897
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: 18. Language Support
>    Affects Versions: 4.2.1
>         Environment: MSVC
>            Reporter: Farid Zaripov
>            Priority: Trivial
>             Fix For: 4.2.2
>
>         Attachments: 18.numeric.special.float.cpp.diff
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> The 18.numeric.special.float test fails with the following assertions:
> {noformat}
> # ASSERTION (S7) (4 lines):
> # TEXT: _fpclass(numeric_limits<float>::signaling_NaN()) == 1 
> (_FPCLASS_SNAN), got 2 (_FPCLASS_QNAN)
> # CLAUSE: numeric.special
> # LINE: 318
> # ASSERTION (S7) (4 lines):
> # TEXT: numeric_limits<float>::has_denorm == -1, got 1
> # CLAUSE: numeric.special
> # LINE: 1360
> # ASSERTION (S7) (4 lines):
> # TEXT: numeric_limits<double>::has_denorm == -1, got 1
> # CLAUSE: numeric.special
> # LINE: 1360
> # ASSERTION (S7) (4 lines):
> # TEXT: numeric_limits<long double>::has_denorm == -1, got 1
> # CLAUSE: numeric.special
> # LINE: 1360
> {noformat}
> The first assertions is caused due to MSVC provides _fpclass() function for 
> double type only and X87 and SSE floating point commands are incorrect 
> converting float signaling NaN value to double type. So for example the float 
> signaling NaN value with bitmask 0x7F800001, calculated in INFINITY config 
> test, is converted to double value with bitmask 0x7ff8000020000000, which is 
> a quiet NaN value.
> The rest of the assertions are caused due to test expects, that 
> numeric_limits<>::has_denorm == 1 on the _AIX, __hpux and __osf__ platforms 
> only.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to