10
SUBROUTINE CaleyMatrix(NLOOPLINE,PCL,M2L,matrix,det)
12
INTEGER,INTENT(IN)::NLOOPLINE
13
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE,0:3),INTENT(IN)::PCL
14
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE),INTENT(IN)::M2L
15
REAL(KIND(1d0)),DIMENSION(0:3)::rij
16
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::matrix
17
REAL(KIND(1d0)),INTENT(OUT)::det
21
rij(0:3)=PCL(i,0:3)-PCL(j,0:3)
22
matrix(i,j)=scalarprod(rij(0:3),rij(0:3))-M2L(i)-M2L(j)
24
matrix(j,i)=matrix(i,j)
28
det=MNXNDET(NLOOPLINE,matrix)
30
END SUBROUTINE CaleyMatrix
32
SUBROUTINE Complex_CaleyMatrix(NLOOPLINE,PCL,M2L,matrix,det)
34
INTEGER,INTENT(IN)::NLOOPLINE
35
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE,0:3),INTENT(IN)::PCL
36
COMPLEX(KIND(1d0)),DIMENSION(1:NLOOPLINE),INTENT(IN)::M2L
37
REAL(KIND(1d0)),DIMENSION(0:3)::rij
38
COMPLEX(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::matrix
39
COMPLEX(KIND(1d0)),INTENT(OUT)::det
43
rij(0:3)=PCL(i,0:3)-PCL(j,0:3)
44
matrix(i,j)=scalarprod(rij(0:3),rij(0:3))-M2L(i)-M2L(j)
46
matrix(j,i)=matrix(i,j)
50
det=CMNXNDET(NLOOPLINE,matrix)
52
END SUBROUTINE Complex_CaleyMatrix
54
SUBROUTINE CaleyMatrix2(NLOOPLINE,PijMatrix,M2L,matrix,det)
56
INTEGER,INTENT(IN)::NLOOPLINE
57
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(IN)::PijMatrix ! PijMatrix(i,j)=Pi.Pj
58
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE),INTENT(IN)::M2L
59
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::matrix
60
REAL(KIND(1d0)),INTENT(OUT)::det
64
matrix(i,j)=PijMatrix(i,i)+PijMatrix(j,j)-2d0*PijMatrix(i,j)-M2L(i)-M2L(j)
66
matrix(j,i)=matrix(i,j)
70
det=MNXNDET(NLOOPLINE,matrix)
72
END SUBROUTINE CaleyMatrix2
74
SUBROUTINE GramMatrix(NLOOPLINE,PCL,M2L,matrix,det)
76
INTEGER,INTENT(IN)::NLOOPLINE
77
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE,0:3),INTENT(IN)::PCL
78
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE),INTENT(IN)::M2L
79
REAL(KIND(1d0)),DIMENSION(0:3)::rij
80
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::matrix
81
REAL(KIND(1d0)),INTENT(OUT)::det
82
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE,0:3)::PE
84
CALL PCL2PE(NLOOPLINE,PCL,PE)
87
matrix(i,j)=scalarprod(PE(i,0:3),PE(j,0:3))
89
matrix(j,i)=matrix(i,j)
93
det=MNXNDET(NLOOPLINE,matrix)
95
END SUBROUTINE GramMatrix
97
SUBROUTINE RSMatrices(NLOOPLINE,PCL,M2L,rmatrix,smatrix,rdet,sdet)
99
INTEGER,INTENT(IN)::NLOOPLINE
100
! INTEGER,INTENT(IN)::NLOOPLINE
101
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE,0:3),INTENT(IN)::PCL
102
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE),INTENT(IN)::M2L
103
REAL(KIND(1d0)),DIMENSION(0:3)::rij
104
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::rmatrix
105
REAL(KIND(1d0)),DIMENSION(0:NLOOPLINE,0:NLOOPLINE),INTENT(OUT)::smatrix
106
REAL(KIND(1d0)),INTENT(OUT)::rdet,sdet
109
TYPE(rsmatrices_node),POINTER::item
110
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,0:3)::PCL1
114
PCL1(i,0:3)=PCL(i,0:3)-PCL(1,0:3)
117
item%NLOOPLINE=NLOOPLINE
118
item%M2L(1:NLOOPLINE)=M2L(1:NLOOPLINE)
119
item%PCL(1:NLOOPLINE,0:3)=PCL1(1:NLOOPLINE,0:3)
120
CALL rsmatrices_bt_search(item,rsmatrices_save,find)
124
RMATRIX(1:NLOOPLINE,1:NLOOPLINE)=&
125
item%RMATRIX(1:NLOOPLINE,1:NLOOPLINE)
126
SMATRIX(0:NLOOPLINE,0:NLOOPLINE)=&
127
item%SMATRIX(0:NLOOPLINE,0:NLOOPLINE)
139
rij(0:3)=PCL(i,0:3)-PCL(j,0:3)
140
rmatrix(i,j)=scalarprod(rij(0:3),rij(0:3))-M2L(i)-M2L(j)
141
smatrix(i,j)=rmatrix(i,j)
143
rmatrix(j,i)=rmatrix(i,j)
144
smatrix(j,i)=smatrix(i,j)
148
rdet=MNXNDET(NLOOPLINE,rmatrix)
149
sdet=MNXNDET(NLOOPLINE+1,smatrix(0:NLOOPLINE,0:NLOOPLINE))
153
item%SMATRIX(0:NLOOPLINE,0:NLOOPLINE)=SMATRIX(0:NLOOPLINE,0:NLOOPLINE)
154
item%RMATRIX(1:NLOOPLINE,1:NLOOPLINE)=RMATRIX(1:NLOOPLINE,1:NLOOPLINE)
157
END SUBROUTINE RSMATRICES
159
SUBROUTINE CRSMatrices(NLOOPLINE,PCL,M2L,rmatrix,smatrix,rdet,sdet)
161
INTEGER,INTENT(IN)::NLOOPLINE
162
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE,0:3),INTENT(IN)::PCL
163
COMPLEX(KIND(1d0)),DIMENSION(1:NLOOPLINE),INTENT(IN)::M2L
164
REAL(KIND(1d0)),DIMENSION(0:3)::rij
165
COMPLEX(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::rmatrix
166
COMPLEX(KIND(1d0)),DIMENSION(0:NLOOPLINE,0:NLOOPLINE),INTENT(OUT)::smatrix
167
COMPLEX(KIND(1d0)),INTENT(OUT)::rdet,sdet
170
TYPE(crsmatrices_node),POINTER::item
171
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,0:3)::PCL1
175
PCL1(i,0:3)=PCL(i,0:3)-PCL(1,0:3)
178
item%NLOOPLINE=NLOOPLINE
179
item%M2L(1:NLOOPLINE)=M2L(1:NLOOPLINE)
180
item%PCL(1:NLOOPLINE,0:3)=PCL1(1:NLOOPLINE,0:3)
181
CALL crsmatrices_bt_search(item,crsmatrices_save,find)
185
RMATRIX(1:NLOOPLINE,1:NLOOPLINE)=&
186
item%RMATRIX(1:NLOOPLINE,1:NLOOPLINE)
187
SMATRIX(0:NLOOPLINE,0:NLOOPLINE)=&
188
item%SMATRIX(0:NLOOPLINE,0:NLOOPLINE)
193
smatrix(0,0)=DCMPLX(0d0)
195
smatrix(0,i)=DCMPLX(1d0)
196
smatrix(i,0)=DCMPLX(1d0)
200
rij(0:3)=PCL(i,0:3)-PCL(j,0:3)
201
rmatrix(i,j)=scalarprod(rij(0:3),rij(0:3))-M2L(i)-M2L(j)
202
smatrix(i,j)=rmatrix(i,j)
204
rmatrix(j,i)=rmatrix(i,j)
205
smatrix(j,i)=smatrix(i,j)
209
rdet=CMNXNDET(NLOOPLINE,rmatrix)
210
sdet=CMNXNDET(NLOOPLINE+1,smatrix(0:NLOOPLINE,0:NLOOPLINE))
214
item%SMATRIX(0:NLOOPLINE,0:NLOOPLINE)=SMATRIX(0:NLOOPLINE,0:NLOOPLINE)
215
item%RMATRIX(1:NLOOPLINE,1:NLOOPLINE)=RMATRIX(1:NLOOPLINE,1:NLOOPLINE)
218
END SUBROUTINE CRSMATRICES
220
SUBROUTINE RSMatrices2(NLOOPLINE,PijMatrix,M2L,rmatrix,smatrix,rdet,sdet)
222
INTEGER,INTENT(IN)::NLOOPLINE
223
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE,1:NLOOPLINE),INTENT(IN)::PijMatrix ! PijMatrix(i,j)=Pi.Pj
224
REAL(KIND(1d0)),DIMENSION(1:NLOOPLINE),INTENT(IN)::M2L
225
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::rmatrix
226
REAL(KIND(1d0)),DIMENSION(0:NLOOPLINE,0:NLOOPLINE),INTENT(OUT)::smatrix
227
REAL(KIND(1d0)),INTENT(OUT)::rdet,sdet
236
rmatrix(i,j)=PijMatrix(i,i)+PijMatrix(j,j)-2d0*PijMatrix(i,j)-M2L(i)-M2L(j)
237
smatrix(i,j)=rmatrix(i,j)
239
rmatrix(j,i)=rmatrix(i,j)
240
smatrix(j,i)=smatrix(i,j)
244
rdet=MNXNDET(NLOOPLINE,rmatrix)
245
sdet=MNXNDET(NLOOPLINE+1,smatrix(0:NLOOPLINE,0:NLOOPLINE))
247
END SUBROUTINE RSMATRICES2
248
! in hep - ph/0509141
249
SUBROUTINE XYZMATRICES(NLOOPLINE,PCL,M2L,XMATRIX,YMATRIX,ZMATRIX,detY,detZ)
251
INTEGER,INTENT(IN)::NLOOPLINE
252
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,0:3),INTENT(IN)::PCL
253
REAL(KIND(1d0)),DIMENSION(NLOOPLINE),INTENT(IN)::M2L
254
REAL(KIND(1d0)),DIMENSION(2:NLOOPLINE,2:NLOOPLINE),INTENT(OUT)::ZMATRIX
255
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::YMATRIX,XMATRIX
256
REAL(KIND(1d0)),INTENT(OUT)::detY,detZ
258
REAL(KIND(1d0)),DIMENSION(0:3)::ri1,rj1,rij
260
TYPE(xyzmatrices_node),POINTER::item
261
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,0:3)::PCL1
265
PCL1(i,0:3)=PCL(i,0:3)-PCL(1,0:3)
268
item%NLOOPLINE=NLOOPLINE
269
item%M2L(1:NLOOPLINE)=M2L(1:NLOOPLINE)
270
item%PCL(1:NLOOPLINE,0:3)=PCL1(1:NLOOPLINE,0:3)
271
CALL xyzmatrices_bt_search(item,xyzmatrices_save,find)
275
YMATRIX(1:NLOOPLINE,1:NLOOPLINE)=&
276
item%YMATRIX(1:NLOOPLINE,1:NLOOPLINE)
277
XMATRIX(1:NLOOPLINE,1:NLOOPLINE)=&
278
item%XMATRIX(1:NLOOPLINE,1:NLOOPLINE)
279
ZMATRIX(2:NLOOPLINE,2:NLOOPLINE)=&
280
item%ZMATRIX(2:NLOOPLINE,2:NLOOPLINE)
287
rij(0:3)=PCL(i,0:3)-PCL(j,0:3)
288
YMATRIX(i,j)=-scalarprod(rij(0:3),rij(0:3))+M2L(i)+M2L(j)
290
ri1(0:3)=PCL(i,0:3)-PCL(1,0:3)
291
rj1(0:3)=PCL(j,0:3)-PCL(1,0:3)
292
ZMATRIX(i,j)=2d0*scalarprod(ri1(0:3),rj1(0:3))
293
XMATRIX(i,j)=ZMATRIX(i,j)
296
XMATRIX(i,j)=2*M2L(1)
298
ri1(0:3)=PCL(j,0:3)-PCL(1,0:3)
299
XMATRIX(i,j)=scalarprod(ri1(0:3),ri1(0:3))-M2L(j)+M2L(1)
303
YMATRIX(j,i)=YMATRIX(i,j)
304
XMATRIX(j,i)=XMATRIX(i,j)
306
ZMATRIX(j,i)=ZMATRIX(i,j)
311
detZ=MNXNDET(NLOOPLINE-1,ZMATRIX(2:NLOOPLINE,2:NLOOPLINE))
312
detY=MNXNDET(NLOOPLINE,YMATRIX(1:NLOOPLINE,1:NLOOPLINE))
316
item%XMATRIX(1:NLOOPLINE,1:NLOOPLINE)=XMATRIX(1:NLOOPLINE,1:NLOOPLINE)
317
item%YMATRIX(1:NLOOPLINE,1:NLOOPLINE)=YMATRIX(1:NLOOPLINE,1:NLOOPLINE)
318
item%ZMATRIX(2:NLOOPLINE,2:NLOOPLINE)=ZMATRIX(2:NLOOPLINE,2:NLOOPLINE)
321
END SUBROUTINE XYZMATRICES
323
SUBROUTINE CXYZMATRICES(NLOOPLINE,PCL,M2L,XMATRIX,YMATRIX,ZMATRIX,detY,detZ)
325
INTEGER,INTENT(IN)::NLOOPLINE
326
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,0:3),INTENT(IN)::PCL
327
COMPLEX(KIND(1d0)),DIMENSION(NLOOPLINE),INTENT(IN)::M2L
328
COMPLEX(KIND(1d0)),DIMENSION(2:NLOOPLINE,2:NLOOPLINE),INTENT(OUT)::ZMATRIX
329
COMPLEX(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::YMATRIX,XMATRIX
330
COMPLEX(KIND(1d0)),INTENT(OUT)::detY,detZ
332
REAL(KIND(1d0)),DIMENSION(0:3)::ri1,rj1,rij
334
TYPE(cxyzmatrices_node),POINTER::item
335
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,0:3)::PCL1
339
PCL1(i,0:3)=PCL(i,0:3)-PCL(1,0:3)
342
item%NLOOPLINE=NLOOPLINE
343
item%M2L(1:NLOOPLINE)=M2L(1:NLOOPLINE)
344
item%PCL(1:NLOOPLINE,0:3)=PCL1(1:NLOOPLINE,0:3)
345
CALL cxyzmatrices_bt_search(item,cxyzmatrices_save,find)
349
YMATRIX(1:NLOOPLINE,1:NLOOPLINE)=&
350
item%YMATRIX(1:NLOOPLINE,1:NLOOPLINE)
351
XMATRIX(1:NLOOPLINE,1:NLOOPLINE)=&
352
item%XMATRIX(1:NLOOPLINE,1:NLOOPLINE)
353
ZMATRIX(2:NLOOPLINE,2:NLOOPLINE)=&
354
item%ZMATRIX(2:NLOOPLINE,2:NLOOPLINE)
361
rij(0:3)=PCL(i,0:3)-PCL(j,0:3)
362
YMATRIX(i,j)=-scalarprod(rij(0:3),rij(0:3))+M2L(i)+M2L(j)
364
ri1(0:3)=PCL(i,0:3)-PCL(1,0:3)
365
rj1(0:3)=PCL(j,0:3)-PCL(1,0:3)
366
ZMATRIX(i,j)=2d0*scalarprod(ri1(0:3),rj1(0:3))
367
XMATRIX(i,j)=ZMATRIX(i,j)
370
XMATRIX(i,j)=2*M2L(1)
372
ri1(0:3)=PCL(j,0:3)-PCL(1,0:3)
373
XMATRIX(i,j)=scalarprod(ri1(0:3),ri1(0:3))-M2L(j)+M2L(1)
377
YMATRIX(j,i)=YMATRIX(i,j)
378
XMATRIX(j,i)=XMATRIX(i,j)
380
ZMATRIX(j,i)=ZMATRIX(i,j)
385
detZ=CMNXNDET(NLOOPLINE-1,ZMATRIX(2:NLOOPLINE,2:NLOOPLINE))
386
detY=CMNXNDET(NLOOPLINE,YMATRIX(1:NLOOPLINE,1:NLOOPLINE))
390
item%XMATRIX(1:NLOOPLINE,1:NLOOPLINE)=XMATRIX(1:NLOOPLINE,1:NLOOPLINE)
391
item%YMATRIX(1:NLOOPLINE,1:NLOOPLINE)=YMATRIX(1:NLOOPLINE,1:NLOOPLINE)
392
item%ZMATRIX(2:NLOOPLINE,2:NLOOPLINE)=ZMATRIX(2:NLOOPLINE,2:NLOOPLINE)
395
END SUBROUTINE CXYZMATRICES
397
SUBROUTINE XYZMATRICES2(NLOOPLINE,PijMatrix,M2L,XMATRIX,YMATRIX,ZMATRIX,detY,detZ)
399
INTEGER,INTENT(IN)::NLOOPLINE
400
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(IN)::PijMatrix ! PijMatrix(i,j)=pi.pj
401
REAL(KIND(1d0)),DIMENSION(NLOOPLINE),INTENT(IN)::M2L
402
REAL(KIND(1d0)),DIMENSION(2:NLOOPLINE,2:NLOOPLINE),INTENT(OUT)::ZMATRIX
403
REAL(KIND(1d0)),DIMENSION(NLOOPLINE,NLOOPLINE),INTENT(OUT)::YMATRIX,XMATRIX
404
REAL(KIND(1d0)),INTENT(OUT)::detY,detZ
406
REAL(KIND(1d0))::ri1,rj1,rij
409
rij=PijMatrix(i,i)+PijMatrix(j,j)-2d0*PijMatrix(i,j)
410
YMATRIX(i,j)=-rij+M2L(i)+M2L(j)
412
ZMATRIX(i,j)=2d0*(PijMatrix(i,j)+PijMatrix(1,1)-PijMatrix(i,1)-PijMatrix(j,1))
413
XMATRIX(i,j)=ZMATRIX(i,j)
416
XMATRIX(i,j)=2*M2L(1)
418
ri1=PijMatrix(i,i)+PijMatrix(1,1)-2d0*PijMatrix(i,1)
419
XMATRIX(i,j)=ri1-M2L(j)+M2L(1)
423
YMATRIX(j,i)=YMATRIX(i,j)
424
XMATRIX(j,i)=XMATRIX(i,j)
426
ZMATRIX(j,i)=ZMATRIX(i,j)
431
detZ=MNXNDET(NLOOPLINE-1,ZMATRIX(2:NLOOPLINE,2:NLOOPLINE))
432
detY=MNXNDET(NLOOPLINE,YMATRIX(1:NLOOPLINE,1:NLOOPLINE))
434
END SUBROUTINE XYZMATRICES2