889
SUBROUTINE ML5_0_LOOP_2_3(P1, P2, W1, W2, W3, M1, M2, RANK,
890
$ SQUAREDSOINDEX, LOOPNUM)
892
PARAMETER (NEXTERNAL=4)
894
PARAMETER (NLOOPLINE=2)
896
PARAMETER (NWAVEFUNCS=10)
898
PARAMETER (NLOOPGROUPS=26)
901
C These are constants related to the split orders
903
PARAMETER (NSQUAREDSO=1)
910
INTEGER RANK, LSYMFACT
911
INTEGER LOOPNUM, SQUAREDSOINDEX
915
REAL*8 PL(0:3,NLOOPLINE)
916
REAL*16 MP_PL(0:3,NLOOPLINE)
917
COMPLEX*16 M2L(NLOOPLINE)
918
INTEGER PAIRING(NLOOPLINE),WE(3)
919
INTEGER I, J, K, TEMP,I_LIB
920
LOGICAL COMPLEX_MASS,DOING_QP
924
INCLUDE 'MadLoopParams.inc'
925
INTEGER ID,SQSOINDEX,R
926
COMMON/ML5_0_LOOP/ID,SQSOINDEX,R
928
LOGICAL CHECKPHASE, HELDOUBLECHECKED
929
COMMON/ML5_0_INIT/CHECKPHASE, HELDOUBLECHECKED
932
INTEGER GOODHEL(NCOMB)
933
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
934
COMMON/ML5_0_FILTERS/GOODAMP,GOODHEL,HELOFFSET
936
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
937
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
938
COMMON/ML5_0_LOOPRES/LOOPRES,S
941
COMPLEX*16 W(20,NWAVEFUNCS)
943
COMPLEX*32 MP_W(20,NWAVEFUNCS)
944
COMMON/ML5_0_MP_W/MP_W
948
COMMON/ML5_0_CT/LSCALE,CTMODE
950
COMMON/ML5_0_I_LIB/LIBINDEX
956
C Determine it uses qp or not
957
DOING_QP = (CTMODE.GE.4)
959
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)
960
$ .OR.GOODAMP(SQUAREDSOINDEX,LOOPNUM)) THEN
970
SQSOINDEX=SQUAREDSOINDEX
978
DO K=TEMP,(TEMP+PAIRING(J)-1)
979
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
981
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
987
C Determine whether the integral is with complex masses or not
988
C since some reduction libraries, e.g.PJFry++ and IREGI, are
990
C not able to deal with complex masses
993
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
994
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
999
C Choose the correct loop library
1000
CALL ML5_0_CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS
1001
$ ,ID,DOING_QP,I_LIB)
1002
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
1004
CALL ML5_0_CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1005
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1006
ELSEIF (MLREDUCTIONLIB(I_LIB).EQ.6) THEN
1008
IF (.NOT.DOING_QP) THEN
1009
CALL ML5_0_NINJA_LOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1010
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1012
WRITE(*,*) 'ERROR: Ninja should not be called in quadruple'
1013
$ //' precision since the installed version considered does'
1014
$ //' not support it.'
1018
C Tensor Integral Reduction is used
1019
CALL ML5_0_TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL
1020
$ ,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)
1021
$ ,S(SQUAREDSOINDEX,LOOPNUM))
1024
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1025
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1026
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1027
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.
1031
SUBROUTINE ML5_0_LOOP_2(W1, W2, M1, M2, RANK, SQUAREDSOINDEX,
1034
PARAMETER (NEXTERNAL=4)
1036
PARAMETER (NLOOPLINE=2)
1038
PARAMETER (NWAVEFUNCS=10)
1040
PARAMETER (NLOOPGROUPS=26)
1042
PARAMETER (NCOMB=16)
1043
C These are constants related to the split orders
1045
PARAMETER (NSQUAREDSO=1)
1052
INTEGER RANK, LSYMFACT
1053
INTEGER LOOPNUM, SQUAREDSOINDEX
1057
REAL*8 PL(0:3,NLOOPLINE)
1058
REAL*16 MP_PL(0:3,NLOOPLINE)
1059
COMPLEX*16 M2L(NLOOPLINE)
1060
INTEGER PAIRING(NLOOPLINE),WE(2)
1061
INTEGER I, J, K, TEMP,I_LIB
1062
LOGICAL COMPLEX_MASS,DOING_QP
1066
INCLUDE 'MadLoopParams.inc'
1067
INTEGER ID,SQSOINDEX,R
1068
COMMON/ML5_0_LOOP/ID,SQSOINDEX,R
1070
LOGICAL CHECKPHASE, HELDOUBLECHECKED
1071
COMMON/ML5_0_INIT/CHECKPHASE, HELDOUBLECHECKED
1074
INTEGER GOODHEL(NCOMB)
1075
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
1076
COMMON/ML5_0_FILTERS/GOODAMP,GOODHEL,HELOFFSET
1078
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
1079
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
1080
COMMON/ML5_0_LOOPRES/LOOPRES,S
1083
COMPLEX*16 W(20,NWAVEFUNCS)
1085
COMPLEX*32 MP_W(20,NWAVEFUNCS)
1086
COMMON/ML5_0_MP_W/MP_W
1090
COMMON/ML5_0_CT/LSCALE,CTMODE
1092
COMMON/ML5_0_I_LIB/LIBINDEX
1098
C Determine it uses qp or not
1099
DOING_QP = (CTMODE.GE.4)
1101
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)
1102
$ .OR.GOODAMP(SQUAREDSOINDEX,LOOPNUM)) THEN
1113
SQSOINDEX=SQUAREDSOINDEX
1119
MP_PL(I,J)=0.0E+0_16
1121
DO K=TEMP,(TEMP+PAIRING(J)-1)
1122
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
1124
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
1127
TEMP=TEMP+PAIRING(J)
1130
C Determine whether the integral is with complex masses or not
1131
C since some reduction libraries, e.g.PJFry++ and IREGI, are
1133
C not able to deal with complex masses
1134
COMPLEX_MASS=.FALSE.
1136
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
1137
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
1142
C Choose the correct loop library
1143
CALL ML5_0_CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS
1144
$ ,ID,DOING_QP,I_LIB)
1145
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
1147
CALL ML5_0_CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1148
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1149
ELSEIF (MLREDUCTIONLIB(I_LIB).EQ.6) THEN
1151
IF (.NOT.DOING_QP) THEN
1152
CALL ML5_0_NINJA_LOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1153
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1155
WRITE(*,*) 'ERROR: Ninja should not be called in quadruple'
1156
$ //' precision since the installed version considered does'
1157
$ //' not support it.'
1161
C Tensor Integral Reduction is used
1162
CALL ML5_0_TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL
1163
$ ,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)
1164
$ ,S(SQUAREDSOINDEX,LOOPNUM))
1167
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1168
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1169
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1170
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.
886
1174
SUBROUTINE ML5_0_LOOP_3_4(P1, P2, P3, W1, W2, W3, W4, M1, M2, M3
887
1175
$ , RANK, SQUAREDSOINDEX, LOOPNUM)
888
1176
INTEGER NEXTERNAL
1031
SUBROUTINE ML5_0_LOOP_3(W1, W2, W3, M1, M2, M3, RANK,
1032
$ SQUAREDSOINDEX, LOOPNUM)
1034
PARAMETER (NEXTERNAL=4)
1036
PARAMETER (NLOOPLINE=3)
1038
PARAMETER (NWAVEFUNCS=10)
1040
PARAMETER (NLOOPGROUPS=26)
1042
PARAMETER (NCOMB=16)
1043
C These are constants related to the split orders
1045
PARAMETER (NSQUAREDSO=1)
1050
COMPLEX*16 M1, M2, M3
1052
INTEGER RANK, LSYMFACT
1053
INTEGER LOOPNUM, SQUAREDSOINDEX
1057
REAL*8 PL(0:3,NLOOPLINE)
1058
REAL*16 MP_PL(0:3,NLOOPLINE)
1059
COMPLEX*16 M2L(NLOOPLINE)
1060
INTEGER PAIRING(NLOOPLINE),WE(3)
1061
INTEGER I, J, K, TEMP,I_LIB
1062
LOGICAL COMPLEX_MASS,DOING_QP
1066
INCLUDE 'MadLoopParams.inc'
1067
INTEGER ID,SQSOINDEX,R
1068
COMMON/ML5_0_LOOP/ID,SQSOINDEX,R
1070
LOGICAL CHECKPHASE, HELDOUBLECHECKED
1071
COMMON/ML5_0_INIT/CHECKPHASE, HELDOUBLECHECKED
1074
INTEGER GOODHEL(NCOMB)
1075
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
1076
COMMON/ML5_0_FILTERS/GOODAMP,GOODHEL,HELOFFSET
1078
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
1079
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
1080
COMMON/ML5_0_LOOPRES/LOOPRES,S
1083
COMPLEX*16 W(20,NWAVEFUNCS)
1085
COMPLEX*32 MP_W(20,NWAVEFUNCS)
1086
COMMON/ML5_0_MP_W/MP_W
1090
COMMON/ML5_0_CT/LSCALE,CTMODE
1092
COMMON/ML5_0_I_LIB/LIBINDEX
1098
C Determine it uses qp or not
1099
DOING_QP = (CTMODE.GE.4)
1101
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED).OR.GOODAMP(SQUAREDSOIND
1115
SQSOINDEX=SQUAREDSOINDEX
1121
MP_PL(I,J)=0.0E+0_16
1123
DO K=TEMP,(TEMP+PAIRING(J)-1)
1124
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
1126
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
1129
TEMP=TEMP+PAIRING(J)
1132
C Determine whether the integral is with complex masses or not
1133
C since some reduction libraries, e.g.PJFry++ and IREGI, are
1135
C not able to deal with complex masses
1136
COMPLEX_MASS=.FALSE.
1138
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
1139
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
1144
C Choose the correct loop library
1145
CALL ML5_0_CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS
1146
$ ,ID,DOING_QP,I_LIB)
1147
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
1149
CALL ML5_0_CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1150
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1151
ELSEIF (MLREDUCTIONLIB(I_LIB).EQ.6) THEN
1153
IF (.NOT.DOING_QP) THEN
1154
CALL ML5_0_NINJA_LOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1155
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1157
WRITE(*,*) 'ERROR: Ninja should not be called in quadruple'
1158
$ //' precision since the installed version considered does'
1159
$ //' not support it.'
1163
C Tensor Integral Reduction is used
1164
CALL ML5_0_TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL
1165
$ ,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)
1166
$ ,S(SQUAREDSOINDEX,LOOPNUM))
1169
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1170
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1171
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1172
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.
1176
SUBROUTINE ML5_0_LOOP_2(W1, W2, M1, M2, RANK, SQUAREDSOINDEX,
1179
PARAMETER (NEXTERNAL=4)
1181
PARAMETER (NLOOPLINE=2)
1183
PARAMETER (NWAVEFUNCS=10)
1185
PARAMETER (NLOOPGROUPS=26)
1187
PARAMETER (NCOMB=16)
1188
C These are constants related to the split orders
1190
PARAMETER (NSQUAREDSO=1)
1197
INTEGER RANK, LSYMFACT
1198
INTEGER LOOPNUM, SQUAREDSOINDEX
1202
REAL*8 PL(0:3,NLOOPLINE)
1203
REAL*16 MP_PL(0:3,NLOOPLINE)
1204
COMPLEX*16 M2L(NLOOPLINE)
1205
INTEGER PAIRING(NLOOPLINE),WE(2)
1206
INTEGER I, J, K, TEMP,I_LIB
1207
LOGICAL COMPLEX_MASS,DOING_QP
1211
INCLUDE 'MadLoopParams.inc'
1212
INTEGER ID,SQSOINDEX,R
1213
COMMON/ML5_0_LOOP/ID,SQSOINDEX,R
1215
LOGICAL CHECKPHASE, HELDOUBLECHECKED
1216
COMMON/ML5_0_INIT/CHECKPHASE, HELDOUBLECHECKED
1219
INTEGER GOODHEL(NCOMB)
1220
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
1221
COMMON/ML5_0_FILTERS/GOODAMP,GOODHEL,HELOFFSET
1223
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
1224
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
1225
COMMON/ML5_0_LOOPRES/LOOPRES,S
1228
COMPLEX*16 W(20,NWAVEFUNCS)
1230
COMPLEX*32 MP_W(20,NWAVEFUNCS)
1231
COMMON/ML5_0_MP_W/MP_W
1235
COMMON/ML5_0_CT/LSCALE,CTMODE
1237
COMMON/ML5_0_I_LIB/LIBINDEX
1243
C Determine it uses qp or not
1244
DOING_QP = (CTMODE.GE.4)
1246
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED).OR.GOODAMP(SQUAREDSOIND
1258
SQSOINDEX=SQUAREDSOINDEX
1264
MP_PL(I,J)=0.0E+0_16
1266
DO K=TEMP,(TEMP+PAIRING(J)-1)
1267
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
1269
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
1272
TEMP=TEMP+PAIRING(J)
1275
C Determine whether the integral is with complex masses or not
1276
C since some reduction libraries, e.g.PJFry++ and IREGI, are
1278
C not able to deal with complex masses
1279
COMPLEX_MASS=.FALSE.
1281
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
1282
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
1287
C Choose the correct loop library
1288
CALL ML5_0_CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS
1289
$ ,ID,DOING_QP,I_LIB)
1290
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
1292
CALL ML5_0_CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1293
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1294
ELSEIF (MLREDUCTIONLIB(I_LIB).EQ.6) THEN
1296
IF (.NOT.DOING_QP) THEN
1297
CALL ML5_0_NINJA_LOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1298
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1300
WRITE(*,*) 'ERROR: Ninja should not be called in quadruple'
1301
$ //' precision since the installed version considered does'
1302
$ //' not support it.'
1306
C Tensor Integral Reduction is used
1307
CALL ML5_0_TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL
1308
$ ,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)
1309
$ ,S(SQUAREDSOINDEX,LOOPNUM))
1312
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1313
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1314
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1315
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.