Fix #314: tanh incorrect for large args
For args with a real part greater than about 177, cmucl returns
#c(1.0 -1.0)
for (tanh #c(200d0 -200d0))
. The correct answer is
#C(1.0 -0.0)
. We were incorrectly computing the imaginary part as
the sign of the imaginary part of the arg. However, we were supposed
to copy the sign of the imaginary part of the arg to 0.
While we're at it, remove the reader code selecting different ways to
compute (asinh most-positive-double-float)
. Fdlibm should produce a
correct value here.
Add a test for this as well.