Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4,VB5,VB6,VBS
Expertise: Intermediate
Dec 25, 1999

ASin, ACos, ACot, ASec, ACsc - Missing inverse trig functions

' arc sine
' error if value is outside the range [-1,1]

Function ASin(value As Double) As Double
    If Abs(value) <> 1 Then
        ASin = Atn(value / Sqr(1 - value * value))
    Else
        ASin = 1.5707963267949 * Sgn(value)
    End If
End Function

' arc cosine
' error if NUMBER is outside the range [-1,1]

Function ACos(ByVal number As Double) As Double
    If Abs(number) <> 1 Then
        ACos = 1.5707963267949 - Atn(number / Sqr(1 - number * number))
    ElseIf number = -1 Then
        ACos = 3.14159265358979
    End If
    'elseif number=1 --> Acos=0 (implicit)
End Function

' arc cotangent
' error if NUMBER is zero

Function ACot(value As Double) As Double
    ACot = Atn(1 / value)
End Function

' arc secant
' error if value is inside the range [-1,1]

Function ASec(value As Double) As Double
    ' NOTE: the following lines can be replaced by a single call
    '            ASec = ACos(1 / value)
    If Abs(value) <> 1 Then
        ASec = 1.5707963267949 - Atn((1 / value) / Sqr(1 - 1 / (value * value)))
    Else
        ASec = 3.14159265358979 * Sgn(value)
    End If
End Function

' arc cosecant
' error if value is inside the range [-1,1]

Function ACsc(value As Double) As Double
    ' NOTE: the following lines can be replaced by a single call
    '            ACsc = ASin(1 / value)
    If Abs(value) <> 1 Then
        ACsc = Atn((1 / value) / Sqr(1 - 1 / (value * value)))
    Else
        ACsc = 1.5707963267949 * Sgn(value)
    End If
End Function

Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date