|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1932 Details
Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges
This page provides all information on Problem Report 1932.
Report 1932 Actions
Problem Report Number 1932 Submitter's Classification Test Suite problem State Resolved Resolution Rejected (REJ) Problem Resolution ID REJ.X.0568 Raised 2002-07-29 08:00 Updated 2003-03-13 08:00 Published null Product Standard Internationalised System Calls and Libraries Extended V2 (UNIX 98) Certification Program The Open Brand certification program Test Suite VSX4 version 4.4.5 Test Identification XPG4.hdr/misc/float 4 Problem Summary PG5R.011 Examining the source code, if you look at routine ldbl_max, it tries to compute the maximum long double by multiplying 1.0L - ldbl_epsilon() by 2**max_exp. (ldbl_epsilon() actually returns an ulp(1.0L... Problem Text
Examining the source code, if you look at routine ldbl_max,
it tries to compute the maximum long double by multiplying
1.0L - ldbl_epsilon() by 2**max_exp. (ldbl_epsilon() actually
returns an ulp(1.0L)).Bottom line, this isn't valid for our
representation of long doubles; The largest (finite) long double on
our system is (7fefff...fff, 0x7c8fff...ff) (as a sum of two doubles),
or 0x7fefff...fff7fff...ffc in the usual floating point
representation. The conclusion from all this is that the test is
assuming an IEEE-like representation in its computations, and that is
not true on our systems. We represent a long double on our machines
by the sum or difference of two doubles, rounded to 107 bits after
each operation (i.e. +, -, *, /). We operate only in round-to-nearest
rounding mode, and the basic machine operations are NOT accurate to a
half ulp, as are the machine instructions for float and double
precision.
Additional test output information (Test Strategy):
Test Strategy:
VERIFY FLT_RADIX by
REPEATEDLY doubling a variable (t1 initially 1.0) until adding 1.0
has no effect
REPEATEDLY doubling a variable (t2 initially 1.0) until (t1+t2) is
not equal to t1
VERIFYING FLT_RADIX is ((t1+t2)-t1)
VERIFY FLT_EPSILON by
REPEATEDLY dividing a variable (initially 1.0 ) by the calculated
FLT_RADIX until (1.0 + variable) != 1.0
VERIFYING FLT_EPSILON is the value of the variable
VERIFY FLT_MAX_EXP by
REPEATEDLY multiplying a variable (newmax initially (calculated
FLT_RADIX+1.0) by the calculated FLT_RADIX until infinity is
reached, or a floating point exception is raised
VERIFYING FLT_MAX_EXP is the number of executions of the above loop
+ 1
VERIFY FLT_MAX by
LOOP multiplying a variable (initially 1.0 minus calculated
FLT_EPSILON) by the calculated FLT_RADIX, FLT_MAX_EXP times
VERIFYING FLT_MAX is the value of the variable
VERIFY FLT_MIN_EXP by
SET z to 1.0/(calculated FLT_RADIX), z1 to 1.0+(calculated
FLT_EPSILON)
REPEAT copy z,z1 into stores (y,y1) and multiply z, z1 by z, until
((1+z)+(1+z)==0) or an overflow occurs or (z1/y)!=(z1) or (abs(z)
>= y)
REPEAT copy y,y1 into stores (z,z1) and divide y, y1 by the
calculated FLT_RADIX, until ((1.0+y1)+(1.0+y1)==0) or and overflow
occurs or (z1 != y1*(calculated FLT_RADIX)) or (abs(y) >= z)
VERIFY FLT_MIN_EXP is the unary minus count of the execution of both
loops, plus one
VERIFY FLT_MIN by
LOOP dividing a variable (initially 1.0) by the calculated
FLT_RADIX, calculated FLT_MIN_EXP times
VERIFYING FLT_MIN is the value of the variable
VERIFY FLT_MAX_10_EXP by
WHILE a variable (initially 1.0) is less than (calculated
FLT_MAX)/10, multiply the variable by 10
VERIFYING FLT_MAX_10_EXP is the number of loop executions
VERIFY FLT_MIN_10_EXP by
WHILE a variable (initially 1.0) is greater than (calculated
FLT_MIN)*10, divide the variable by 10
VERIFYING FLT_MIN_10_EXP is the number of loop executions
VERIFY FLT_DIG by
REPEAT multiply a variable (initially 1.0) by (calculated FLT_RADIX)
until (((b+1.0)-b)-1.0) != zero
DIVIDE variable by (calculated FLT_RADIX), and add 1.0 if calculated
FLT_RADIX is 10
WHILE variable is greater or equal to 10.0, divide variable by 10.0
VERIFYING FLT_DIG is equal to the number of executions of the last
loop
VERIFY FLT_MANT_DIG by
REPEAT multiply a variable (initially 1.0) by (calculated FLT_RADIX)
until (((b+1.0)-b)-1.0) != zero
VERIFYING FLT_MANT_DIG is equal to the number of executions of the
loop
VERIFY DBL_EPSILON by
REPEATEDLY dividing a variable (initially 1.0 ) by the calculated
FLT_RADIX until (1.0 + variable) != 1.0
VERIFYING DBL_EPSILON is the value of the variable
VERIFY DBL_MAX_EXP by
REPEATEDLY multiplying a variable (newmax initially (calculated
FLT_RADIX+1.0) by the calculated FLT_RADIX until infinity is
reached, or a floating point exception is raised
VERIFYING DBL_MAX_EXP is the number of executions of the above loop
+ 1
VERIFY DBL_MAX by
LOOP multiplying a variable (initially 1.0 minus calculated
DBL_EPSILON) by the calculated FLT_RADIX, DBL_MAX_EXP times
VERIFYING DBL_MAX is the value of the variable
VERIFY DBL_MIN_EXP by
SET z to 1.0/(calculated FLT_RADIX), z1 to 1.0+(calculated
DBL_EPSILON)
REPEAT copy z,z1 into stores (y,y1) and multiply z, z1 by z, until
((1+z)+(1+z)==0) or an overflow occurs or (z1/y)!=(z1) or (abs(z)
>= y)
REPEAT copy y,y1 into stores (z,z1) and divide y, y1 by the
calculated FLT_RADIX, until ((1.0+y1)+(1.0+y1)==0) or and overflow
occurs or (z1 != y1*(calculated FLT_RADIX)) or (abs(y) >= z)
VERIFY DBL_MIN_EXP is the unary minus count of the execution of both
loops, plus one
VERIFY DBL_MIN by
LOOP dividing a variable (initially 1.0) by the calculated
FLT_RADIX, calculated DBL_MIN_EXP times
VERIFYING DBL_MIN is the value of the variable
VERIFY DBL_MAX_10_EXP by
WHILE a variable (initially 1.0) is less than (calculated
DBL_MAX)/10, multiply the variable by 10
VERIFYING DBL_MAX_10_EXP is the number of loop executions
VERIFY DBL_MIN_10_EXP by
WHILE a variable (initially 1.0) is greater than (calculated
DBL_MIN)*10, divide the variable by 10
VERIFYING DBL_MIN_10_EXP is the number of loop executions
VERIFY DBL_DIG by
REPEAT multiply a variable (initially 1.0) by (calculated FLT_RADIX)
until (((b+1.0)-b)-1.0) != zero
DIVIDE variable by (calculated FLT_RADIX), and add 1.0 if calculated
FLT_RADIX is 10
WHILE variable is greater or equal to 10.0, divide variable by 10.0
VERIFYING DBL_DIG is equal to the number of executions of the last
loop
VERIFY DBL_MANT_DIG by
REPEAT multiply a variable (initially 1.0) by (calculated FLT_RADIX)
until (((b+1.0)-b)-1.0) != zero
VERIFYING DBL_MANT_DIG is equal to the number of executions of the
loop
VERIFY LDBL_EPSILON by
REPEATEDLY dividing a variable (initially 1.0 ) by the calculated
FLT_RADIX until (1.0 + variable) != 1.0
VERIFYING LDBL_EPSILON is the value of the variable
VERIFY LDBL_MAX_EXP by
REPEATEDLY multiplying a variable (newmax initially (calculated
FLT_RADIX+1.0) by the calculated FLT_RADIX until infinity is
reached, or a floating point exception is raised
VERIFYING LDBL_MAX_EXP is the number of executions of the above loop
+ 1
VERIFY LDBL_MAX by
LOOP multiplying a variable (initially 1.0 minus calculated
LDBL_EPSILON) by the calculated FLT_RADIX, LDBL_MAX_EXP times
VERIFYING LDBL_MAX is the value of the variable
VERIFY LDBL_MIN_EXP by
SET z to 1.0/(calculated FLT_RADIX), z1 to 1.0+(calculated
LDBL_EPSILON)
REPEAT copy z,z1 into stores (y,y1) and multiply z, z1 by z, until
((1+z)+(1+z)==0) or an overflow occurs or (z1/y)!=(z1) or (abs(z)
>= y)
REPEAT copy y,y1 into stores (z,z1) and divide y, y1 by the
calculated FLT_RADIX, until ((1.0+y1)+(1.0+y1)==0) or and overflow
occurs or (z1 != y1*(calculated FLT_RADIX)) or (abs(y) >= z)
VERIFY LDBL_MIN_EXP is the unary minus count of the execution of
both loops, plus one
VERIFY LDBL_MIN by
LOOP dividing a variable (initially 1.0) by the calculated
FLT_RADIX, calculated LDBL_MIN_EXP times
VERIFYING LDBL_MIN is the value of the variable
VERIFY LDBL_MAX_10_EXP by
WHILE a variable (initially 1.0) is less than (calculated
LDBL_MAX)/10, multiply the variable by 10
VERIFYING LDBL_MAX_10_EXP is the number of loop executions
VERIFY LDBL_MIN_10_EXP by
WHILE a variable (initially 1.0) is greater than (calculated
LDBL_MIN)*10, divide the variable by 10
VERIFYING LDBL_MIN_10_EXP is the number of loop executions
VERIFY LDBL_DIG by
REPEAT multiply a variable (initially 1.0) by (calculated FLT_RADIX)
until (((b+1.0)-b)-1.0) != zero
DIVIDE variable by (calculated FLT_RADIX), and add 1.0 if calculated
FLT_RADIX is 10
WHILE variable is greater or equal to 10.0, divide variable by 10.0
VERIFYING LDBL_DIG is equal to the number of executions of the last
loop
VERIFY LDBL_MANT_DIG by
REPEAT multiply a variable (initially 1.0) by (calculated FLT_RADIX)
until (((b+1.0)-b)-1.0) != zero
VERIFYING LDBL_MANT_DIG is equal to the number of executions of the
loopTest Output
************************************************************************
/tset/XPG4.hdr/misc/float/T.float 4 Failed
Test Description:
When the values for the following symbolic names can be determined
arithmetically, then the symbolic names evaluate to the same value:
FLT_DIG, DBL_DIG, LDBL_DIG, FLT_MIN_EXP, DBL_MIN_EXP, LDBL_MIN_EXP,
FLT_MIN_10_EXP, DBL_MIN_10_EXP, LDBL_MIN_10_EXP, FLT_MAX_EXP,
DBL_MAX_EXP, LDBL_MAX_EXP, FLT_MAX_10_EXP, DBL_MAX_10_EXP,
LDBL_MAX_10_EXP, FLT_MAX, DBL_MAX, LDBL_MAX, FLT_EPSILON, DBL_EPSILON,
LDBL_EPSILON, FLT_MANT_DIG, DBL_MANT_DIG, LDBL_MANT_DIG, FLT_MIN,
DBL_MIN, LDBL_MIN and FLT_RADIX.
Test Information:
Feature test macros: -D_XOPEN_SOURCE=500
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275
Feature test macros: -D_XOPEN_SOURCE=500 -D_POSIX_SOURCE
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275
Feature test macros: -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=1
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275
Feature test macros: -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=1
-D_POSIX_SOURCE
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275
Feature test macros: -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=2
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275
Feature test macros: -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=2
-D_POSIX_SOURCE
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275
Feature test macros: -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=199309
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275
Feature test macros: -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=199309
-D_POSIX_SOURCE
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275
Feature test macros: -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=199506
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275
Feature test macros: -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=199506
-D_POSIX_SOURCE
Compiler or run-time messages or results:
Value of LDBL_MAX is incorrect
Observed: 1.797693134862315807937289714053e+308
Expected: inf
Value of LDBL_MIN_EXP is incorrect
Observed: -1021
Expected: -915
Value of LDBL_MIN is incorrect
Observed: 2.225073858507201383090232717332e-308
Expected: 1.805194375864829576069262081174e-276
Value of LDBL_MAX_10_EXP is incorrect
Observed: 308
Expected: 309
Value of LDBL_MIN_10_EXP is incorrect
Observed: -307
Expected: -275Review Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
The definition of LDBL_MAX in <float.h> on page 1078 of the System
Interface and Headers Issue 5 Volume 2 states that LDBL_MAX equates to
(1-b**(-p))xb**(emax). This equation is used in the calculation and seems
not to match the value provided by the system.
The submitter needs to show that the floating point values used in the
implementation match the model for characteristics of floating types
defined in the specification.
It is recommended that this waiver request is refused.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Rejected (REJ) Review Conclusion
This request is refused.
Problem Reporting System Options:
- View Report 1932
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority