Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Math class question

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 !!

like image 253
Betamoo Avatar asked May 15 '10 16:05

Betamoo


People also ask

What C is used for?

C is a powerful general-purpose programming language. It can be used to develop software like operating systems, databases, compilers, and so on.

What is the full name of C?

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.

Why is C named so?

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".


2 Answers

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)
like image 65
Robben_Ford_Fan_boy Avatar answered Oct 14 '22 01:10

Robben_Ford_Fan_boy


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);
    }
}
like image 44
CodeGrue Avatar answered Oct 13 '22 23:10

CodeGrue