~madteam/mg5amcnlo/series2.0

« back to all changes in this revision

Viewing changes to tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%polynomial.f

  • Committer: olivier Mattelaer
  • Date: 2016-05-12 11:00:18 UTC
  • mfrom: (262.1.150 2.3.4)
  • Revision ID: olivier.mattelaer@uclouvain.be-20160512110018-sevb79f0wm4g8mpp
pass to 2.4.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      MODULE ML5_0_POLYNOMIAL_CONSTANTS
 
2
      IMPLICIT NONE
 
3
      INCLUDE 'coef_specs.inc'
 
4
      INCLUDE 'loop_max_coefs.inc'
 
5
 
 
6
C     Map associating a rank to each coefficient position
 
7
      INTEGER COEFTORANK_MAP(0:LOOPMAXCOEFS-1)
 
8
      DATA COEFTORANK_MAP(0:0)/1*0/
 
9
      DATA COEFTORANK_MAP(1:4)/4*1/
 
10
      DATA COEFTORANK_MAP(5:14)/10*2/
 
11
      DATA COEFTORANK_MAP(15:34)/20*3/
 
12
 
 
13
C     Map defining the number of coefficients for a symmetric tensor
 
14
C      of a given rank
 
15
      INTEGER NCOEF_R(0:3)
 
16
      DATA NCOEF_R/1,5,15,35/
 
17
 
 
18
C     Map defining the coef position resulting from the multiplication
 
19
C      of two lower rank coefs.
 
20
      INTEGER COMB_COEF_POS(0:LOOPMAXCOEFS-1,0:4)
 
21
      DATA COMB_COEF_POS(  0,  0:  4) /  0,  1,  2,  3,  4/
 
22
      DATA COMB_COEF_POS(  1,  0:  4) /  1,  5,  6,  8, 11/
 
23
      DATA COMB_COEF_POS(  2,  0:  4) /  2,  6,  7,  9, 12/
 
24
      DATA COMB_COEF_POS(  3,  0:  4) /  3,  8,  9, 10, 13/
 
25
      DATA COMB_COEF_POS(  4,  0:  4) /  4, 11, 12, 13, 14/
 
26
      DATA COMB_COEF_POS(  5,  0:  4) /  5, 15, 16, 19, 25/
 
27
      DATA COMB_COEF_POS(  6,  0:  4) /  6, 16, 17, 20, 26/
 
28
      DATA COMB_COEF_POS(  7,  0:  4) /  7, 17, 18, 21, 27/
 
29
      DATA COMB_COEF_POS(  8,  0:  4) /  8, 19, 20, 22, 28/
 
30
      DATA COMB_COEF_POS(  9,  0:  4) /  9, 20, 21, 23, 29/
 
31
      DATA COMB_COEF_POS( 10,  0:  4) / 10, 22, 23, 24, 30/
 
32
      DATA COMB_COEF_POS( 11,  0:  4) / 11, 25, 26, 28, 31/
 
33
      DATA COMB_COEF_POS( 12,  0:  4) / 12, 26, 27, 29, 32/
 
34
      DATA COMB_COEF_POS( 13,  0:  4) / 13, 28, 29, 30, 33/
 
35
      DATA COMB_COEF_POS( 14,  0:  4) / 14, 31, 32, 33, 34/
 
36
      DATA COMB_COEF_POS( 15,  0:  4) / 15, 35, 36, 40, 50/
 
37
      DATA COMB_COEF_POS( 16,  0:  4) / 16, 36, 37, 41, 51/
 
38
      DATA COMB_COEF_POS( 17,  0:  4) / 17, 37, 38, 42, 52/
 
39
      DATA COMB_COEF_POS( 18,  0:  4) / 18, 38, 39, 43, 53/
 
40
      DATA COMB_COEF_POS( 19,  0:  4) / 19, 40, 41, 44, 54/
 
41
      DATA COMB_COEF_POS( 20,  0:  4) / 20, 41, 42, 45, 55/
 
42
      DATA COMB_COEF_POS( 21,  0:  4) / 21, 42, 43, 46, 56/
 
43
      DATA COMB_COEF_POS( 22,  0:  4) / 22, 44, 45, 47, 57/
 
44
      DATA COMB_COEF_POS( 23,  0:  4) / 23, 45, 46, 48, 58/
 
45
      DATA COMB_COEF_POS( 24,  0:  4) / 24, 47, 48, 49, 59/
 
46
      DATA COMB_COEF_POS( 25,  0:  4) / 25, 50, 51, 54, 60/
 
47
      DATA COMB_COEF_POS( 26,  0:  4) / 26, 51, 52, 55, 61/
 
48
      DATA COMB_COEF_POS( 27,  0:  4) / 27, 52, 53, 56, 62/
 
49
      DATA COMB_COEF_POS( 28,  0:  4) / 28, 54, 55, 57, 63/
 
50
      DATA COMB_COEF_POS( 29,  0:  4) / 29, 55, 56, 58, 64/
 
51
      DATA COMB_COEF_POS( 30,  0:  4) / 30, 57, 58, 59, 65/
 
52
      DATA COMB_COEF_POS( 31,  0:  4) / 31, 60, 61, 63, 66/
 
53
      DATA COMB_COEF_POS( 32,  0:  4) / 32, 61, 62, 64, 67/
 
54
      DATA COMB_COEF_POS( 33,  0:  4) / 33, 63, 64, 65, 68/
 
55
      DATA COMB_COEF_POS( 34,  0:  4) / 34, 66, 67, 68, 69/
 
56
 
 
57
      END MODULE ML5_0_POLYNOMIAL_CONSTANTS
 
58
 
 
59
 
1
60
C     THE SUBROUTINE TO CREATE THE COEFFICIENTS FROM LAST LOOP WF AND 
2
61
C     MULTIPLY BY THE BORN
3
62
 
4
63
      SUBROUTINE ML5_0_CREATE_LOOP_COEFS(LOOP_WF,RANK,LCUT_SIZE
5
64
     $ ,LOOP_GROUP_NUMBER,SYMFACT,MULTIPLIER,COLOR_ID,HELCONFIG)
 
65
      USE ML5_0_POLYNOMIAL_CONSTANTS
6
66
      IMPLICIT NONE
7
67
C     
8
68
C     CONSTANTS 
15
75
      PARAMETER (IMAG1=(ZERO,ONE))
16
76
      COMPLEX*16 CMPLX_ZERO
17
77
      PARAMETER (CMPLX_ZERO=(ZERO,ZERO))
18
 
      INTEGER MAXLWFSIZE
19
 
      PARAMETER (MAXLWFSIZE=4)
20
 
      INTEGER LOOPMAXCOEFS
21
 
      PARAMETER (LOOPMAXCOEFS=35)
22
78
      INTEGER    NCOLORROWS
23
79
      PARAMETER (NCOLORROWS=129)
24
80
      INTEGER    NLOOPGROUPS
44
100
C     FUNCTIONS
45
101
C     
46
102
      INTEGER ML5_0_ML5SOINDEX_FOR_BORN_AMP, ML5_0_ML5SOINDEX_FOR_LOOP_
47
 
     $ AMP, ML5_0_ML5SQSOINDEX
 
103
     $AMP, ML5_0_ML5SQSOINDEX
48
104
C     
49
105
C     GLOBAL VARIABLES
50
106
C     
79
135
     $   ,KIND=8)
80
136
        IF(CF_D(COLOR_ID,I).LT.0) CFTOT=CFTOT*IMAG1
81
137
        CONST(ML5_0_ML5SOINDEX_FOR_BORN_AMP(I))=CONST(ML5_0_ML5SOINDEX_
82
 
     $   FOR_BORN_AMP(I))+CFTOT*CONJG(AMP(I))
 
138
     $FOR_BORN_AMP(I))+CFTOT*CONJG(AMP(I))
83
139
      ENDDO
84
140
 
85
141
      DO I=1,NAMPSO
86
142
        IF (CONST(I).NE.CMPLX_ZERO) THEN
87
143
          CONST(I)=(CONST(I)*MULTIPLIER)/SYMFACT
88
 
          IF (.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.HELPICKED.EQ.
89
 
     $     -1) THEN
 
144
          IF (.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.HELPICKED.EQ.-1)
 
145
     $      THEN
90
146
            CONST(I)=CONST(I)*GOODHEL(HELCONFIG)
91
147
          ENDIF
92
148
          CALL ML5_0_MERGE_WL(LOOP_WF,RANK,LCUT_SIZE,CONST(I)
93
149
     $     ,LOOPCOEFS(0,ML5_0_ML5SQSOINDEX(I,ML5_0_ML5SOINDEX_FOR_LOOP_
94
 
     $     AMP(COLOR_ID)),LOOP_GROUP_NUMBER))
95
 
        ENDIF
96
 
      ENDDO
97
 
 
98
 
      END
 
150
     $AMP(COLOR_ID)),LOOP_GROUP_NUMBER))
 
151
        ENDIF
 
152
      ENDDO
 
153
 
 
154
      END
 
155
 
 
156
      SUBROUTINE ML5_0_INVERT_MOMENTA_IN_POLYNOMIAL(NCOEFS,POLYNOMIAL)
 
157
C     Just a handy subroutine to modify the coefficients for the
 
158
C     tranformation q_loop -> -q_loop
 
159
C     It is only used for the NINJA interface
 
160
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
161
      IMPLICIT NONE
 
162
 
 
163
      INTEGER I, NCOEFS
 
164
 
 
165
      COMPLEX*16 POLYNOMIAL(0:NCOEFS-1)
 
166
 
 
167
      DO I=0,NCOEFS-1
 
168
        IF (MOD(COEFTORANK_MAP(I),2).EQ.1) THEN
 
169
          POLYNOMIAL(I)=-POLYNOMIAL(I)
 
170
        ENDIF
 
171
      ENDDO
 
172
 
 
173
      END
 
174
 
 
175
C     Now the routines to update the wavefunctions
 
176
 
99
177
 
100
178
 
101
179
C     THE SUBROUTINE TO CREATE THE COEFFICIENTS FROM LAST LOOP WF AND 
103
181
 
104
182
      SUBROUTINE MP_ML5_0_CREATE_LOOP_COEFS(LOOP_WF,RANK,LCUT_SIZE
105
183
     $ ,LOOP_GROUP_NUMBER,SYMFACT,MULTIPLIER,COLOR_ID,HELCONFIG)
 
184
      USE ML5_0_POLYNOMIAL_CONSTANTS
106
185
      IMPLICIT NONE
107
186
C     
108
187
C     CONSTANTS 
115
194
      PARAMETER (IMAG1=(ZERO,ONE))
116
195
      COMPLEX*32 CMPLX_ZERO
117
196
      PARAMETER (CMPLX_ZERO=(ZERO,ZERO))
118
 
      INTEGER MAXLWFSIZE
119
 
      PARAMETER (MAXLWFSIZE=4)
120
 
      INTEGER LOOPMAXCOEFS
121
 
      PARAMETER (LOOPMAXCOEFS=35)
122
197
      INTEGER    NCOLORROWS
123
198
      PARAMETER (NCOLORROWS=129)
124
199
      INTEGER    NLOOPGROUPS
144
219
C     FUNCTIONS
145
220
C     
146
221
      INTEGER ML5_0_ML5SOINDEX_FOR_BORN_AMP, ML5_0_ML5SOINDEX_FOR_LOOP_
147
 
     $ AMP, ML5_0_ML5SQSOINDEX
 
222
     $AMP, ML5_0_ML5SQSOINDEX
148
223
C     
149
224
C     GLOBAL VARIABLES
150
225
C     
179
254
     $   ,KIND=16)
180
255
        IF(CF_D(COLOR_ID,I).LT.0) CFTOT=CFTOT*IMAG1
181
256
        CONST(ML5_0_ML5SOINDEX_FOR_BORN_AMP(I))=CONST(ML5_0_ML5SOINDEX_
182
 
     $   FOR_BORN_AMP(I))+CFTOT*CONJG(AMP(I))
 
257
     $FOR_BORN_AMP(I))+CFTOT*CONJG(AMP(I))
183
258
      ENDDO
184
259
 
185
260
      DO I=1,NAMPSO
186
261
        IF (CONST(I).NE.CMPLX_ZERO) THEN
187
262
          CONST(I)=(CONST(I)*MULTIPLIER)/SYMFACT
188
 
          IF (.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.HELPICKED.EQ.
189
 
     $     -1) THEN
 
263
          IF (.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.HELPICKED.EQ.-1)
 
264
     $      THEN
190
265
            CONST(I)=CONST(I)*GOODHEL(HELCONFIG)
191
266
          ENDIF
192
267
          CALL MP_ML5_0_MERGE_WL(LOOP_WF,RANK,LCUT_SIZE,CONST(I)
193
268
     $     ,LOOPCOEFS(0,ML5_0_ML5SQSOINDEX(I,ML5_0_ML5SOINDEX_FOR_LOOP_
194
 
     $     AMP(COLOR_ID)),LOOP_GROUP_NUMBER))
195
 
        ENDIF
196
 
      ENDDO
197
 
 
198
 
      END
 
269
     $AMP(COLOR_ID)),LOOP_GROUP_NUMBER))
 
270
        ENDIF
 
271
      ENDDO
 
272
 
 
273
      END
 
274
 
 
275
      SUBROUTINE MP_ML5_0_INVERT_MOMENTA_IN_POLYNOMIAL(NCOEFS
 
276
     $ ,POLYNOMIAL)
 
277
C     Just a handy subroutine to modify the coefficients for the
 
278
C     tranformation q_loop -> -q_loop
 
279
C     It is only used for the NINJA interface
 
280
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
281
      IMPLICIT NONE
 
282
 
 
283
      INTEGER I, NCOEFS
 
284
 
 
285
      COMPLEX*32 POLYNOMIAL(0:NCOEFS-1)
 
286
 
 
287
      DO I=0,NCOEFS-1
 
288
        IF (MOD(COEFTORANK_MAP(I),2).EQ.1) THEN
 
289
          POLYNOMIAL(I)=-POLYNOMIAL(I)
 
290
        ENDIF
 
291
      ENDDO
 
292
 
 
293
      END
 
294
 
 
295
C     Now the routines to update the wavefunctions
 
296
 
199
297
 
200
298
 
201
299
      SUBROUTINE ML5_0_EVAL_POLY(C,R,Q,OUT)
202
 
      INCLUDE 'coef_specs.inc'
203
 
      COMPLEX*16 C(0:LOOP_MAXCOEFS-1)
 
300
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
301
      COMPLEX*16 C(0:LOOPMAXCOEFS-1)
204
302
      INTEGER R
205
303
      COMPLEX*16 Q(0:3)
206
304
      COMPLEX*16 OUT
211
309
      ENDIF
212
310
      IF (R.GE.2) THEN
213
311
        OUT=OUT+C(5)*Q(0)*Q(0)+C(6)*Q(0)*Q(1)+C(7)*Q(1)*Q(1)+C(8)*Q(0)
214
 
     $   *Q(2)+C(9)*Q(1)*Q(2)+C(10)*Q(2)*Q(2)+C(11)*Q(0)*Q(3)
215
 
     $   +C(12)*Q(1)*Q(3)+C(13)*Q(2)*Q(3)+C(14)*Q(3)*Q(3)
 
312
     $   *Q(2)+C(9)*Q(1)*Q(2)+C(10)*Q(2)*Q(2)+C(11)*Q(0)*Q(3)+C(12)
 
313
     $   *Q(1)*Q(3)+C(13)*Q(2)*Q(3)+C(14)*Q(3)*Q(3)
216
314
      ENDIF
217
315
      IF (R.GE.3) THEN
218
316
        OUT=OUT+C(15)*Q(0)*Q(0)*Q(0)+C(16)*Q(0)*Q(0)*Q(1)+C(17)*Q(0)
219
 
     $   *Q(1)*Q(1)+C(18)*Q(1)*Q(1)*Q(1)+C(19)*Q(0)*Q(0)*Q(2)
220
 
     $   +C(20)*Q(0)*Q(1)*Q(2)+C(21)*Q(1)*Q(1)*Q(2)+C(22)*Q(0)*Q(2)
221
 
     $   *Q(2)+C(23)*Q(1)*Q(2)*Q(2)+C(24)*Q(2)*Q(2)*Q(2)+C(25)*Q(0)
222
 
     $   *Q(0)*Q(3)+C(26)*Q(0)*Q(1)*Q(3)+C(27)*Q(1)*Q(1)*Q(3)
223
 
     $   +C(28)*Q(0)*Q(2)*Q(3)+C(29)*Q(1)*Q(2)*Q(3)+C(30)*Q(2)*Q(2)
224
 
     $   *Q(3)+C(31)*Q(0)*Q(3)*Q(3)+C(32)*Q(1)*Q(3)*Q(3)+C(33)*Q(2)
225
 
     $   *Q(3)*Q(3)+C(34)*Q(3)*Q(3)*Q(3)
 
317
     $   *Q(1)*Q(1)+C(18)*Q(1)*Q(1)*Q(1)+C(19)*Q(0)*Q(0)*Q(2)+C(20)
 
318
     $   *Q(0)*Q(1)*Q(2)+C(21)*Q(1)*Q(1)*Q(2)+C(22)*Q(0)*Q(2)*Q(2)
 
319
     $   +C(23)*Q(1)*Q(2)*Q(2)+C(24)*Q(2)*Q(2)*Q(2)+C(25)*Q(0)*Q(0)
 
320
     $   *Q(3)+C(26)*Q(0)*Q(1)*Q(3)+C(27)*Q(1)*Q(1)*Q(3)+C(28)*Q(0)
 
321
     $   *Q(2)*Q(3)+C(29)*Q(1)*Q(2)*Q(3)+C(30)*Q(2)*Q(2)*Q(3)+C(31)
 
322
     $   *Q(0)*Q(3)*Q(3)+C(32)*Q(1)*Q(3)*Q(3)+C(33)*Q(2)*Q(3)*Q(3)
 
323
     $   +C(34)*Q(3)*Q(3)*Q(3)
226
324
      ENDIF
227
325
      END
228
326
 
229
327
      SUBROUTINE MP_ML5_0_EVAL_POLY(C,R,Q,OUT)
230
 
      INCLUDE 'coef_specs.inc'
231
 
      COMPLEX*32 C(0:LOOP_MAXCOEFS-1)
 
328
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
329
      COMPLEX*32 C(0:LOOPMAXCOEFS-1)
232
330
      INTEGER R
233
331
      COMPLEX*32 Q(0:3)
234
332
      COMPLEX*32 OUT
239
337
      ENDIF
240
338
      IF (R.GE.2) THEN
241
339
        OUT=OUT+C(5)*Q(0)*Q(0)+C(6)*Q(0)*Q(1)+C(7)*Q(1)*Q(1)+C(8)*Q(0)
242
 
     $   *Q(2)+C(9)*Q(1)*Q(2)+C(10)*Q(2)*Q(2)+C(11)*Q(0)*Q(3)
243
 
     $   +C(12)*Q(1)*Q(3)+C(13)*Q(2)*Q(3)+C(14)*Q(3)*Q(3)
 
340
     $   *Q(2)+C(9)*Q(1)*Q(2)+C(10)*Q(2)*Q(2)+C(11)*Q(0)*Q(3)+C(12)
 
341
     $   *Q(1)*Q(3)+C(13)*Q(2)*Q(3)+C(14)*Q(3)*Q(3)
244
342
      ENDIF
245
343
      IF (R.GE.3) THEN
246
344
        OUT=OUT+C(15)*Q(0)*Q(0)*Q(0)+C(16)*Q(0)*Q(0)*Q(1)+C(17)*Q(0)
247
 
     $   *Q(1)*Q(1)+C(18)*Q(1)*Q(1)*Q(1)+C(19)*Q(0)*Q(0)*Q(2)
248
 
     $   +C(20)*Q(0)*Q(1)*Q(2)+C(21)*Q(1)*Q(1)*Q(2)+C(22)*Q(0)*Q(2)
249
 
     $   *Q(2)+C(23)*Q(1)*Q(2)*Q(2)+C(24)*Q(2)*Q(2)*Q(2)+C(25)*Q(0)
250
 
     $   *Q(0)*Q(3)+C(26)*Q(0)*Q(1)*Q(3)+C(27)*Q(1)*Q(1)*Q(3)
251
 
     $   +C(28)*Q(0)*Q(2)*Q(3)+C(29)*Q(1)*Q(2)*Q(3)+C(30)*Q(2)*Q(2)
252
 
     $   *Q(3)+C(31)*Q(0)*Q(3)*Q(3)+C(32)*Q(1)*Q(3)*Q(3)+C(33)*Q(2)
253
 
     $   *Q(3)*Q(3)+C(34)*Q(3)*Q(3)*Q(3)
 
345
     $   *Q(1)*Q(1)+C(18)*Q(1)*Q(1)*Q(1)+C(19)*Q(0)*Q(0)*Q(2)+C(20)
 
346
     $   *Q(0)*Q(1)*Q(2)+C(21)*Q(1)*Q(1)*Q(2)+C(22)*Q(0)*Q(2)*Q(2)
 
347
     $   +C(23)*Q(1)*Q(2)*Q(2)+C(24)*Q(2)*Q(2)*Q(2)+C(25)*Q(0)*Q(0)
 
348
     $   *Q(3)+C(26)*Q(0)*Q(1)*Q(3)+C(27)*Q(1)*Q(1)*Q(3)+C(28)*Q(0)
 
349
     $   *Q(2)*Q(3)+C(29)*Q(1)*Q(2)*Q(3)+C(30)*Q(2)*Q(2)*Q(3)+C(31)
 
350
     $   *Q(0)*Q(3)*Q(3)+C(32)*Q(1)*Q(3)*Q(3)+C(33)*Q(2)*Q(3)*Q(3)
 
351
     $   +C(34)*Q(3)*Q(3)*Q(3)
254
352
      ENDIF
255
353
      END
256
354
 
257
355
      SUBROUTINE ML5_0_ADD_COEFS(A,RA,B,RB)
258
 
      INCLUDE 'coef_specs.inc'
 
356
      USE ML5_0_POLYNOMIAL_CONSTANTS
259
357
      INTEGER I
260
 
      COMPLEX*16 A(0:LOOP_MAXCOEFS-1),B(0:LOOP_MAXCOEFS-1)
 
358
      COMPLEX*16 A(0:LOOPMAXCOEFS-1),B(0:LOOPMAXCOEFS-1)
261
359
      INTEGER RA,RB
262
360
 
263
 
      INTEGER NCOEF_R(0:3)
264
 
      DATA NCOEF_R/1,5,15,35/
265
 
 
266
361
      DO I=0,NCOEF_R(RB)-1
267
362
        A(I)=A(I)+B(I)
268
363
      ENDDO
269
364
      END
270
365
 
271
366
      SUBROUTINE MP_ML5_0_ADD_COEFS(A,RA,B,RB)
272
 
      INCLUDE 'coef_specs.inc'
 
367
      USE ML5_0_POLYNOMIAL_CONSTANTS
273
368
      INTEGER I
274
 
      COMPLEX*32 A(0:LOOP_MAXCOEFS-1),B(0:LOOP_MAXCOEFS-1)
 
369
      COMPLEX*32 A(0:LOOPMAXCOEFS-1),B(0:LOOPMAXCOEFS-1)
275
370
      INTEGER RA,RB
276
371
 
277
 
      INTEGER NCOEF_R(0:3)
278
 
      DATA NCOEF_R/1,5,15,35/
279
 
 
280
372
      DO I=0,NCOEF_R(RB)-1
281
373
        A(I)=A(I)+B(I)
282
374
      ENDDO
283
375
      END
284
376
 
285
377
      SUBROUTINE ML5_0_MERGE_WL(WL,R,LCUT_SIZE,CONST,OUT)
286
 
      INCLUDE 'coef_specs.inc'
 
378
      USE ML5_0_POLYNOMIAL_CONSTANTS
287
379
      INTEGER I,J
288
 
      COMPLEX*16 WL(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
380
      COMPLEX*16 WL(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
289
381
      INTEGER R,LCUT_SIZE
290
382
      COMPLEX*16 CONST
291
 
      COMPLEX*16 OUT(0:LOOP_MAXCOEFS-1)
292
 
 
293
 
      INTEGER NCOEF_R(0:3)
294
 
      DATA NCOEF_R/1,5,15,35/
 
383
      COMPLEX*16 OUT(0:LOOPMAXCOEFS-1)
295
384
 
296
385
      DO I=1,LCUT_SIZE
297
386
        DO J=0,NCOEF_R(R)-1
301
390
      END
302
391
 
303
392
      SUBROUTINE MP_ML5_0_MERGE_WL(WL,R,LCUT_SIZE,CONST,OUT)
304
 
      INCLUDE 'coef_specs.inc'
 
393
      USE ML5_0_POLYNOMIAL_CONSTANTS
305
394
      INTEGER I,J
306
 
      COMPLEX*32 WL(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
395
      COMPLEX*32 WL(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
307
396
      INTEGER R,LCUT_SIZE
308
397
      COMPLEX*32 CONST
309
 
      COMPLEX*32 OUT(0:LOOP_MAXCOEFS-1)
310
 
 
311
 
      INTEGER NCOEF_R(0:3)
312
 
      DATA NCOEF_R/1,5,15,35/
 
398
      COMPLEX*32 OUT(0:LOOPMAXCOEFS-1)
313
399
 
314
400
      DO I=1,LCUT_SIZE
315
401
        DO J=0,NCOEF_R(R)-1
320
406
 
321
407
      SUBROUTINE ML5_0_UPDATE_WL_0_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
322
408
     $ ,OUT)
323
 
      INCLUDE 'coef_specs.inc'
 
409
      USE ML5_0_POLYNOMIAL_CONSTANTS
324
410
      INTEGER I,J,K
325
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
411
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
326
412
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
327
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
413
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
328
414
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
329
415
 
330
416
      DO I=1,LCUT_SIZE
345
431
 
346
432
      SUBROUTINE MP_ML5_0_UPDATE_WL_0_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
347
433
     $ ,OUT)
348
 
      INCLUDE 'coef_specs.inc'
 
434
      USE ML5_0_POLYNOMIAL_CONSTANTS
349
435
      INTEGER I,J,K
350
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
436
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
351
437
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
352
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
438
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
353
439
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
354
440
 
355
441
      DO I=1,LCUT_SIZE
370
456
 
371
457
      SUBROUTINE ML5_0_UPDATE_WL_0_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
372
458
     $ ,OUT)
373
 
      INCLUDE 'coef_specs.inc'
 
459
      USE ML5_0_POLYNOMIAL_CONSTANTS
374
460
      INTEGER I,J,K
375
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
461
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
376
462
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
377
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
463
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
378
464
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
379
465
 
380
466
      DO I=1,LCUT_SIZE
391
477
 
392
478
      SUBROUTINE MP_ML5_0_UPDATE_WL_0_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
393
479
     $ ,OUT)
394
 
      INCLUDE 'coef_specs.inc'
 
480
      USE ML5_0_POLYNOMIAL_CONSTANTS
395
481
      INTEGER I,J,K
396
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
482
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
397
483
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
398
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
484
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
399
485
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
400
486
 
401
487
      DO I=1,LCUT_SIZE
412
498
 
413
499
      SUBROUTINE ML5_0_UPDATE_WL_3_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
414
500
     $ ,OUT)
415
 
      INCLUDE 'coef_specs.inc'
 
501
      USE ML5_0_POLYNOMIAL_CONSTANTS
416
502
      INTEGER I,J,K
417
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
503
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
418
504
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
419
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
505
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
420
506
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
421
507
 
422
508
      DO I=1,LCUT_SIZE
467
553
 
468
554
      SUBROUTINE MP_ML5_0_UPDATE_WL_3_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
469
555
     $ ,OUT)
470
 
      INCLUDE 'coef_specs.inc'
 
556
      USE ML5_0_POLYNOMIAL_CONSTANTS
471
557
      INTEGER I,J,K
472
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
558
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
473
559
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
474
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
560
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
475
561
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
476
562
 
477
563
      DO I=1,LCUT_SIZE
522
608
 
523
609
      SUBROUTINE ML5_0_UPDATE_WL_2_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
524
610
     $ ,OUT)
525
 
      INCLUDE 'coef_specs.inc'
526
 
      INTEGER I,J,K
527
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
611
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
612
      IMPLICIT NONE
 
613
      INTEGER I,J,K,L,M
 
614
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
528
615
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
529
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
616
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
530
617
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
618
      INTEGER NEW_POSITION
 
619
      COMPLEX*16 UPDATER_COEF
531
620
 
532
 
      DO I=1,LCUT_SIZE
533
 
        DO J=1,OUT_SIZE
534
 
          DO K=0,34
535
 
            OUT(J,K,I)=(0.0D0,0.0D0)
536
 
          ENDDO
 
621
C     Welcome to the computational heart of MadLoop...
 
622
      OUT(:,:,:)=(0.0D0,0.0D0)
 
623
      DO J=1,OUT_SIZE
 
624
        DO M=0,4
537
625
          DO K=1,IN_SIZE
538
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
539
 
            OUT(J,1,I)=OUT(J,1,I)+A(K,0,I)*B(J,1,K)+A(K,1,I)*B(J,0,K)
540
 
            OUT(J,2,I)=OUT(J,2,I)+A(K,0,I)*B(J,2,K)+A(K,2,I)*B(J,0,K)
541
 
            OUT(J,3,I)=OUT(J,3,I)+A(K,0,I)*B(J,3,K)+A(K,3,I)*B(J,0,K)
542
 
            OUT(J,4,I)=OUT(J,4,I)+A(K,0,I)*B(J,4,K)+A(K,4,I)*B(J,0,K)
543
 
            OUT(J,5,I)=OUT(J,5,I)+A(K,1,I)*B(J,1,K)+A(K,5,I)*B(J,0,K)
544
 
            OUT(J,6,I)=OUT(J,6,I)+A(K,1,I)*B(J,2,K)+A(K,2,I)*B(J,1,K)
545
 
     $       +A(K,6,I)*B(J,0,K)
546
 
            OUT(J,7,I)=OUT(J,7,I)+A(K,2,I)*B(J,2,K)+A(K,7,I)*B(J,0,K)
547
 
            OUT(J,8,I)=OUT(J,8,I)+A(K,1,I)*B(J,3,K)+A(K,3,I)*B(J,1,K)
548
 
     $       +A(K,8,I)*B(J,0,K)
549
 
            OUT(J,9,I)=OUT(J,9,I)+A(K,2,I)*B(J,3,K)+A(K,3,I)*B(J,2,K)
550
 
     $       +A(K,9,I)*B(J,0,K)
551
 
            OUT(J,10,I)=OUT(J,10,I)+A(K,3,I)*B(J,3,K)+A(K,10,I)
552
 
     $       *B(J,0,K)
553
 
            OUT(J,11,I)=OUT(J,11,I)+A(K,1,I)*B(J,4,K)+A(K,4,I)
554
 
     $       *B(J,1,K)+A(K,11,I)*B(J,0,K)
555
 
            OUT(J,12,I)=OUT(J,12,I)+A(K,2,I)*B(J,4,K)+A(K,4,I)
556
 
     $       *B(J,2,K)+A(K,12,I)*B(J,0,K)
557
 
            OUT(J,13,I)=OUT(J,13,I)+A(K,3,I)*B(J,4,K)+A(K,4,I)
558
 
     $       *B(J,3,K)+A(K,13,I)*B(J,0,K)
559
 
            OUT(J,14,I)=OUT(J,14,I)+A(K,4,I)*B(J,4,K)+A(K,14,I)
560
 
     $       *B(J,0,K)
561
 
            OUT(J,15,I)=OUT(J,15,I)+A(K,5,I)*B(J,1,K)
562
 
            OUT(J,16,I)=OUT(J,16,I)+A(K,5,I)*B(J,2,K)+A(K,6,I)*B(J,1,K)
563
 
            OUT(J,17,I)=OUT(J,17,I)+A(K,6,I)*B(J,2,K)+A(K,7,I)*B(J,1,K)
564
 
            OUT(J,18,I)=OUT(J,18,I)+A(K,7,I)*B(J,2,K)
565
 
            OUT(J,19,I)=OUT(J,19,I)+A(K,5,I)*B(J,3,K)+A(K,8,I)*B(J,1,K)
566
 
            OUT(J,20,I)=OUT(J,20,I)+A(K,6,I)*B(J,3,K)+A(K,8,I)
567
 
     $       *B(J,2,K)+A(K,9,I)*B(J,1,K)
568
 
            OUT(J,21,I)=OUT(J,21,I)+A(K,7,I)*B(J,3,K)+A(K,9,I)*B(J,2,K)
569
 
            OUT(J,22,I)=OUT(J,22,I)+A(K,8,I)*B(J,3,K)+A(K,10,I)
570
 
     $       *B(J,1,K)
571
 
            OUT(J,23,I)=OUT(J,23,I)+A(K,9,I)*B(J,3,K)+A(K,10,I)
572
 
     $       *B(J,2,K)
573
 
            OUT(J,24,I)=OUT(J,24,I)+A(K,10,I)*B(J,3,K)
574
 
            OUT(J,25,I)=OUT(J,25,I)+A(K,5,I)*B(J,4,K)+A(K,11,I)
575
 
     $       *B(J,1,K)
576
 
            OUT(J,26,I)=OUT(J,26,I)+A(K,6,I)*B(J,4,K)+A(K,11,I)
577
 
     $       *B(J,2,K)+A(K,12,I)*B(J,1,K)
578
 
            OUT(J,27,I)=OUT(J,27,I)+A(K,7,I)*B(J,4,K)+A(K,12,I)
579
 
     $       *B(J,2,K)
580
 
            OUT(J,28,I)=OUT(J,28,I)+A(K,8,I)*B(J,4,K)+A(K,11,I)
581
 
     $       *B(J,3,K)+A(K,13,I)*B(J,1,K)
582
 
            OUT(J,29,I)=OUT(J,29,I)+A(K,9,I)*B(J,4,K)+A(K,12,I)
583
 
     $       *B(J,3,K)+A(K,13,I)*B(J,2,K)
584
 
            OUT(J,30,I)=OUT(J,30,I)+A(K,10,I)*B(J,4,K)+A(K,13,I)
585
 
     $       *B(J,3,K)
586
 
            OUT(J,31,I)=OUT(J,31,I)+A(K,11,I)*B(J,4,K)+A(K,14,I)
587
 
     $       *B(J,1,K)
588
 
            OUT(J,32,I)=OUT(J,32,I)+A(K,12,I)*B(J,4,K)+A(K,14,I)
589
 
     $       *B(J,2,K)
590
 
            OUT(J,33,I)=OUT(J,33,I)+A(K,13,I)*B(J,4,K)+A(K,14,I)
591
 
     $       *B(J,3,K)
592
 
            OUT(J,34,I)=OUT(J,34,I)+A(K,14,I)*B(J,4,K)
 
626
            UPDATER_COEF = B(J,M,K)
 
627
            IF (UPDATER_COEF.EQ.(0.0D0,0.0D0)) CYCLE
 
628
            DO L=0,14
 
629
              NEW_POSITION = COMB_COEF_POS(L,M)
 
630
              DO I=1,LCUT_SIZE
 
631
                OUT(J,NEW_POSITION,I)=OUT(J,NEW_POSITION,I) + A(K,L,I)
 
632
     $           *UPDATER_COEF
 
633
              ENDDO
 
634
            ENDDO
593
635
          ENDDO
594
636
        ENDDO
595
637
      ENDDO
 
638
 
596
639
      END
597
640
 
598
641
      SUBROUTINE MP_ML5_0_UPDATE_WL_2_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
599
642
     $ ,OUT)
600
 
      INCLUDE 'coef_specs.inc'
601
 
      INTEGER I,J,K
602
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
643
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
644
      IMPLICIT NONE
 
645
      INTEGER I,J,K,L,M
 
646
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
603
647
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
604
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
648
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
605
649
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
650
      INTEGER NEW_POSITION
 
651
      COMPLEX*32 UPDATER_COEF
606
652
 
607
 
      DO I=1,LCUT_SIZE
608
 
        DO J=1,OUT_SIZE
609
 
          DO K=0,34
610
 
            OUT(J,K,I)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
611
 
          ENDDO
 
653
C     Welcome to the computational heart of MadLoop...
 
654
      OUT(:,:,:)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
 
655
      DO J=1,OUT_SIZE
 
656
        DO M=0,4
612
657
          DO K=1,IN_SIZE
613
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
614
 
            OUT(J,1,I)=OUT(J,1,I)+A(K,0,I)*B(J,1,K)+A(K,1,I)*B(J,0,K)
615
 
            OUT(J,2,I)=OUT(J,2,I)+A(K,0,I)*B(J,2,K)+A(K,2,I)*B(J,0,K)
616
 
            OUT(J,3,I)=OUT(J,3,I)+A(K,0,I)*B(J,3,K)+A(K,3,I)*B(J,0,K)
617
 
            OUT(J,4,I)=OUT(J,4,I)+A(K,0,I)*B(J,4,K)+A(K,4,I)*B(J,0,K)
618
 
            OUT(J,5,I)=OUT(J,5,I)+A(K,1,I)*B(J,1,K)+A(K,5,I)*B(J,0,K)
619
 
            OUT(J,6,I)=OUT(J,6,I)+A(K,1,I)*B(J,2,K)+A(K,2,I)*B(J,1,K)
620
 
     $       +A(K,6,I)*B(J,0,K)
621
 
            OUT(J,7,I)=OUT(J,7,I)+A(K,2,I)*B(J,2,K)+A(K,7,I)*B(J,0,K)
622
 
            OUT(J,8,I)=OUT(J,8,I)+A(K,1,I)*B(J,3,K)+A(K,3,I)*B(J,1,K)
623
 
     $       +A(K,8,I)*B(J,0,K)
624
 
            OUT(J,9,I)=OUT(J,9,I)+A(K,2,I)*B(J,3,K)+A(K,3,I)*B(J,2,K)
625
 
     $       +A(K,9,I)*B(J,0,K)
626
 
            OUT(J,10,I)=OUT(J,10,I)+A(K,3,I)*B(J,3,K)+A(K,10,I)
627
 
     $       *B(J,0,K)
628
 
            OUT(J,11,I)=OUT(J,11,I)+A(K,1,I)*B(J,4,K)+A(K,4,I)
629
 
     $       *B(J,1,K)+A(K,11,I)*B(J,0,K)
630
 
            OUT(J,12,I)=OUT(J,12,I)+A(K,2,I)*B(J,4,K)+A(K,4,I)
631
 
     $       *B(J,2,K)+A(K,12,I)*B(J,0,K)
632
 
            OUT(J,13,I)=OUT(J,13,I)+A(K,3,I)*B(J,4,K)+A(K,4,I)
633
 
     $       *B(J,3,K)+A(K,13,I)*B(J,0,K)
634
 
            OUT(J,14,I)=OUT(J,14,I)+A(K,4,I)*B(J,4,K)+A(K,14,I)
635
 
     $       *B(J,0,K)
636
 
            OUT(J,15,I)=OUT(J,15,I)+A(K,5,I)*B(J,1,K)
637
 
            OUT(J,16,I)=OUT(J,16,I)+A(K,5,I)*B(J,2,K)+A(K,6,I)*B(J,1,K)
638
 
            OUT(J,17,I)=OUT(J,17,I)+A(K,6,I)*B(J,2,K)+A(K,7,I)*B(J,1,K)
639
 
            OUT(J,18,I)=OUT(J,18,I)+A(K,7,I)*B(J,2,K)
640
 
            OUT(J,19,I)=OUT(J,19,I)+A(K,5,I)*B(J,3,K)+A(K,8,I)*B(J,1,K)
641
 
            OUT(J,20,I)=OUT(J,20,I)+A(K,6,I)*B(J,3,K)+A(K,8,I)
642
 
     $       *B(J,2,K)+A(K,9,I)*B(J,1,K)
643
 
            OUT(J,21,I)=OUT(J,21,I)+A(K,7,I)*B(J,3,K)+A(K,9,I)*B(J,2,K)
644
 
            OUT(J,22,I)=OUT(J,22,I)+A(K,8,I)*B(J,3,K)+A(K,10,I)
645
 
     $       *B(J,1,K)
646
 
            OUT(J,23,I)=OUT(J,23,I)+A(K,9,I)*B(J,3,K)+A(K,10,I)
647
 
     $       *B(J,2,K)
648
 
            OUT(J,24,I)=OUT(J,24,I)+A(K,10,I)*B(J,3,K)
649
 
            OUT(J,25,I)=OUT(J,25,I)+A(K,5,I)*B(J,4,K)+A(K,11,I)
650
 
     $       *B(J,1,K)
651
 
            OUT(J,26,I)=OUT(J,26,I)+A(K,6,I)*B(J,4,K)+A(K,11,I)
652
 
     $       *B(J,2,K)+A(K,12,I)*B(J,1,K)
653
 
            OUT(J,27,I)=OUT(J,27,I)+A(K,7,I)*B(J,4,K)+A(K,12,I)
654
 
     $       *B(J,2,K)
655
 
            OUT(J,28,I)=OUT(J,28,I)+A(K,8,I)*B(J,4,K)+A(K,11,I)
656
 
     $       *B(J,3,K)+A(K,13,I)*B(J,1,K)
657
 
            OUT(J,29,I)=OUT(J,29,I)+A(K,9,I)*B(J,4,K)+A(K,12,I)
658
 
     $       *B(J,3,K)+A(K,13,I)*B(J,2,K)
659
 
            OUT(J,30,I)=OUT(J,30,I)+A(K,10,I)*B(J,4,K)+A(K,13,I)
660
 
     $       *B(J,3,K)
661
 
            OUT(J,31,I)=OUT(J,31,I)+A(K,11,I)*B(J,4,K)+A(K,14,I)
662
 
     $       *B(J,1,K)
663
 
            OUT(J,32,I)=OUT(J,32,I)+A(K,12,I)*B(J,4,K)+A(K,14,I)
664
 
     $       *B(J,2,K)
665
 
            OUT(J,33,I)=OUT(J,33,I)+A(K,13,I)*B(J,4,K)+A(K,14,I)
666
 
     $       *B(J,3,K)
667
 
            OUT(J,34,I)=OUT(J,34,I)+A(K,14,I)*B(J,4,K)
 
658
            UPDATER_COEF = B(J,M,K)
 
659
            IF (UPDATER_COEF.EQ.CMPLX(0.0E0_16,0.0E0_16,KIND=16)) CYCLE
 
660
            DO L=0,14
 
661
              NEW_POSITION = COMB_COEF_POS(L,M)
 
662
              DO I=1,LCUT_SIZE
 
663
                OUT(J,NEW_POSITION,I)=OUT(J,NEW_POSITION,I) + A(K,L,I)
 
664
     $           *UPDATER_COEF
 
665
              ENDDO
 
666
            ENDDO
668
667
          ENDDO
669
668
        ENDDO
670
669
      ENDDO
 
670
 
671
671
      END
672
672
 
673
673
      SUBROUTINE ML5_0_UPDATE_WL_2_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
674
674
     $ ,OUT)
675
 
      INCLUDE 'coef_specs.inc'
 
675
      USE ML5_0_POLYNOMIAL_CONSTANTS
676
676
      INTEGER I,J,K
677
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
677
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
678
678
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
679
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
679
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
680
680
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
681
681
 
682
682
      DO I=1,LCUT_SIZE
707
707
 
708
708
      SUBROUTINE MP_ML5_0_UPDATE_WL_2_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
709
709
     $ ,OUT)
710
 
      INCLUDE 'coef_specs.inc'
 
710
      USE ML5_0_POLYNOMIAL_CONSTANTS
711
711
      INTEGER I,J,K
712
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
712
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
713
713
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
714
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
714
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
715
715
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
716
716
 
717
717
      DO I=1,LCUT_SIZE
742
742
 
743
743
      SUBROUTINE ML5_0_UPDATE_WL_1_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
744
744
     $ ,OUT)
745
 
      INCLUDE 'coef_specs.inc'
 
745
      USE ML5_0_POLYNOMIAL_CONSTANTS
746
746
      INTEGER I,J,K
747
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
747
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
748
748
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
749
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
749
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
750
750
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
751
751
 
752
752
      DO I=1,LCUT_SIZE
767
767
 
768
768
      SUBROUTINE MP_ML5_0_UPDATE_WL_1_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
769
769
     $ ,OUT)
770
 
      INCLUDE 'coef_specs.inc'
 
770
      USE ML5_0_POLYNOMIAL_CONSTANTS
771
771
      INTEGER I,J,K
772
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
772
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
773
773
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
774
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
774
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
775
775
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
776
776
 
777
777
      DO I=1,LCUT_SIZE
792
792
 
793
793
      SUBROUTINE ML5_0_UPDATE_WL_1_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
794
794
     $ ,OUT)
795
 
      INCLUDE 'coef_specs.inc'
 
795
      USE ML5_0_POLYNOMIAL_CONSTANTS
796
796
      INTEGER I,J,K
797
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
797
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
798
798
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
799
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
799
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
800
800
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
801
801
 
802
802
      DO I=1,LCUT_SIZE
827
827
 
828
828
      SUBROUTINE MP_ML5_0_UPDATE_WL_1_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
829
829
     $ ,OUT)
830
 
      INCLUDE 'coef_specs.inc'
 
830
      USE ML5_0_POLYNOMIAL_CONSTANTS
831
831
      INTEGER I,J,K
832
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
832
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
833
833
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
834
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOP_MAXCOEFS-1,MAXLWFSIZE)
 
834
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
835
835
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
836
836
 
837
837
      DO I=1,LCUT_SIZE