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