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;