public static double Asinh(double xx) { double x; int sign; if (xx == 0.0) return xx; if (xx < 0.0) { sign = -1; x = -xx; } else { sign = 1; x = xx; } return sign * Math.Log(x + Math.Sqrt(x * x + 1)); }