NUMAL Section 6.4.2

BEGIN SECTION : 6.4.2 (December, 1979)

AUTHOR: P.W.HEMKER.

CONTRIBUTOR: F.GROEN.

INSTITUTE: MATHEMATICAL CENTRE, AMSTERDAM.

RECEIVED: 730921.

REVISED: 781101 BY N.M.TEMME AND R.MONTIJN.

BRIEF DESCRIPTION:

    THIS SECTION CONTAINS SIX  PROCEDURES  FOR THE COMPUTATION OF
    HYPERBOLIC FUNCTIONS.

    SINH COMPUTES FOR A REAL ARGUMENT X THE VALUE OF SINH(X).
    COSH COMPUTES FOR A REAL ARGUMENT X THE VALUE OF COSH(X).
    TANH COMPUTES FOR A REAL ARGUMENT X THE VALUE OF TANH(X).
    ARCSINH COMPUTES FOR A REAL ARGUMENT X THE VALUE OF ARCSINH(X).
    ARCCOSH COMPUTES FOR A REAL ARGUMENT X THE VALUE OF ARCCOSH(X).
    ARCTANH COMPUTES FOR A REAL ARGUMENT X THE VALUE OF ARCTANH(X).

KEYWORDS:

    HYPERBOLIC SINE,
    HYPERBOLIC COSINE,
    HYPERBOLIC TANGENT,
    HYPERBOLIC ARCSINE,
    HYPERBOLIC ARCCOSINE,
    HYPERBOLIC ARCTANGENT.


SUBSECTION : SINH.

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "REAL" "PROCEDURE" SINH(X); "VALUE" X; "REAL" X;
    "CODE" 35111;

    SINH : DELIVERS THE HYPERBOLIC SINE OF THE ARGUMENT X.

    THE MEANING OF THE FORMAL PARAMETER IS :
    X:      <ARITHMETIC EXPRESSION>;
            ENTRY: THE (REAL) ARGUMENT OF SINH(X).

PROCEDURES USED : OVERFLOW  =  CP 30009,
                  GIANT     =  CP 30004.

METHOD AND PERFORMANCE :

    IF ABS(X) < 0.1 THEN SINH(X) IS CALCULATED BY MEANS OF AN
    ECONOMIZED TAYLOR SERIES.
    IF 0.1 <= ABS(X) < 0.3 WE USE THE FORMULA :
        SINH(X) = 3 * SINH ( X/3 ) + 4 * SINH ( X/3 ) ** 3
    IF 0.3 <= ABS(X) < 17.5 THEN WE USE THE FORMULA :
        SINH(X) = 0.5 * ( EXP(X) - EXP(-X) ).
    IF X >= 17.5 THEN WE TAKE SINH(X) = SIGN(X) * EXP( X-LN(2) ).
    IN THE CASE OF OVERFLOW (I.E., ABS(X) > 741.6 (APPROXIMATELY))
         THEN THE VALUE SINH = SIGN(X) * GIANT ( SEE SUBSECTION 6.2)
         IS DELIVERED.
    THE VALUES ARE COMPUTED WITH A RELATIVE PRECISION OF ABOUT "-13.

EXAMPLE OF USE :

    SEE EXAMPLE OF USE OF THE PROCEDURE COSH (THIS SECTION).


SUBSECTION : COSH.

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "REAL" "PROCEDURE" COSH(X); "VALUE" X; "REAL" X;
    "CODE" 35112;

    COSH : DELIVERS THE HYPERBOLIC COSINE OF THE ARGUMENT X.

    THE MEANING OF THE FORMAL PARAMETER IS :
    X:      <ARITHMETIC EXPRESSION>;
            ENTRY: THE (REAL) ARGUMENT OF COSH(X).

PROCEDURES USED : SINH  =  CP 35111.

METHOD AND PERFORMANCE :

    IF ABS(X) < 17.5 THE FORMULA  COSH(X) = 0.5 * ( EXP(X) + EXP(-X) )
    IS USED ELSE COSH(X) = SINH(ABS(X)).
    THE VALUES ARE COMPUTED WITH A RELATIVE PRECISION OF ABOUT "-13.

EXAMPLE OF USE :

    THE FOLLOWING PROGRAM TESTS FOR X = -20, -2, -1, 0.1, 0.3 THE
    RELATION : SINH(2 * X) - 2 * SINH(X) * COSH(X) = 0.

    "BEGIN""REAL" X;

        "FOR" X := -20, -2, -1, 0.1, 0.3  "DO"
        OUTPUT(61,"("/,+2ZD.2D,3B,+D.D"+3D")",X,SINH(2 * X)
        - 2 * SINH(X) * COSH(X) );
    "END"

    OUTPUT :

    -20.00   +6.1"+003
     -2.00   -1.1"-013
     -1.00   -1.4"-014
     +0.10   +0.0"+000
     +0.30   +0.0"+000


SUBSECTION : TANH.

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "REAL" "PROCEDURE" TANH(X); "VALUE" X; "REAL" X;
    "CODE" 35113;

    TANH : DELIVERS THE HYPERBOLIC TANGENT OF TH ARGUMENT X.

    THE MEANING OF THE FORMAL PARAMETER IS :
    X:      <ARITHMETIC EXPRESSION>;
            ENTRY: THE (REAL) ARGUMENT OF TANH(X).

PROCEDURES USED : SINH  =  CP 35111.

METHOD AND PERFORMANCE :

    IF ABS(X) < 0.005 THE TANH(X) IS CALCULATED BY A TRUNCATED
    POWER SERIES (TAYLOR'S FORMULA).
    IF 0.005 <= ABS(X) < 0.3 WE USE THE FORMULA :
        TANH(X) = SINH(X) / COSH(X).
    IF 0.3 <= ABS(X) <= 17.5  WE USE THE FORMULA :
        TANH(X) = ( 1 - EXP( -2 * X ) ) / ( 1 + EXP( -2 * X ) ).
    IF ABS(X) > 17.5 THE VALUE SIGN(X) IS DELIVERED.
    THE VALUES ARE COMPUTED WITH A RELATIVE PRECISION OF ABOUT "-13.

EXAMPLE OF USE :

    THE FOLLOWING PROGRAM CHECKS FOR X = -100, -10, 0, 2, 5 THE
    RELATION : 1 - TANH(X) ** 2 - 1 / COSH(X) ** 2 = 0.

    "BEGIN" "REAL" X ;
      "FOR" X := -100, -10, 0, 2, 5 "DO"
      OUTPUT(61,"("/,+2ZD,3B,+D.D"+3D")",X,1-TANH(X)**2-1/COSH(X)**2);
    "END"

    RESULTS :

    -100   -5.5"-087
     -10   +1.2"-014
      +0   +0.0"+000
      +2   +9.8"-015
      +5   -3.4"-015


SUBSECTION : ARCSINH.

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "REAL" "PROCEDURE" ARCSINH(X); "VALUE" X; "REAL" X;
    "CODE" 35114;

    ARCSINH : DELIVERS THE INVERSE HYPERBOLIC SINE OF THE ARGUMENT X.

    THE MEANING OF THE FORMAL PARAMETER IS :
    X:      <ARITHMETIC EXPRESSION>;
            ENTRY: THE (REAL) ARGUMENT OF ARCSINH(X).

PROCEDURES USED : LOG ONE PLUS X  =  CP 35130.

METHOD AND PERFORMANCE :

    IF ABS(X) <= "10 WE USE THE PROCEDURE LOG ONE PLUS X (SEE SECTION
        6.4.3.) BY WRITING :
        ARCSINH(X) = LN ( X + SQRT ( X * X + 1 ) ) =
        LN(1+X+X**2/(1+SQRT(1+X**2))).
    IF ABS(X) > "10 WE USE THE FORMULA :
        ARCSINH(X) = SIGN(X) * ( LN(2) + LN ( ABS(X) ) ).
    THE VALUES ARE COMPUTED WITH A RELATIVE PRECISION OF ABOUT "-13.

EXAMPLE OF USE :

    "BEGIN"
        OUTPUT(61,"("/,D.14D")",ARCSINH(SINH(0.01)));
        OUTPUT(61,"("/,D.14D")",ARCSINH(SINH(0.05)));
        OUTPUT(61,"("/,D.14D")",SINH(ARCSINH(0.05)));
        OUTPUT(61,"("/,D.14D")",SINH(ARCSINH(0.01)));
    "END"

    DELIVERS :

    +0.01000000000000
    +0.05000000000000
    +0.05000000000000
    +0.01000000000000


SUBSECTION : ARCCOSH.

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "REAL" "PROCEDURE" ARCCOSH(X); "VALUE" X; "REAL" X;
    "CODE" 35115;

    ARCCOSH : DELIVERS THE INVERSE HYPERBOLIC COSINE OF THE ARGUMENT X.

    THE MEANING OF THE FORMAL PARAMETER IS :
    X:      <ARITHMETIC EXPRESSION>;
            ENTRY: THE (REAL) ARGUMENT OF ARCCOSH(X), X >= 1.

PROCEDURES USED : NONE.

METHOD AND PERFORMANCE :

    IF X = 1 THE VALUE 0 IS DELIVERED.
    IF 1 < X <= "10 WE USE THE FORMULA :
        ARCCOSH(X) = LN ( X + SQRT ( X * X - 1 ) ).
    IF X > "10 WE USE THE FORMULA :
        ARCCOSH(X) = LN(2) + LN ( X ).
    THE VALUES ARE COMPUTED WITH A RELATIVE PRECISION OF ABOUT "-13.
    IF X IS CLOSE TO 1, SAY X = 1+Y, Y>0, AND Y IS KNOWN IN GOOD
    RELATIVE PRECISION, THEN IT IS ADVISED TO USE THE PROCEDURE
    LOG ONE PLUS X (SEE SUBSECTION 6.4.3) BY WRITING
    ARCCOSH(X) = LN( 1 + Y + SQRT( Y*(Y+2) ) ).
    EXAMPLE : X = EXP(T), T > 0, T IS SMALL. THEN Y = EXP(T)-1 IS
    AVAILABLE IN GOOD RELATIVE ACCURACY, Y = 2*EXP(T/2)*SINH(T/2).

EXAMPLE OF USE :

    "BEGIN"
        OUTPUT(61,"("/,D.14D")",ARCCOSH(COSH(0.01)));
        OUTPUT(61,"("/,D.14D")",ARCCOSH(COSH(0.05)));
        OUTPUT(61,"("/,D.14D")",COSH(ARCCOSH(1.01)));
        OUTPUT(61,"("/,D.14D")",COSH(ARCCOSH(1.05)));
    "END"

    DELIVERS :

    +0.00999999999958
    +0.04999999999999
    +1.01000000000000
    +1.05000000000000


SUBSECTION : ARCTANH.

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "REAL" "PROCEDURE" ARCTANH(X); "VALUE" X; "REAL" X;
    "CODE" 35116;

    ARCTANH: DELIVERS THE INVERSE HYPERBOLIC TANGENT OF THE ARGUMENT X.

    THE MEANING OF THE FORMAL PARAMETER IS :
    X:      <ARITHMETIC EXPRESSION>;
            ENTRY: THE (REAL) ARGUMENT OF ARCTANH(X).

PROCEDURES USED : LOG ONE PLUS X  =  CP 35130,
                  GIANT           =  CP 30004.

METHOD AND PERFORMANCE :

    IF ABS(X) < 1 WE USE THE PROCEDURE LOG ONE PLUS X (SEE SECTION
        6.4.3) BY WRITING ARCTANH(X) = 0.5 * LN(( 1 + X )/( 1 - X ))=
        0.5 * LN(1+2*X/(1-X)).
    IF ABS(X) = 1 THE VALUE  IS SIGN(X) * GIANT (SEE SECTION 6.2).
    THE VALUES ARE COMPUTED WITH A RELATIVE PRECISION OF ABOUT "-13.

EXAMPLE OF USE :

    "BEGIN"
        OUTPUT(61,"("/,D.14D")",ARCTANH(TANH(0.01)));
        OUTPUT(61,"("/,D.14D")",ARCTANH(TANH(0.05)));
        OUTPUT(61,"("/,D.14D")",TANH(ARCTANH(0.05)));
        OUTPUT(61,"("/,D.14D")",TANH(ARCTANH(0.01)));
    "END"

    DELIVERS :

    +0.01000000000000
    +0.05000000000000
    +0.05000000000000
    +0.01000000000000

SOURCE TEXTS :
"CODE" 35111;

"CODE" 35112;

"CODE" 35113;
"CODE" 35114;
"CODE" 35115;

"CODE" 35116;