1*DECK XQMU 2 SUBROUTINE XQMU (NU1, NU2, MU1, MU2, THETA, X, SX, ID, PQA, IPQA, 3 1 IERROR) 4C***BEGIN PROLOGUE XQMU 5C***SUBSIDIARY 6C***PURPOSE To compute the values of Legendre functions for XLEGF. 7C Method: forward mu-wise recurrence for Q(MU,NU,X) for fixed 8C nu to obtain Q(MU1,NU,X), Q(MU1+1,NU,X), ..., Q(MU2,NU,X). 9C***LIBRARY SLATEC 10C***CATEGORY C3A2, C9 11C***TYPE SINGLE PRECISION (XQMU-S, DXQMU-D) 12C***KEYWORDS LEGENDRE FUNCTIONS 13C***AUTHOR Smith, John M., (NBS and George Mason University) 14C***ROUTINES CALLED XADD, XADJ, XPQNU 15C***REVISION HISTORY (YYMMDD) 16C 820728 DATE WRITTEN 17C 890126 Revised to meet SLATEC CML recommendations. (DWL and JMS) 18C 901019 Revisions to prologue. (DWL and WRB) 19C 901106 Corrected order of sections in prologue and added TYPE 20C section. (WRB) 21C 920127 Revised PURPOSE section of prologue. (DWL) 22C***END PROLOGUE XQMU 23 DIMENSION PQA(*),IPQA(*) 24 REAL DMU,NU,NU1,NU2,PQ,PQA,PQ1,PQ2,SX,X,X1,X2 25 REAL THETA 26C***FIRST EXECUTABLE STATEMENT XQMU 27 IERROR=0 28 MU=0 29C 30C CALL XPQNU TO OBTAIN Q(0.,NU1,X) 31C 32 CALL XPQNU(NU1,NU2,MU,THETA,ID,PQA,IPQA,IERROR) 33 IF (IERROR.NE.0) RETURN 34 PQ2=PQA(1) 35 IPQ2=IPQA(1) 36 MU=1 37C 38C CALL XPQNU TO OBTAIN Q(1.,NU1,X) 39C 40 CALL XPQNU(NU1,NU2,MU,THETA,ID,PQA,IPQA,IERROR) 41 IF (IERROR.NE.0) RETURN 42 NU=NU1 43 K=0 44 MU=1 45 DMU=1. 46 PQ1=PQA(1) 47 IPQ1=IPQA(1) 48 IF(MU1.GT.0) GO TO 310 49 K=K+1 50 PQA(K)=PQ2 51 IPQA(K)=IPQ2 52 IF(MU2.LT.1) GO TO 330 53 310 IF(MU1.GT.1) GO TO 320 54 K=K+1 55 PQA(K)=PQ1 56 IPQA(K)=IPQ1 57 IF(MU2.LE.1) GO TO 330 58 320 CONTINUE 59C 60C FORWARD RECURRENCE IN MU TO OBTAIN 61C Q(MU1,NU,X),Q(MU1+1,NU,X),....,Q(MU2,NU,X) USING 62C Q(MU+1,NU,X)=-2.*MU*X*SQRT(1./(1.-X**2))*Q(MU,NU,X) 63C -(NU+MU)*(NU-MU+1.)*Q(MU-1,NU,X) 64C 65 X1=-2.*DMU*X*SX*PQ1 66 X2=(NU+DMU)*(NU-DMU+1.)*PQ2 67 CALL XADD(X1,IPQ1,-X2,IPQ2,PQ,IPQ,IERROR) 68 IF (IERROR.NE.0) RETURN 69 CALL XADJ(PQ,IPQ,IERROR) 70 IF (IERROR.NE.0) RETURN 71 PQ2=PQ1 72 IPQ2=IPQ1 73 PQ1=PQ 74 IPQ1=IPQ 75 MU=MU+1 76 DMU=DMU+1. 77 IF(MU.LT.MU1) GO TO 320 78 K=K+1 79 PQA(K)=PQ 80 IPQA(K)=IPQ 81 IF(MU2.GT.MU) GO TO 320 82 330 RETURN 83 END 84