Complex arg-trig functions
    Stephen Montgomery-Smith 
    stephen at missouri.edu
       
    Sat Sep 22 21:12:41 UTC 2012
    
    
  
Here is a little cleaning in the code.
	/* To ensure the same accuracy as atan(), and to filter out z = 0. */
	if (x == 0)
		return (cpack(x, atan(y)));
	if (isnan(x) || isnan(y)) {
		/* catanh(+-Inf + I*NaN) = +-0 + I*NaN */
		if (isinf(x))
			return (cpack(copysign(0, x), y+y));
		/* catanh(NaN + I*+-Inf) = sign(NaN)0 + I*+-PI/2 */
		if (isinf(y))
			return (cpack(copysign(0, x), copysign(pio2_hi + pio2_lo, y)));
-		/* catanh(+-0 + I*NaN) = +-0 + I*NaN */
-		if (x == 0)
-			return (cpack(x, y+y));
    
    
More information about the freebsd-numerics
mailing list