Changes in math library functions

As of z/OS® V1R9, certain IEEE754 fdlibm math functions are replaced by code written by IBM Research.

The earlier versions of functions that are more closely aligned with the C99 standard are no longer available. Neither the _IEEEV1_COMPATIBILITY feature test macro nor the _EDC_IEEEV1_COMPATIBILITY environment variable can be used to affect these functions.

The earlier versions of functions with performance and accuracy enhancements are still available. See Table 1.

To use earlier versions of the IEEE754 fdlibm math functions, use either of the following methods:
  • When using the FLOAT(IEEE) compiler option, use the _IEEEV1_COMPATIBILITY feature test macro.
  • When variable mode is in effect, use environment variable _EDC_IEEEV1_COMPATIBILITY_ENV=ON.
    Note: Variable mode is in effect under either of the following conditions:
    • The _FP_MODE_VARIABLE feature test macro is used.
    • The math.h header file is not included.
To modify your source code to use the new performance and accuracy enhancements, use the information in Table 1.
Table 1. IEEE754 fdlibm math functions replaced in z/OS V1R9 XL C/C++
Math functions that are enhanced for performance and accuracy Math functions that are replaced but still available
  • acos()
  • acosh()
  • asin()
  • asinh()
  • atan()
  • atanh()
  • atan2()
  • cbrt()
  • cos()
  • cosh()
  • erf()
  • erfc()
  • exp()
  • expm1()
  • gamma()
  • hypot()
  • lgamma()
  • log()
  • log1p()
  • log10()
  • pow()
  • rint()
  • sin()
  • sinh()
  • tan()
  • tanh()
  • acosl()
  • asinl()
  • atanl()
  • atan2l()
  • coshl()
  • cosl()
  • frexpl()
  • ldexpl()
  • log10l()
  • modfl()
  • powl()
  • sinhl()
  • tanl()
  • tanhl()