public static Complex ArcSin(Complex value) { if (value.IsReal()) return Math.Asin(value.Real); if (value.IsImaginary() || value.Imaginary == 0d && value.Real < 0) { return -ArcSin(-value); } return -Complex.ImaginaryOne * Sqrt(Ln((1 - value.Square())) + (Complex.ImaginaryOne * value)); }