This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of NAD status.
Section: 28.7 [c.math] Status: NAD Submitter: Judy Ward Opened: 2000-12-30 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [c.math].
View all issues with NAD status.
Discussion:
In ISO/IEC 9899:1990 Programming Languages C we find the following concerning <math.h>:
7.13.4 Mathematics <math.h>
The names of all existing functions declared in the <math.h> header, suffixed with f or l, are reserved respectively for corresponding functions with float and long double arguments are return values.
For example, float sinf(float) is reserved.
In the C99 standard, <math.h> must contain declarations for these functions.
So, is it acceptable for an implementor to add these prototypes to the C++ versions of the math headers? Are they required?
Proposed resolution:
Add these Functions to Table 80, section 26.5 and to Table 99, section C.2:
acosf asinf atanf atan2f ceilf cosf coshf expf fabsf floorf fmodf frexpf ldexpf logf log10f modff powf sinf sinhf sqrtf tanf tanhf acosl asinl atanl atan2l ceill cosl coshl expl fabsl floorl fmodl frexpl ldexpl logl log10l modfl powl sinl sinhl sqrtl tanl tanhl
There should probably be a note saying that these functions are optional and, if supplied, should match the description in the 1999 version of the C standard. In the next round of C++ standardization they can then become mandatory.
Rationale:
The C90 standard, as amended, already permits (but does not require) these functions, and the C++ standard incorporates the C90 standard by reference. C99 is not an issue, because it is never referred to by the C++ standard.