1MODULE spherical_harmonics 2 INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND ( 14, 200 ) 3CONTAINS 4 FUNCTION dlegendre (x, l, m) RESULT (dplm) 5 SELECT CASE ( l ) 6 CASE ( 0 ) 7 dplm = 0.0_dp 8 CASE ( 1 ) 9 dplm = 1.0_dp 10 CASE DEFAULT 11 IF ( mm > 0 ) THEN 12 dpmm = -m 13 DO im = 1, mm 14 dpmm = -dpmm 15 END DO 16 IF ( l == mm + 1 ) THEN 17 DO il = mm + 2, l 18 dpll = dpmm 19 END DO 20 dplm = dpll 21 END IF 22 END IF 23 END SELECT 24 END FUNCTION dlegendre 25END MODULE spherical_harmonics 26