Directory of image this file is from
This file as a plain text file
C
C ..................................................................
C
C SUBROUTINE DTEUL
C
C PURPOSE
C COMPUTE THE SUM OF FCT(K) FOR K FROM ONE UP TO INFINITY.
C
C USAGE
C CALL DTEUL(FCT,SUM,MAX,EPS,IER)
C PARAMETER FCT REQUIRES AN EXTERNAL STATEMENT.
C
C DESCRIPTION OF PARAMETERS
C FCT - NAME OF AN EXTERNAL DOUBLE PRECISION FUNCTION
C SUBPROGRAM USED. IT COMPUTES THE K-TH TERM OF THE
C SERIES TO ANY GIVEN INDEX K.
C SUM - RESULTANT VALUE IN DOUBLE PRECISION CONTAINING ON
C RETURN THE SUM OF THE GIVEN SERIES.
C MAX - INPUT VALUE, WHICH SPECIFIES THE MAXIMAL NUMBER
C OF TERMS OF THE SERIES THAT ARE RESPECTED.
C EPS - SINGLE PRECISION INPUT VALUE, WHICH SPECIFIES THE
C UPPER BOUND OF THE RELATIVE ERROR.
C SUMMATION IS STOPPED AS SOON AS FIVE TIMES IN
C SUCCESSION THE ABSOLUTE VALUE OF THE TERMS OF THE
C TRANSFORMED SERIES ARE FOUND TO BE LESS THAN
C EPS*(ABSOLUTE VALUE OF CURRENT SUM).
C IER - RESULTANT ERROR PARAMETER CODED IN THE FOLLOWING
C FORM
C IER=0 - NO ERROR
C IER=1 - REQUIRED ACCURACY NOT REACHED WITH
C MAXIMAL NUMBER OF TERMS
C IER=-1 - THE INTEGER MAX IS LESS THAN ONE.
C
C REMARKS
C NO ACTION BESIDES ERROR MESSAGE IN CASE MAX LESS THAN ONE.
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C THE EXTERNAL FUNCTION SUBPROGRAM FCT(K) MUST BE FURNISHED
C BY THE USER.
C
C METHOD
C EVALUATION IS DONE BY MEANS OF A SUITABLY REFINED EULER
C TRANSFORMATION. FOR REFERENCE, SEE
C F.B.HILDEBRAND, INTRODUCTION TO NUMERICAL ANALYSIS,
C MCGRAW/HILL, NEW YORK/TORONTO/LONDON, 1956, PP.155-160, AND
C P. NAUR, REPORT ON THE ALGORITHMIC LANGUAGE ALGOL 60,
C CACM, VOL.3, ISS.5 (1960), PP.311.
C
C ..................................................................
C
SUBROUTINE DTEUL (FCT,SUM,MAX,EPS,IER)
C
DIMENSION Y(15)
DOUBLE PRECISION FCT,SUM,Y,AMN,AMP
C
C TEST ON WRONG INPUT PARAMETER MAX
C
IF(MAX)1,1,2
1 IER=-1
GOTO 12
C
C INITIALIZE EULER TRANSFORMATION
C
2 IER=1
I=1
M=1
N=1
Y(1)=FCT(N)
SUM=Y(1)*.5D0
C
C START EULER-LOOP
C
3 J=0
4 I=I+1
IF(I-MAX)5,5,12
5 N=I
AMN=FCT(N)
DO 6 K=1,M
AMP=(AMN+Y(K))*.5D0
Y(K)=AMN
6 AMN=AMP
C
C CHECK EULER TRANSFORMATION
C
IF(DABS(AMN)-DABS(Y(M)))7,9,9
7 IF(M-15)8,9,9
8 M=M+1
Y(M)=AMN
AMN=.5D0*AMN
C
C UPDATE SUM
C
9 SUM=SUM+AMN
IF(ABS(SNGL(AMN))-EPS*ABS(SNGL(SUM)))10,10,3
C
C TEST END OF PROCEDURE
C
10 J=J+1
IF(J-5)4,11,11
11 IER=0
12 RETURN
END