NUMAL Section 6.4.3

BEGIN SECTION : 6.4.3 (December, 1978)

AUTHOR : N.M. TEMME.

CONTRIBUTOR : R. MONTIJN.

INSTITUTE : MATHEMATICAL CENTRE.

RECEIVED : 780801.

BRIEF DESCRIPTION :

    THIS SECTION CONTAINS THE PROCEDURE  LOG ONE PLUS X  FOR
    THE COMPUTATION OF  LN(1+X) FOR X > -1.

KEYWORDS : LOGARITHMIC FUNCTION.

CALLING SEQUENCE :

    THE HEADING OF THE PROCEDURE READS :
    "REAL" "PROCEDURE" LOG ONE PLUS X(X); "VALUE" X; "REAL" X;
    "CODE" 35130;
    LOG ONE PLUS X : DELIVERS THE VALUE OF LN(1+X);

    THE MEANING OF THE FORMAL PARAMETER IS :
    X:      <ARITHMETIC  EXPRESSION>;
            ENTRY :  THE ARGUMENT OF LN(1+X), X > -1.

PROCEDURES USED : NONE.

RUNNING TIME : THE ALGORITHM NEEDS 9 MULTIPLICATIONS.

METHOD AND PERFORMANCE :

    FOR  X < -0.2928 OR X > 0.4142  THE PROCEDURE USES
    THE STANDARD FUNCTION LN, FOR -0.2928 <= X <= 0.4142 A
    POLYNOMIAL APPROXIMATION IS USED.
    WE USE AN APPROXIMATION BASED ON THE BEST APPROXIMATON FOR
    THE INTERVAL 1/SQRT(2)-1 <= X <= SQRT(2)-1, OF WHICH THE
    COEFFICIENTS ARE GIVEN IN HART (1968); CF. P. 111, INDEX 2665.
    THE PROCEDURE LOG ONE PLUS X COMPUTES LN(1+X) WITH RELATIVE
    ACCURACY COMPARABLE WITH THE MACHINE ACCURACY.

    AS IS WELL KNOWN, FOR SMALL ABS(X) RELATIVE ACCURACY IS LOST
    WHEN COMPUTING LN(1+X) BY USING THE STANDARD FUNCTION LN.
    THE PROCEDURE IS USED IN THE PROCEDURES ARCSINH AND ARCTANH,
    SECTION 6.4.2.

REFERENCES : HART, J.F. CS. (1968), COMPUTER APPROXIMATIONS,
             WILEY, NEW YORK.

EXAMPLE OF USE :

    WE COMPUTE LN(EXP(X)) FOR SMALL POSITIVE X. IN ORDER TO
    PRESERVE RELATIVE ACCURACY WE WRITE

    LN ( EXP(X) )   =    LN ( 1+ EXP(X)-1 )
                    =    LN ( 1+ 2* EXP(X/2)* SINH(X/2) ).

    THE FOLOWING PROGRAM

    "BEGIN" "REAL" X,Y;
        "FOR" X:= "-1, "-10, "-50, "-100, "-250 "DO"
        "BEGIN" Y:= LOG ONE PLUS X( 2*EXP(X/2)*SINH(X/2) );
            OUTPUT(61,"("N,/")",Y)
        "END"
    "END"

    PRINTS THE FOLOWING RESULTS :

    +1.0000000000000"-001
    +1.0000000000000"-010
    +1.0000000000000"-050
    +1.0000000000000"-100
    +1.0000000000000"-250

SOURCE TEXT :
"CODE" 35130;