public static double atanh ( double a ) { boolean negative = false ; if ( a < 0 ) { negative = true ; a = - a ; } double absAtanh ; if ( a > 0.15 ) { absAtanh = 0.5 * Math . log ( ( 1 + a ) / ( 1 - a ) ) ; } else { final double a2 = a * a ; if ( a > 0.087 ) { absAtanh = a * ( 1 + a2 * ( F_1_3 + a2 * ( F_1_5 + a2 * ( F_1_7 + a2 * ( F_1_9 + a2 * ( F_1_11 + a2 * ( F_1_13 + a2 * ( F_1_15 + a2 * F_1_17 ) ) ) ) ) ) ) ) ; } else if ( a > 0.031 ) { absAtanh = a * ( 1 + a2 * ( F_1_3 + a2 * ( F_1_5 + a2 * ( F_1_7 + a2 * ( F_1_9 + a2 * ( F_1_11 + a2 * F_1_13 ) ) ) ) ) ) ; } else if ( a > 0.003 ) { absAtanh = a * ( 1 + a2 * ( F_1_3 + a2 * ( F_1_5 + a2 * ( F_1_7 + a2 * F_1_9 ) ) ) ) ; } else { absAtanh = a * ( 1 + a2 * ( F_1_3 + a2 * F_1_5 ) ) ; } } return negative ? - absAtanh : absAtanh ; }
Compute the inverse hyperbolic tangent of a number .