C99 7.12.1 Treatment of error conditions paragraph 1 has: Each function shall execute as if it were a single operation without generating any externally visible exceptional conditions.
As written, I believe that means that errno
cannot be altered by any math function, nor can any of the
floating-point exceptions mentioned later in 7.12.1 ("invalid",
"divide-by-zero", "overflow", "underflow") be raised by any
math function.
That was not our intent.
Seems to me that there are two problems with that text in 7.12.1: