171 lines
6.0 KiB
Plaintext
171 lines
6.0 KiB
Plaintext
|
||
TRIGONOMETRIC FUNCTIONS AND EQUIVALENTS
|
||
(TRIGFUNC.TXT)
|
||
|
||
This is a summary of numerous functions and their equivalents
|
||
necessary when working with the language limitations of BASIC
|
||
and others which do not include pre-programmed functions beyond
|
||
sine, cosine, tangent, arctangent and others.
|
||
|
||
Many are uncommon and seldom encountered but nevertheless
|
||
valuable under specialized conditions. Indeed, some solutions
|
||
are rarely mentioned in most references.
|
||
|
||
Implementations here are presented in typical BASIC format but
|
||
are readily translated to any other keeping in mind the
|
||
nuances of your working language. A final section sets forth
|
||
a few programming hints, and tips which help avoid run-time
|
||
errors.
|
||
|
||
I - Common Functions
|
||
--------------------
|
||
|
||
Secant SEC(X) = 1 / COS(X)
|
||
|
||
Cosecant CSC(X) = 1 / SIN(X)
|
||
|
||
Cotangent COT(X) = 1 / TAN(X)
|
||
|
||
Inverse Sine ARCSIN(X) = ATN(X / SQR(1-X*X))
|
||
|
||
Inverse Cosine ARCCOS(X) = - ATN(X / SQR(1-X*X)) + PI/2
|
||
|
||
Inverse Secant ARCSEC(X) = ATN(SQR(X*X-1)) + (SGN(X) -1) * PI/2
|
||
|
||
Inverse Cosecant ARCCSC(X) = ATN(1 / SQR(X*X-1)) + (SGN(X) -1) * PI/2
|
||
|
||
Inverse Cotangent ARCCOT(X) = PI/2 - ATN(X) | or | PI/2 + ATN(-X)
|
||
|
||
|
||
II - Hyperbolic Functions
|
||
-------------------------
|
||
|
||
Sine SINH(X) = (EXP(X) - EXP(-X)) / 2
|
||
|
||
Cosine COSH(X) = (EXP(X) + EXP(-X)) / 2
|
||
|
||
Tangent TANH(X) = -2 * EXP(-X) / (EXP(X) + EXP(-X)) + 1
|
||
|
||
Secant SECH(X) = 2 / (EXP(X) + EXP(-X))
|
||
|
||
Cosecant CSCH(X) = 2 / (EXP(X) - EXP(-X))
|
||
|
||
Cotangent COTH(X) = 2 * EXP(-X) / (EXP(X) - EXP(-X)) + 1
|
||
|
||
Inverse Sine ARCSINH(X) = LOG(X + SQR(X*X+1))
|
||
|
||
Inverse Cosine ARCCOSH(X) = LOG(X + SQR(X*X-1))
|
||
|
||
Inverse Tangent ARCTANH(X) = LOG((1+X) / (1-X)) / 2
|
||
|
||
Inverse Secant ARCSECH(X) = LOG((1+SQR(1-X*X)) / X)
|
||
|
||
Inverse Cosecant ARCCSCH(X) = LOG((SGN(X) * SQR(X*X+1) + 1) / X)
|
||
|
||
Inverse Cotangent ARCCOTH(X) = LOG((X+1) / (X-1)) / 2
|
||
|
||
|
||
III - Hints and Tips
|
||
--------------------
|
||
|
||
The comments related here apply specifically to QuickBasic v4.0 and
|
||
lower and MS GWBasic, unless otherwise mentioned. Other Basic
|
||
implementations may be better or worse in certain idiosyncrasies
|
||
which should be determined by users before placing total faith in any
|
||
suggested anomoly trapping.
|
||
|
||
These fundamental needs should be acceptable in all cases:
|
||
|
||
PI = 4 * ATN(1)
|
||
|
||
J = PI / 180
|
||
|
||
J is a facilitiation constant for Degrees - Radians - Degrees
|
||
conversion, thusly:
|
||
|
||
Variable (Xd) * J = Variable (Xr) ..... degrees to rads
|
||
Variable (Xr) / J = Variable (Xd) ..... rads to degrees
|
||
|
||
|
||
The question of single or double-precision use may be one of importance
|
||
to your application. With MS QB, final precision deteriorates significantly
|
||
when the above trig transformations are employed. In other words, don't expect
|
||
single precision (7-8 digits) when using s-p or 15-16 digits in d-p.
|
||
|
||
Depending on vector position, the end result can be as poor as 1/2 the
|
||
expected accuracy. Also, if one wants highest accuracy, it is
|
||
essential that low digit numerics (eg: 0.815) be declared as d-p
|
||
(.815#) otherwise they will be treated as single precision even though
|
||
attached in a series to a variable which has been declared as d-p.
|
||
|
||
CAUTIONS
|
||
--------
|
||
|
||
1. Entering arguments at or very near <20>1 can produce attempts to
|
||
divide by zero. Some form of trapping is essential to avoid program
|
||
stoppage. Appropriate filtering with bypasses, alternate paths
|
||
are suggested.
|
||
|
||
2. In complex trigometric manipulations it is possible for the end
|
||
result to exceed <20>1. This may be due to binary quirks or
|
||
simply erroneous procedures. Some form of trapping is also
|
||
needed to avoid crashes when such are used as entering arguments.
|
||
|
||
3. Similarly, trapping is required for 0 and -X values when entering
|
||
some functions using LOG. Also note that a few functions with SQR
|
||
have other invalid ranges for entering arguments.
|
||
|
||
|
||
IV - Acknowledgement
|
||
|
||
Source material for Sections I and II from Texas Instruments,
|
||
TI Extended BASIC handbook for the TI-99/4, 1981.
|
||
|
||
|
||
--------------------
|
||
|
||
Prepared by Anthony W. Severdia : San Francisco, CA : FEB 1989
|
||
This file is in Public Domain
|
||
|
||
--------------------
|
||
|
||
For QUality and Excellence in bbs'ing, visit & join QU-AN-TO
|
||
|
||
QUantitative ANalytic TOols
|
||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
(415) 255-2981 <20><> 24 Hours <20><> 3/12/2400 Baud
|
||
Sysop - Dr. Ken Hunter San Francisco, CA USA
|
||
|
||
<20> Mathematics <20> Statistics <20> Decision Support <20> Finance
|
||
<20> Sciences <20> Engineering <20> Programming Languages <20> More
|
||
|
||
<20> Celestial Navigation Forum (W) Tony Severdia (Ass't Sysop)
|
||
|
||
|
||
--End
|
||
|
||
Downloaded from Just Say Yes. 2 lines, More than 500 files online!
|
||
Full access on first call. 415-922-2008 CASFA
|
||
|
||
|
||
|
||
|
||
Another file downloaded from:
|
||
|
||
!
|
||
-$- & the Temple of the Screaming Electron
|
||
! * Walnut Creek, CA
|
||
+ /^ |
|
||
! | |//^ _^_ 2400/1200/300 baud (415) 935-5845
|
||
/^ / @ | /_-_ Jeff Hunter, Sysop
|
||
|@ _| @ @|- - -|
|
||
| | | /^ | _ | - - - - - - - - - *
|
||
|___/____|_|_|_(_)_| Aaaaaeeeeeeeeeeeeeeeeee! /
|
||
|
||
Specializing in conversations, E-Mail, obscure information,
|
||
entertainment, the arts, politics, futurism, thoughtful discussion,
|
||
insane speculation, and wild rumours. An ALL-TEXT BBS.
|
||
|
||
"Raw data for raw minds."
|
||
|