* * $Id: econde.F,v 1.1.1.1 1996/04/01 15:03:14 mclareni Exp $ * * $Log: econde.F,v $ * Revision 1.1.1.1 1996/04/01 15:03:14 mclareni * Mathlib gen * * #include "sys/CERNLIB_machine.h" #include "_gen/pilot.h" SUBROUTINE ECONDE(COEF,ECOEF,N,NTE,ACC,A,B,IOPT,STORE,DROP,BST) C C CERN PROGRAM LIBRARY NO. E401 C C BASIC VERSION OF AUGUST 1970. C C PURPOSE = ECONOMIZATION OF POWER SERIES IN DOUBLE PRECISION. C C PARAMETERS C C INPUT C C COEF = COEFFICIENTS OF ORIGINAL SERIE. C N = NUMBER OF TERMS IN ORIGINAL SERIE. C ACC = ACCURACY REQUIRED. C A = LOWER BOUNDARY. C B = UPPER BOUNDARY. C IOPT = OPTION PARAMETER. C IOP=-1 , THE ODD CASE. C IOP= 0 , THE GENERAL CASE. C IOP= 1 , THE EVEN CASE. C C OUTPUT C C ECOEF = COEFFICIENTS OF ECONOMIZED SERIE. C NTE = NUMBER OF TERMS IN ECONOMIZED SERIE. C C DUMMY C C STORE = ARRAY USED FOR INTERMEDIATE CALCULATION. C DROP = ARRAY USED FOR INTERMEDIATE CALCULATION.RETURNS TAYLOR C COEFFICIENTS OF ORIGINAL SERIE IN THE NORMALIZED RANGE C (-1,1). C BST = ARRAY USED FOR INTERMEDIATE CALCULATION. C DOUBLE PRECISION COEF(N),ECOEF(N),STORE(N),ACC,A,B,SUM C DOUBLE PRECISION DROP(N),BST(N) C SUM=0.D0 CALL TAYCHD(A,B,COEF,STORE,N,IOPT,DROP) DO 1 M=1,N MM=N+1-M SUM=SUM+ABS(STORE(MM)) IF(SUM.GE.ACC)GOTO2 1 CONTINUE 2 NTE=MM IF(NTE.EQ.N)GOTO3 CALL TRANSD(STORE,ECOEF,NTE,BST) RETURN C 3 WRITE(6,4) DO 5 J=1,N 5 ECOEF(J)=DROP(J) RETURN C 4 FORMAT(' ECONOMIZATION NOT POSSIBLE-ACCURACY REQUIRED TOO GREAT') C END