1 SUBROUTINE QMOMO(ALFA,BETA,RI,RJ,RG,RH,INTEGR) 2C***BEGIN PROLOGUE QMOMO 3C***DATE WRITTEN 810101 (YYMMDD) 4C***REVISION DATE 830518 (YYMMDD) 5C***CATEGORY NO. H2A2A1,C3A2 6C***KEYWORDS MODIFIED CHEBYSHEV MOMENTS 7C***AUTHOR PIESSENS, ROBERT, APPLIED MATH. AND PROGR. DIV. - 8C K. U. LEUVEN 9C DE DONCKER, ELISE, APPLIED MATH. AND PROGR. DIV. - 10C K. U. LEUVEN 11C***PURPOSE This routine computes modified CHEBSYSHEV moments. The K-th 12C modified CHEBYSHEV moment is defined as the integral over 13C (-1,1) of W(X)*T(K,X), where T(K,X) is the CHEBYSHEV 14C POLYNOMIAL of degree K. 15C***DESCRIPTION 16C 17C MODIFIED CHEBYSHEV MOMENTS 18C STANDARD FORTRAN SUBROUTINE 19C REAL VERSION 20C 21C PARAMETERS 22C ALFA - Real 23C Parameter in the weight function W(X), ALFA.GT.(-1) 24C 25C BETA - Real 26C Parameter in the weight functioN W(X), BETA.GT.(-1) 27C 28C RI - Real 29C Vector of dimension 25 30C RI(K) is the integral over (-1,1) of 31C (1+X)**ALFA*T(K-1,X), K = 1, ..., 25. 32C 33C RJ - Real 34C Vector of dimension 25 35C RJ(K) is the integral over (-1,1) of 36C (1-X)**BETA*T(K-1,X), K = 1, ..., 25. 37C 38C RG - Real 39C Vector of dimension 25 40C RG(K) is the integral over (-1,1) of 41C (1+X)**ALFA*LOG((1+X)/2)*T(K-1,X), K = 1, ..., 25. 42C 43C RH - Real 44C Vector of dimension 25 45C RH(K) is the integral over (-1,1) of 46C (1-X)**BETA*LOG((1-X)/2)*T(K-1,X), K = 1, ..., 25. 47C 48C INTEGR - Integer 49C Input parameter indicating the modified 50C Moments to be computed 51C Integr = 1 compute RI, RJ 52C = 2 compute RI, RJ, RG 53C = 3 compute RI, RJ, RH 54C = 4 compute RI, RJ, RG, RH 55C***REFERENCES (NONE) 56C***ROUTINES CALLED (NONE) 57C***END PROLOGUE QMOMO 58C 59 REAL ALFA,ALFP1,ALFP2,AN,ANM1,BETA,BETP1, 60 1 BETP2,RALF,RBET,RG,RH,RI,RJ 61 INTEGER I,IM1,INTEGR 62C 63 DIMENSION RG(25),RH(25),RI(25),RJ(25) 64C 65C 66C***FIRST EXECUTABLE STATEMENT QMOMO 67 ALFP1 = ALFA+0.1E+01 68 BETP1 = BETA+0.1E+01 69 ALFP2 = ALFA+0.2E+01 70 BETP2 = BETA+0.2E+01 71 RALF = 0.2E+01**ALFP1 72 RBET = 0.2E+01**BETP1 73C 74C COMPUTE RI, RJ USING A FORWARD RECURRENCE RELATION. 75C 76 RI(1) = RALF/ALFP1 77 RJ(1) = RBET/BETP1 78 RI(2) = RI(1)*ALFA/ALFP2 79 RJ(2) = RJ(1)*BETA/BETP2 80 AN = 0.2E+01 81 ANM1 = 0.1E+01 82 DO 20 I=3,25 83 RI(I) = -(RALF+AN*(AN-ALFP2)*RI(I-1))/ 84 1 (ANM1*(AN+ALFP1)) 85 RJ(I) = -(RBET+AN*(AN-BETP2)*RJ(I-1))/ 86 1 (ANM1*(AN+BETP1)) 87 ANM1 = AN 88 AN = AN+0.1E+01 89 20 CONTINUE 90 IF(INTEGR.EQ.1) GO TO 70 91 IF(INTEGR.EQ.3) GO TO 40 92C 93C COMPUTE RG USING A FORWARD RECURRENCE RELATION. 94C 95 RG(1) = -RI(1)/ALFP1 96 RG(2) = -(RALF+RALF)/(ALFP2*ALFP2)-RG(1) 97 AN = 0.2E+01 98 ANM1 = 0.1E+01 99 IM1 = 2 100 DO 30 I=3,25 101 RG(I) = -(AN*(AN-ALFP2)*RG(IM1)-AN*RI(IM1)+ANM1*RI(I))/ 102 1 (ANM1*(AN+ALFP1)) 103 ANM1 = AN 104 AN = AN+0.1E+01 105 IM1 = I 106 30 CONTINUE 107 IF(INTEGR.EQ.2) GO TO 70 108C 109C COMPUTE RH USING A FORWARD RECURRENCE RELATION. 110C 111 40 RH(1) = -RJ(1)/BETP1 112 RH(2) = -(RBET+RBET)/(BETP2*BETP2)-RH(1) 113 AN = 0.2E+01 114 ANM1 = 0.1E+01 115 IM1 = 2 116 DO 50 I=3,25 117 RH(I) = -(AN*(AN-BETP2)*RH(IM1)-AN*RJ(IM1)+ 118 1 ANM1*RJ(I))/(ANM1*(AN+BETP1)) 119 ANM1 = AN 120 AN = AN+0.1E+01 121 IM1 = I 122 50 CONTINUE 123 DO 60 I=2,25,2 124 RH(I) = -RH(I) 125 60 CONTINUE 126 70 DO 80 I=2,25,2 127 RJ(I) = -RJ(I) 128 80 CONTINUE 129 90 RETURN 130 END 131