NUMAL Section 6.5.2

BEGIN SECTION : 6.5.2 (March, 1977)

AUTHOR(S): H.FIOLET, N.TEMME.

INSTITUTE: MATHEMATICAL CENTRE.

RECEIVED: 740317.

BRIEF DESCRIPTION:

    THIS SECTION CONTAINS TWO PROCEDURES:

    THE PROCEDURE SINCOSINT CALCULATES THE  SINE INTEGRAL  SI(X) AND
    THE COSINE INTEGRAL CI(X) DEFINED BY
        SI(X) = INTEGRAL FROM 0 TO X OF  SIN(T)/T DT
    AND
        CI(X) = GAMMA + LN(ABS(X)) +
                INTEGRAL FROM 0 TO X OF (COS(T)-1)/T DT,
    WHERE GAMMA DENOTES EULER'S CONSTANT
    (SEE [1] EQ. 5.2.1 AND 5.2.2);

    THE AUXILIARY PROCEDURE SINCOSFG CALCULATES F(X) AND G(X)
    DEFINED BY
        F(X) = CI(X) * SIN(X) - (SI(X) - PI / 2) * COS(X)
    AND
        G(X) =-CI(X) * COS(X) - (SI(X) - PI / 2) * SIN(X);

    FOR X=0 THE VALUES OF CI(X), F(X) AND G(X) ARE UNDEFINED;
    THE FOLLOWING RELATIONS CONCERNING NEGATIVE X ARE VALID:
    SI(-X) = -SI(X), CI(-X) = CI(X), F(-X) = -F(X), G(-X) = G(X).

KEYWORDS: SINE INTEGRAL,
          COSINE INTEGRAL.


SUBSECTION: SINCOSINT.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS :
    "PROCEDURE" SINCOSINT(X,SI,CI); "VALUE" X; "REAL" X, SI, CI;
    "CODE" 35084;

    THE MEANING OF THE FORMAL PARAMETERS IS :
    X :     <ARITHMETIC EXPRESSION>;
            ENTRY: THE (REAL) ARGUMENT OF SI(X) AND CI(X);
    SI:     <VARIABLE>;
            EXIT: THE VALUE OF SI(X);
    CI:     <VARIABLE>;
            EXIT: THE VALUE OF CI(X).

PROCEDURES USED:

    SINCOSFG  = CP35385,
    CHEPOLSUM = CP31046.

RUNNING TIME:

    "IF" ABS(X) <= 4 "THEN" ABOUT 3.8 MSEC
                     "ELSE" ABOUT 7.5 MSEC .

LANGUAGE: ALGOL 60.

METHOD AND PERFORMANCE:

    SEE METHOD AND PERFORMANCE OF THE PROCEDURE SINCOSFG
    (THIS SECTION).


SUBSECTION: SINCOSFG.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS :
    "PROCEDURE" SINCOSFG(X,F,G); "VALUE" X; "REAL" X, F, G;
    "CODE" 35085;

    THE MEANING OF THE FORMAL PARAMETERS IS :
    X:      <ARITHMETIC EXPRESSION>;
            ENTRY: THE (REAL) ARGUMENT OF F(X) AND G(X);
    F:      <VARIABLE>;
            EXIT: THE VALUE OF F(X);
    G:      <VARIABLE>;
            EXIT: THE VALUE OF G(X).

PROCEDURES USED:

    SINCOSINT = CP35084,
    CHEPOLSUM = CP31046.

RUNNING TIME:

    "IF" ABS(X) <= 4 "THEN" ABOUT 4.7 MSEC
                     "ELSE" ABOUT 6.5 MSEC .

LANGUAGE: ALGOL 60.

METHOD AND PERFORMANCE:

    IF ABS(X) <= 4  THE  SINE AND COSINE INTEGRALS  ARE  REPRESENTED BY
    TRUNCATED CHEBYSHEV SERIES. ON THIS INTERVAL THE FUNCTIONS F AND  G
    ARE   CALCULATED  BY MEANS OF  THE  EQUATIONS  GIVEN IN  THE  BRIEF
    DESCRIPTION.
    IF ABS(X) > 4  THE FUNCTIONS F AND G  ARE  REPRESENTED BY TRUNCATED
    CHEBYSHEV SERIES. IN THIS  CASE  THE  SINE AND COSINE INTEGRALS ARE
    COMPUTED BY MEANS OF THE FOLLOWING RELATIONS:
        SI(X) = PI / 2 - F(X) * COS(X) - G(X) * SIN(X)
    AND
        CI(X) =          F(X) * SIN(X) - G(X) * COS(X).
    THE FUNCTION  VALUES  ARE COMPUTED  WITH A  RELATIVE  PRECISION  OF
    ABOUT "-13.
    WHEN USING THE PROCEDURE SINCOSINT FOR LARGE VALUES OF X , THE
    RELATIVE  ACCURACY MAINLY DEPENDS ON THE ACCURACY OF THE  FUNCTIONS
    SIN(X) AND COS(X).

REFERENCES:

    [1].M.ABRAMOWITZ AND I.STEGUN (EDS.),1964.
        HANDBOOK OF MATHEMATICAL FUNCTIONS WITH FORMULAS, GRAPHS AND
        MATHEMATICAL TABLES.
        APPL. MATH. SER. 55, U.S.GOVT. PRINTING OFFICE,WASHINGTON, D.C.

    [2].R.BULIRSCH.
        NUMERICAL CALCULATION OF THE SINE, COSINE AND FRESNEL INTEGRALS
        HANDBOOK SERIES SPECIAL FUNCTIONS.
        NUM. MATH. 9, 1967, PP380-385.

EXAMPLE OF USE:

    IN THE FOLLOWING PROGRAM  WE COMPUTE THE VALUES OF SI(X), CI(X),
    F(X) AND G(X) FOR X = 1;

    "BEGIN"

        "REAL" SI, CI, F, G;

        SINCOSINT(1, SI, CI);
        SINCOSFG(1, F, G);

        OUTPUT(61,"("4B,"("SI(1)= ")",N,2B,"("CI(1)= ")",N/")",SI,CI);
        OUTPUT(61,"("4B,"(" F(1)= ")",N,2B,"(" G(1)= ")",N ")", F, G);
    "END"

    THIS PROGRAM DELIVERS:

    SI(1)=  +9.46083070367166"-001   CI(1)=  +3.37403922900972"-001
     F(1)=  +6.21449624235829"-001    G(1)=  +3.43377961556442"-001

SOURCE TEXT(S):
"CODE" 35084;
"CODE" 35085;