Legendre polynomial , degree , via the standard three-term recurrence
Returns: .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=I4), | intent(in) | :: | L |
Degree, . |
||
| real(kind=dp), | intent(in) | :: | X |
Argument, (typically ). |
FUNCTION LEGENDRE_DP(L,X) RESULT(LEGENDRE) IMPLICIT NONE REAL(KIND=dp), INTENT(IN) :: X INTEGER(KIND=I4), INTENT(IN) :: L REAL(KIND=dp) :: P0,PIM1,PIM2 REAL(KIND=dp) :: FI,LEGENDRE INTEGER(KIND=I4) :: I ! CHECK FOR VALID VALUES OF N AND X HERE BEFORE PROCEEDING C ! PROCEEDING WITH CALCULATIONS IF (L.EQ.0) THEN LEGENDRE=1.d0 ELSEIF (L.EQ.1) THEN LEGENDRE=X ELSE ! USE RECURRENCE RELATIONS PIM1=1.d0 P0=X DO I=2,L FI=I PIM2=PIM1 PIM1=P0 P0=((2.d0*I-1.d0)*X*PIM1-(I-1.d0)*PIM2)/FI ENDDO LEGENDRE=P0 ENDIF RETURN END FUNCTION LEGENDRE_DP