I need to calculate Tanh-1 in C#
(and Sinh-1 and Cosh-1)
I did not found it in Math library.. Any suggestions ?
EDIT: Tanh not Tan !!
C is a powerful general-purpose programming language. It can be used to develop software like operating systems, databases, compilers, and so on.
In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.
Quote from wikipedia: "A successor to the programming language B, C was originally developed at Bell Labs by Dennis Ritchie between 1972 and 1973 to construct utilities running on Unix." The creators want that everyone "see" his language. So he named it "C".
You need to derive them yourself using existing functions e.g. Math.sin
You might 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)
To .NET-ify David Relihan's formulas:
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);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With