IBM Support

IV23305: INACCURATE/INVALID RESULTS RETURNED BY SOME MATH LIBRARY APIS APPLIES TO AIX 7100-00

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Some APIs in the math library are showing incorrect
    values.
    For example lrint() API returns wrong value.
    

Local fix

  • Use a copy of 6.1 version of libm.a instead.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:
    * Systems running the 7100-00 Technology Level with
    * bos.adt.prof below the 7.1.0.20 level and/or bos.adt.libm
    * below the 7.1.0.17 level.
    ****************************************************************
    * PROBLEM DESCRIPTION:
    * This APAR addresses inaccuracies/invalid results returned by
    * some of the functions in the AIX math library in early AIX 7.1
    * levels that do not have this APAR installed. It also addresses
    * a linker error that may be seen when using the sqrt()
    * function.
    *
    * Inaccuracies may be seen in math functions such as pow(),
    * exp() and assorted trigonometric functions. The symptoms range
    * from valid but slightly different values in the least
    * significant digits, to significant inaccuracies, depending on
    * the function and the arguments it is called with.
    *
    * Examples of the data discrepancies for known impacted APIs
    * includes small errors in acos, asin, and atan (but still
    * under 1 ulp), and larger errors in cosh, exp, expm1, pow,
    * sinh, up to 500 ulps. The trigonometric functions cos, cosf,
    * sin, sinf, tan, tanf can be accurate for small-magnitude
    * arguments but can have complete loss of significance for very
    * large magnitude arguments. The most serious impact to users of
    * the problem library is likely to occur with applications
    * calling the double-precision trigonometric functions with
    * large arguments (>16), or the single-precision trigonometric
    * functions with very large arguments (>2ª18).
    *
    * Invalid results can be seen with llrint(), llrintl() and
    * lrint() functions in 64 bit mode.  The issue is caused by an
    * internal max value check using an invalid literal value,
    * resulting in a return value of -1, and errno set to 33. The
    * issue was fixed, and correct max value literals are now used.
    *
    * Linker error of the form .ld:  0711-768 WARNING: Object
    * /usr/lib/libm.a sqrt_raise_xcp.o , section 1, function
    * .strcmp: The branch at address 0x40 is not  followed by a
    * recognized no-op or TOC-reload instruction. may be seen when
    * using the sqrt() function. The issue was resolved and the
    * __sqrt_raise_xcp now contains the necessary no-op instruction.
    *
    * For any programs using libm.a functions that were linked on
    * AIX 7.1,  it is recommended that this APAR be installed and
    * the program relinked.  The program must be relinked since
    * libm.a is a static library.
    *
    * The inaccuracy in certain floating-point calculations is a
    * result of a change that had been made in the initial releases
    * of the XL C/C++ for AIX, V11.1 and XL Fortran for AIX, V13.1
    * compilers.  Affected versions are XLC/C++ V11.1.0.0 through
    * V11.1.0.4 and XLF V13.1.0.0 through V13.1.0.4.  Code generated
    * for floating point calculations of the form ' a - b * c '
    * utilizes fmul and fsub instructions with these versions,
    * instead of the fnmsub instruction used in other compiler
    * versions.  The rounding difference between these two
    * instruction sequences can lead to small differences in the
    * computed result.  The issue was corrected in
    * XLC V11.1.0.5 (IZ96351), XLC/C++ V11.1.0.5 (IZ96352), and
    * XLF V13.1.0.5 (IZ96353).  If using the affected compiler
    * versions noted above,  it is also recommended to move to the
    * latest PTF release of the compiler.
    ****************************************************************
    * RECOMMENDATION:
    * Install APAR IV23305.
    ****************************************************************
    

Problem conclusion

  • Makefile changes to pick new compiler for libm
    

Temporary fix

  • *********
    * HIPER *
    *********
    

Comments

  • 7100-00 - use AIX APAR IV23305
    

APAR Information

  • APAR number

    IV23305

  • Reported component name

    AIX V7.1

  • Reported component ID

    5765H4000

  • Reported release

    710

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    YesHIPER

  • Submitted date

    2012-06-19

  • Closed date

    2012-06-22

  • Last modified date

    2013-04-09

  • APAR is sysrouted FROM one or more of the following:

    IV22812

  • APAR is sysrouted TO one or more of the following:

    U857205

Fix information

  • Fixed component name

    AIX V7.1

  • Fixed component ID

    5765H4000

Applicable component levels

  • R710 PSY U857205

       UP12/12/11 I 1000

[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSMV87","label":"AIX 6.1 Enterprise Edition"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"710","Edition":"","Line of Business":{"code":"LOB08","label":"Cognitive Systems"}},{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSMVAX","label":"AIX Express Edition"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"710","Edition":"","Line of Business":{"code":"LOB08","label":"Cognitive Systems"}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG11R","label":"AIX 7.1 HIPERS, APARs and Fixes"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"710","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
09 April 2013