LEGENDRE_DP Function

private function LEGENDRE_DP(L, X) result(LEGENDRE)

Legendre polynomial , degree , via the standard three-term recurrence

Returns: .

Arguments

Type IntentOptional Attributes Name
integer(kind=I4), intent(in) :: L

Degree, .

real(kind=dp), intent(in) :: X

Argument, (typically ).

Return Value real(kind=dp)


Called by

proc~~legendre_dp~~CalledByGraph proc~legendre_dp LEGENDRE_DP interface~legendre LEGENDRE interface~legendre->proc~legendre_dp proc~ddx_legendre_dp DDX_LEGENDRE_DP proc~ddx_legendre_dp->interface~legendre interface~ddx_legendre DDX_LEGENDRE interface~ddx_legendre->proc~ddx_legendre_dp

Source Code

  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