C$Procedure CNP (Compute values of Chebyshev polynomials) SUBROUTINE CNP(Y,X,N) IMPLICIT NONE C$ Abstract C C Compute values of Chebyshev polnomials T(N,X) C for argument value X and orders from 0 to N C C$ Declarations DOUBLE PRECISION Y( * ) DOUBLE PRECISION X INTEGER N C$ Copyright C C Copyright (1997-1998), Jet Propulsion Laboratory C C$ Required_Reading C C C$ Keywords C C CHEBYSHEV C POLYNOMIAL APPROXIMATION C C C$ Brief_I/O C C Variable I/O Description C -------- --- -------------------------------------------------- C X I argument of Chebyshev polynomial C C N I Order of Chebyshev polynomial C C Y O Output array of size (N+1) containing the values C of Chebyshev polynomials of order from 0 to N C for given argument X. C The values groups are ordered from 0 TO N C C$ Parameters C C None. C C C$ Exceptions C C None. C C$ Files C C None. C C$ Particulars C C Evaluation is based on recurrence equation for C Chebyshev polynomials T(N,X) C T(N+1,X)=2*X*T(N,X)-T(N-1,X), C where the first term in brackets is order, C the second is argument. C starting values are T(0,X)=1, T(1,X)=X. C C DOUBLE PRECISION F INTEGER I LOGICAL RETURN IF ( RETURN () ) THEN RETURN ELSE CALL CHKIN ( 'CNP' ) END IF Y( 1 ) = 1.D0 C C Requested order of polynomial have to be positive C IF( N .LE. 0 ) THEN CALL CHKOUT ( 'CNP' ) RETURN ELSE Y( 2 ) = X END IF IF ( N - 1 .GT. 0 ) THEN C C F initialization C F = X + X C C Cycle for values evaluation C DO I = 2, N Y( I + 1 ) = F * Y( I ) - Y( I - 1 ) END DO END IF CALL CHKOUT ( 'CNP' ) RETURN END