NUMAL Section 6.4.1
BEGIN SECTION : 6.4.1 (December, 1979)
AUTHOR: P.W.HEMKER.
CONTRIBUTOR: F.GROEN.
INSTITUTE: MATHEMATICAL CENTRE, AMSTERDAM.
RECEIVED: 740620.
REVISED: 781101 BY N.M.TEMME AND R.MONTIJN.
BRIEF DESCRIPTION:
THIS SECTION CONTAINS THREE PROCEDURES: TAN, ARCSIN, ARCCOS.
TAN COMPUTES THE TANGENT FOR A REAL ARGUMENT X.
ARCSIN COMPUTES THE ARCSINE FOR A REAL ARGUMENT X.
ARCCOS COMPUTES THE ARCCOSINE FOR A REAL ARGUMENT X.
KEYWORDS:
TANGENT,
ARCSINE,
ARCCOSINE.
SUBSECTION: TAN.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"REAL" "PROCEDURE" TAN(X); "VALUE" X; "REAL" X;
"CODE" 35120;
TAN : DELIVERS THE TANGENT OF THE ARGUMENT X.
THE MEANING OF THE FORMAL PARAMETER IS:
X: <ARITHMETIC EXPRESSION>;
ENTRY: THE (REAL) ARGUMENT OF TAN(X).
PROCEDURES USED : OVERFLOW = CP 30008,
GIANT = CP 30004.
METHOD AND PERFORMANCE :
THE FORMULA TAN(X) = SIN(X) / COS(X) IS USED. IF COS(X) = 0 THEN
THE VALUE OF GIANT (SEE SECTION 6.2) IS DELIVERED.
EXAMPLE OF USE:
"BEGIN"
OUTPUT(61,"("/"("ARCTAN(TAN(1))= ")",+D.14D")",ARCTAN(TAN(1)));
OUTPUT(61,"("/"("ARCTAN(TAN(0))= ")",+D.14D")",ARCTAN(TAN(0)));
OUTPUT(61,"("/"("TAN(ARCTAN(0))= ")",+D.14D")",TAN(ARCTAN(0)));
OUTPUT(61,"("/"("TAN(ARCTAN(1))= ")",+D.14D")",TAN(ARCTAN(1)));
"END"
DELIVERS :
ARCTAN(TAN(1))= +1.00000000000000
ARCTAN(TAN(0))= +0.00000000000000
TAN(ARCTAN(0))= +0.00000000000000
TAN(ARCTAN(1))= +1.00000000000000
SUBSECTION : ARCSIN.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"REAL" "PROCEDURE" ARCSIN(X); "VALUE" X; "REAL" X;
"CODE" 35121;
ARCSIN : DELIVERS THE ARCSINE OF THE ARGUMENT X.
THE MEANING OF THE FORMAL PARAMETER IS:
X: <ARITHMETIC EXPRESSION>;
ENTRY: THE (REAL) ARGUMENT OF ARCSIN(X), ABS(X)<=1.
PROCEDURES USED : NONE.
METHOD AND PERFORMANCE :
FOR ABS(X) < 0.8 WE USE THE FORMULA :
ARCSIN(X) = ARCTAN( X / SQRT ( 1 - X * X )).
FOR 0.8 <= ABS(X) < 1 WE USE THE FORMULA :
ARCSIN(X) = SIGN(X) * ( PI/2 - ARCTAN( SQRT( 1/( X * X) - 1))).
FOR ABS(X) = 1 THE VALUE SIGN(X) * PI/2 IS DELIVERED.
THE VALUES ARE COMPUTED WITH A RELATIVE PRECISION OF ABOUT "-13.
EXAMPLE OF USE :
"BEGIN"
OUTPUT(61,"("/"("ARCSIN(SIN(1))= ")",+D.14D")",ARCSIN(SIN(1)));
OUTPUT(61,"("/"("ARCSIN(SIN(0))= ")",+D.14D")",ARCSIN(SIN(0)));
OUTPUT(61,"("/"("SIN(ARCSIN(0))= ")",+D.14D")",SIN(ARCSIN(0)));
OUTPUT(61,"("/"("SIN(ARCSIN(1))= ")",+D.14D")",SIN(ARCSIN(1)));
"END"
DELIVERS :
ARCSIN(SIN(1))= +0.99999999999990
ARCSIN(SIN(0))= +0.00000000000000
SIN(ARCSIN(0))= +0.00000000000000
SIN(ARCSIN(1))= +1.00000000000000
SUBSECTION: ARCCOS.
CALLING SEQUENCE:
THE HEADING OF THE PROCEDURE READS:
"REAL" "PROCEDURE" ARCCOS(X); "VALUE" X; "REAL" X;
"CODE" 35122;
ARCCOS : DELIVERS THE ARCCOSINE OF THE ARGUMENT X.
THE MEANING OF THE FORMAL PARAMETER IS:
X: <ARITHMETIC EXPRESSION>;
ENTRY: THE (REAL) ARGUMENT OF ARCCOS(X), ABS(X)<=1.
PROCEDURES USED: NONE.
METHOD AND PERFORMANCE:
FOR 0 < X < 1 WE USE THE FORMULA:
ARCCOS(X) = 2 * ARCTAN( SQRT( (1 - X) / (1 + X))).
FOR -1 < X <= 0 WE USE THE FORMULA:
ARCCOS(X) = PI - ARCCOS(-X).
FOR X = 1 THE VALUE 0 IS DELIVERED.
FOR X = -1 THE VALUE PI IS DELIVERED.
THE VALUES ARE COMPUTED WITH A RELATIVE PRECISION OF "-13.
EXAMPLE OF USE:
"BEGIN"
OUTPUT(61,"("/"("ARCCOS(COS(1))= ")",+D.14D")",ARCCOS(COS(1)));
OUTPUT(61,"("/"("ARCCOS(COS(0))= ")",+D.14D")",ARCCOS(COS(0)));
OUTPUT(61,"("/"("COS(ARCCOS(0))= ")",+D.14D")",COS(ARCCOS(0)));
OUTPUT(61,"("/"("COS(ARCCOS(1))= ")",+D.14D")",COS(ARCCOS(1)));
"END"
DELIVERS :
ARCCOS(COS(1))= +1.00000000000000
ARCCOS(COS(0))= +0.00000000000000
COS(ARCCOS(0))= +0.00000000000001
COS(ARCCOS(1))= +1.00000000000000
SOURCE TEXTS:
"CODE" 35120;
"CODE" 35121;
"CODE" 35122;