HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1932 Details

Help 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
    loop
    Test 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: -275

    Review 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:

     

    Back   


Contact the Certification Authority