[cfp-interest 3542] use of reserved exp in frexp*, ldexp* and scalbn* prototypes
Vincent Lefevre
vincent at vinc17.net
Wed Jul 2 00:50:28 PDT 2025
In ISO C23 and still in the N3550 C2y draft, B.11 (<math.h>)
and H.11.3p1:
_FloatN frexpfN(_FloatN value, int *exp);
_FloatNx frexpfNx(_FloatNx value, int *exp);
_DecimalN frexpdN(_DecimalN value, int *exp);
_DecimalNx frexpdNx(_DecimalNx value, int *exp);
and
_FloatN ldexpfN(_FloatN value, int exp);
_FloatNx ldexpfNx(_FloatNx value, int exp);
_DecimalN ldexpdN(_DecimalN value, int exp);
_DecimalNx ldexpdNx(_DecimalNx value, int exp);
and
_FloatN scalbnfN(_FloatN value, int exp);
_FloatNx scalbnfNx(_FloatNx value, int exp);
_DecimalN scalbndN(_DecimalN value, int exp);
_DecimalNx scalbndNx(_DecimalNx value, int exp);
_FloatN scalblnfN(_FloatN value, long int exp);
_FloatNx scalblnfNx(_FloatNx value, long int exp);
_DecimalN scalblndN(_DecimalN value, long int exp);
_DecimalNx scalblndNx(_DecimalNx value, long int exp);
However, exp is a standard library function, thus the exp identifier
is reserved for any use. So the above prototypes are incorrect.
Earlier, one has:
double frexp(double value, int *p);
float frexpf(float value, int *p);
long double frexpl(long double value, int *p);
double ldexp(double x, int p);
float ldexpf(float x, int p);
long double ldexpl(long double x, int p);
double scalbn(double x, int n);
float scalbnf(float x, int n);
long double scalbnl(long double x, int n);
double scalbln(double x, long int n);
float scalblnf(float x, long int n);
long double scalblnl(long double x, long int n);
So, for consistency, p and n could be used respectively,
instead of exp.
H.11.3p2 and H.11.3p3 would also need to be updated.
Also in F.10.4.9:
"On a binary system, ldexp(x, exp) is equivalent to scalbn(x, exp)."
BTW, there is a similar issue in 7.17.7.5p7, which contains the
following example:
exp = atomic_load(&cur);
do {
des = function(exp);
} while (!atomic_compare_exchange_weak(&cur, &exp, des));
--
Vincent Lefèvre <vincent at vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Pascaline project (LIP, ENS-Lyon)
More information about the cfp-interest
mailing list