Question on class C #

I need to calculate Tanh-1 in C #
(and Sinh-1 and Cosh-1)

I did not find it in the Math library .. Any suggestions?

EDIT: Tanh not Tan!

+7
math c #
source share
4 answers

You need to get them yourself using existing functions, for example. Math.sin

You may find this useful:

Secant Sec(X) = 1 / Cos(X) Cosecant Cosec(X) = 1 / Sin(X) Cotangent Cotan(X) = 1 / Tan(X) Inverse Sine Arcsin(X) = Atn(X / Sqr(-X * X + 1)) Inverse Cosine Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) Inverse Secant Arcsec(X) = 2 * Atn(1) - Atn(Sgn(X) / Sqr(X * X - 1)) Inverse Cosecant Arccosec(X) = Atn(Sgn(X) / Sqr(X * X - 1)) Inverse Cotangent Arccotan(X) = 2 * Atn(1) - Atn(X) Hyperbolic Sine HSin(X) = (Exp(X) - Exp(-X)) / 2 Hyperbolic Cosine HCos(X) = (Exp(X) + Exp(-X)) / 2 Hyperbolic Tangent HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X)) Hyperbolic Secant HSec(X) = 2 / (Exp(X) + Exp(-X)) Hyperbolic Cosecant HCosec(X) = 2 / (Exp(X) - Exp(-X)) Hyperbolic Cotangent HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X)) Inverse Hyperbolic Sine HArcsin(X) = Log(X + Sqr(X * X + 1)) Inverse Hyperbolic Cosine HArccos(X) = Log(X + Sqr(X * X - 1)) Inverse Hyperbolic Tangent HArctan(X) = Log((1 + X) / (1 - X)) / 2 Inverse Hyperbolic Secant HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X) Inverse Hyperbolic Cosecant HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X) Inverse Hyperbolic Cotangent HArccotan(X) = Log((X + 1) / (X - 1)) / 2 Logarithm to base N LogN(X) = Log(X) / Log(N) 
+20
source share

In .NET-ify formulas by David Relihan:

 public static class MathHelper { // Secant public static double Sec(double x) { return 1/Math.Cos(x); } // Cosecant public static double Cosec(double x) { return 1/Math.Sin(x); } // Cotangent public static double Cotan(double x) { return 1/Math.Tan(x); } // Inverse Sine public static double Arcsin(double x) { return Math.Atan(x / Math.Sqrt(-x * x + 1)); } // Inverse Cosine public static double Arccos(double x) { return Math.Atan(-x / Math.Sqrt(-x * x + 1)) + 2 * Math.Atan(1); } // Inverse Secant public static double Arcsec(double x) { return 2 * Math.Atan(1) - Math.Atan(Math.Sign(x) / Math.Sqrt(x * x - 1)); } // Inverse Cosecant public static double Arccosec(double x) { return Math.Atan(Math.Sign(x) / Math.Sqrt(x * x - 1)); } // Inverse Cotangent public static double Arccotan(double x) { return 2 * Math.Atan(1) - Math.Atan(x); } // Hyperbolic Sine public static double HSin(double x) { return (Math.Exp(x) - Math.Exp(-x)) / 2 ; } // Hyperbolic Cosine public static double HCos(double x) { return (Math.Exp(x) + Math.Exp(-x)) / 2 ; } // Hyperbolic Tangent public static double HTan(double x) { return (Math.Exp(x) - Math.Exp(-x)) / (Math.Exp(x) + Math.Exp(-x)); } // Hyperbolic Secant public static double HSec(double x) { return 2 / (Math.Exp(x) + Math.Exp(-x)); } // Hyperbolic Cosecant public static double HCosec(double x) { return 2 / (Math.Exp(x) - Math.Exp(-x)); } // Hyperbolic Cotangent public static double HCotan(double x) { return (Math.Exp(x) + Math.Exp(-x)) / (Math.Exp(x) - Math.Exp(-x)); } // Inverse Hyperbolic Sine public static double HArcsin(double x) { return Math.Log(x + Math.Sqrt(x * x + 1)) ; } // Inverse Hyperbolic Cosine public static double HArccos(double x) { return Math.Log(x + Math.Sqrt(x * x - 1)); } // Inverse Hyperbolic Tangent public static double HArctan(double x) { return Math.Log((1 + x) / (1 - x)) / 2 ; } // Inverse Hyperbolic Secant public static double HArcsec(double x) { return Math.Log((Math.Sqrt(-x * x + 1) + 1) / x); } // Inverse Hyperbolic Cosecant public static double HArccosec(double x) { return Math.Log((Math.Sign(x) * Math.Sqrt(x * x + 1) + 1) / x) ; } // Inverse Hyperbolic Cotangent public static double HArccotan(double x) { return Math.Log((x + 1) / (x - 1)) / 2; } // Logarithm to base N public static double LogN(double x, double n) { return Math.Log(x) / Math.Log(n); } } 
+10
source share

You need to define them yourself.

http://en.wikipedia.org/wiki/Hyperbolic_function#Inverse_functions_as_logarithms

  -1 1 1 + x tanh x = — ln ————— 2 1 - x -1 _______ sinh x = ln ( x + √ x² + 1 ) -1 _______ cosh x = ln ( x + √ x² - 1 ) 
+8
source share

There is also a faster formula for calculating tanh, requiring only one exp (), since tanh is associated with the logistic function:

tanh (x) = 2 / (1 + exp (-2 * x)) - 1
also
tanh (x) = 1 - 2 / (1 + exp (2 * x))

See: http://en.wikipedia.org/wiki/Logistic_function

0
source share

All Articles