596
SUBROUTINE LOOP_2(W1, W2, M1, M2, RANK, SQUAREDSOINDEX, LOOPNUM)
598
PARAMETER (NEXTERNAL=4)
600
PARAMETER (NLOOPLINE=2)
602
PARAMETER (NWAVEFUNCS=6)
604
PARAMETER (NLOOPGROUPS=25)
607
C These are constants related to the split orders
609
PARAMETER (NSQUAREDSO=1)
616
INTEGER RANK, LSYMFACT
617
INTEGER LOOPNUM, SQUAREDSOINDEX
621
REAL*8 PL(0:3,NLOOPLINE)
622
REAL*16 MP_PL(0:3,NLOOPLINE)
623
COMPLEX*16 M2L(NLOOPLINE)
624
INTEGER PAIRING(NLOOPLINE),WE(2)
625
INTEGER I, J, K, TEMP,I_LIB
626
LOGICAL COMPLEX_MASS,DOING_QP
630
INCLUDE 'MadLoopParams.inc'
631
INTEGER ID,SQSOINDEX,R
632
COMMON/LOOP/ID,SQSOINDEX,R
634
LOGICAL CHECKPHASE, HELDOUBLECHECKED
635
COMMON/INIT/CHECKPHASE, HELDOUBLECHECKED
638
INTEGER GOODHEL(NCOMB)
639
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
640
COMMON/FILTERS/GOODAMP,GOODHEL,HELOFFSET
642
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
643
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
644
COMMON/LOOPRES/LOOPRES,S
647
COMPLEX*16 W(20,NWAVEFUNCS)
649
COMPLEX*32 MP_W(20,NWAVEFUNCS)
654
COMMON/CT/LSCALE,CTMODE
656
COMMON/I_LIB/LIBINDEX
662
C Determine it uses qp or not
663
DOING_QP = (CTMODE.GE.4)
665
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)
666
$ .OR.GOODAMP(SQUAREDSOINDEX,LOOPNUM)) THEN
677
SQSOINDEX=SQUAREDSOINDEX
685
DO K=TEMP,(TEMP+PAIRING(J)-1)
686
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
688
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
694
C Determine whether the integral is with complex masses or not
695
C since some reduction libraries, e.g.PJFry++ and IREGI, are
697
C not able to deal with complex masses
700
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
701
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
706
C Choose the correct loop library
707
CALL CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS,ID
709
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
711
CALL CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX
712
$ ,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
713
ELSEIF (MLREDUCTIONLIB(I_LIB).EQ.6) THEN
715
IF (.NOT.DOING_QP) THEN
716
CALL NINJA_LOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
717
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
719
WRITE(*,*) 'ERROR: Ninja should not be called in quadruple'
720
$ //' precision since the installed version considered does'
721
$ //' not support it.'
725
C Tensor Integral Reduction is used
726
CALL TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL,M2L
727
$ ,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX
731
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
732
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
733
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
734
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.
738
SUBROUTINE LOOP_3(W1, W2, W3, M1, M2, M3, RANK, SQUAREDSOINDEX,
741
PARAMETER (NEXTERNAL=4)
743
PARAMETER (NLOOPLINE=3)
745
PARAMETER (NWAVEFUNCS=6)
747
PARAMETER (NLOOPGROUPS=25)
750
C These are constants related to the split orders
752
PARAMETER (NSQUAREDSO=1)
757
COMPLEX*16 M1, M2, M3
759
INTEGER RANK, LSYMFACT
760
INTEGER LOOPNUM, SQUAREDSOINDEX
764
REAL*8 PL(0:3,NLOOPLINE)
765
REAL*16 MP_PL(0:3,NLOOPLINE)
766
COMPLEX*16 M2L(NLOOPLINE)
767
INTEGER PAIRING(NLOOPLINE),WE(3)
768
INTEGER I, J, K, TEMP,I_LIB
769
LOGICAL COMPLEX_MASS,DOING_QP
773
INCLUDE 'MadLoopParams.inc'
774
INTEGER ID,SQSOINDEX,R
775
COMMON/LOOP/ID,SQSOINDEX,R
777
LOGICAL CHECKPHASE, HELDOUBLECHECKED
778
COMMON/INIT/CHECKPHASE, HELDOUBLECHECKED
781
INTEGER GOODHEL(NCOMB)
782
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
783
COMMON/FILTERS/GOODAMP,GOODHEL,HELOFFSET
785
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
786
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
787
COMMON/LOOPRES/LOOPRES,S
790
COMPLEX*16 W(20,NWAVEFUNCS)
792
COMPLEX*32 MP_W(20,NWAVEFUNCS)
797
COMMON/CT/LSCALE,CTMODE
799
COMMON/I_LIB/LIBINDEX
805
C Determine it uses qp or not
806
DOING_QP = (CTMODE.GE.4)
808
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)
809
$ .OR.GOODAMP(SQUAREDSOINDEX,LOOPNUM)) THEN
822
SQSOINDEX=SQUAREDSOINDEX
830
DO K=TEMP,(TEMP+PAIRING(J)-1)
831
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
833
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
839
C Determine whether the integral is with complex masses or not
840
C since some reduction libraries, e.g.PJFry++ and IREGI, are
842
C not able to deal with complex masses
845
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
846
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
851
C Choose the correct loop library
852
CALL CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS,ID
854
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
856
CALL CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX
857
$ ,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
858
ELSEIF (MLREDUCTIONLIB(I_LIB).EQ.6) THEN
860
IF (.NOT.DOING_QP) THEN
861
CALL NINJA_LOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
862
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
864
WRITE(*,*) 'ERROR: Ninja should not be called in quadruple'
865
$ //' precision since the installed version considered does'
866
$ //' not support it.'
870
C Tensor Integral Reduction is used
871
CALL TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL,M2L
872
$ ,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX
876
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
877
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
878
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
879
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.
596
883
SUBROUTINE LOOP_4(W1, W2, W3, W4, M1, M2, M3, M4, RANK,
597
884
$ SQUAREDSOINDEX, LOOPNUM)
598
885
INTEGER NEXTERNAL
882
SUBROUTINE LOOP_3(W1, W2, W3, M1, M2, M3, RANK, SQUAREDSOINDEX,
885
PARAMETER (NEXTERNAL=4)
887
PARAMETER (NLOOPLINE=3)
889
PARAMETER (NWAVEFUNCS=6)
891
PARAMETER (NLOOPGROUPS=25)
894
C These are constants related to the split orders
896
PARAMETER (NSQUAREDSO=1)
901
COMPLEX*16 M1, M2, M3
903
INTEGER RANK, LSYMFACT
904
INTEGER LOOPNUM, SQUAREDSOINDEX
908
REAL*8 PL(0:3,NLOOPLINE)
909
REAL*16 MP_PL(0:3,NLOOPLINE)
910
COMPLEX*16 M2L(NLOOPLINE)
911
INTEGER PAIRING(NLOOPLINE),WE(3)
912
INTEGER I, J, K, TEMP,I_LIB
913
LOGICAL COMPLEX_MASS,DOING_QP
917
INCLUDE 'MadLoopParams.inc'
918
INTEGER ID,SQSOINDEX,R
919
COMMON/LOOP/ID,SQSOINDEX,R
921
LOGICAL CHECKPHASE, HELDOUBLECHECKED
922
COMMON/INIT/CHECKPHASE, HELDOUBLECHECKED
925
INTEGER GOODHEL(NCOMB)
926
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
927
COMMON/FILTERS/GOODAMP,GOODHEL,HELOFFSET
929
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
930
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
931
COMMON/LOOPRES/LOOPRES,S
934
COMPLEX*16 W(20,NWAVEFUNCS)
936
COMPLEX*32 MP_W(20,NWAVEFUNCS)
941
COMMON/CT/LSCALE,CTMODE
943
COMMON/I_LIB/LIBINDEX
949
C Determine it uses qp or not
950
DOING_QP = (CTMODE.GE.4)
952
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)
953
$ .OR.GOODAMP(SQUAREDSOINDEX,LOOPNUM)) THEN
966
SQSOINDEX=SQUAREDSOINDEX
974
DO K=TEMP,(TEMP+PAIRING(J)-1)
975
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
977
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
983
C Determine whether the integral is with complex masses or not
984
C since some reduction libraries, e.g.PJFry++ and IREGI, are
986
C not able to deal with complex masses
989
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
990
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
995
C Choose the correct loop library
996
CALL CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS,ID
998
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
1000
CALL CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX
1001
$ ,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1002
ELSEIF (MLREDUCTIONLIB(I_LIB).EQ.6) THEN
1004
IF (.NOT.DOING_QP) THEN
1005
CALL NINJA_LOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1006
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1008
WRITE(*,*) 'ERROR: Ninja should not be called in quadruple'
1009
$ //' precision since the installed version considered does'
1010
$ //' not support it.'
1014
C Tensor Integral Reduction is used
1015
CALL TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL,M2L
1016
$ ,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX
1020
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1021
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1022
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1023
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.
1027
SUBROUTINE LOOP_2(W1, W2, M1, M2, RANK, SQUAREDSOINDEX, LOOPNUM)
1029
PARAMETER (NEXTERNAL=4)
1031
PARAMETER (NLOOPLINE=2)
1033
PARAMETER (NWAVEFUNCS=6)
1035
PARAMETER (NLOOPGROUPS=25)
1037
PARAMETER (NCOMB=16)
1038
C These are constants related to the split orders
1040
PARAMETER (NSQUAREDSO=1)
1047
INTEGER RANK, LSYMFACT
1048
INTEGER LOOPNUM, SQUAREDSOINDEX
1052
REAL*8 PL(0:3,NLOOPLINE)
1053
REAL*16 MP_PL(0:3,NLOOPLINE)
1054
COMPLEX*16 M2L(NLOOPLINE)
1055
INTEGER PAIRING(NLOOPLINE),WE(2)
1056
INTEGER I, J, K, TEMP,I_LIB
1057
LOGICAL COMPLEX_MASS,DOING_QP
1061
INCLUDE 'MadLoopParams.inc'
1062
INTEGER ID,SQSOINDEX,R
1063
COMMON/LOOP/ID,SQSOINDEX,R
1065
LOGICAL CHECKPHASE, HELDOUBLECHECKED
1066
COMMON/INIT/CHECKPHASE, HELDOUBLECHECKED
1069
INTEGER GOODHEL(NCOMB)
1070
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
1071
COMMON/FILTERS/GOODAMP,GOODHEL,HELOFFSET
1073
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
1074
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
1075
COMMON/LOOPRES/LOOPRES,S
1078
COMPLEX*16 W(20,NWAVEFUNCS)
1080
COMPLEX*32 MP_W(20,NWAVEFUNCS)
1085
COMMON/CT/LSCALE,CTMODE
1087
COMMON/I_LIB/LIBINDEX
1093
C Determine it uses qp or not
1094
DOING_QP = (CTMODE.GE.4)
1096
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)
1097
$ .OR.GOODAMP(SQUAREDSOINDEX,LOOPNUM)) THEN
1108
SQSOINDEX=SQUAREDSOINDEX
1114
MP_PL(I,J)=0.0E+0_16
1116
DO K=TEMP,(TEMP+PAIRING(J)-1)
1117
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
1119
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
1122
TEMP=TEMP+PAIRING(J)
1125
C Determine whether the integral is with complex masses or not
1126
C since some reduction libraries, e.g.PJFry++ and IREGI, are
1128
C not able to deal with complex masses
1129
COMPLEX_MASS=.FALSE.
1131
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
1132
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
1137
C Choose the correct loop library
1138
CALL CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS,ID
1140
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
1142
CALL CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX
1143
$ ,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1144
ELSEIF (MLREDUCTIONLIB(I_LIB).EQ.6) THEN
1146
IF (.NOT.DOING_QP) THEN
1147
CALL NINJA_LOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
1148
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
1150
WRITE(*,*) 'ERROR: Ninja should not be called in quadruple'
1151
$ //' precision since the installed version considered does'
1152
$ //' not support it.'
1156
C Tensor Integral Reduction is used
1157
CALL TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL,M2L
1158
$ ,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX
1162
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1163
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1164
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
1165
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.