This document relates to an issue described in reflector message 14270 (May 2016), and agreed on by the DR submitter in reflector message 14332 (August 2016).

DR#471 says that cacosh(0.0 + *i*NaN) should return NaN
+ *i*π/2.

Now, cacosh(0.0 + *i*y) has imaginary part π/2 for
positive y and −π/2 for negative y. Furthermore, the
first bullet point for cacosh in G.6.2.1 says that cacosh(conj(z))
= conj(cacosh(z)). And it is also the general rule in C11 that
the sign of a NaN is not significant.

Thus, I think that cacosh(0.0 + *i*NaN) should actually
return NaN ± *i*π/2, where the sign of the imaginary
part is unspecified – similar to cacos(Inf + *i*NaN),
csqrt(−Inf + *i*NaN) and many other cases where the
sign of a zero or infinite part of a complex result is
unspecified. If you make the sign specified, either you violate
cacosh(conj(z)) = conj(cacosh(z)) or you violate the rule about
signs of NaNs not being significant.

Proposed change to the resolution of DR#471: change
“returns NaN + *i*π/2” to “returns NaN
± *i*π/2 (where the sign of the imaginary part of the
result is unspecified)”.