598
SUBROUTINE ML5_0_LOOP_2_3(P1, P2, W1, W2, W3, M1, M2, RANK,
599
$ SQUAREDSOINDEX, LOOPNUM)
601
PARAMETER (NEXTERNAL=4)
603
PARAMETER (NLOOPLINE=2)
605
PARAMETER (NWAVEFUNCS=10)
607
PARAMETER (NLOOPGROUPS=26)
610
C These are constants related to the split orders
612
PARAMETER (NSQUAREDSO=0)
619
INTEGER RANK, LSYMFACT
620
INTEGER LOOPNUM, SQUAREDSOINDEX
624
REAL*8 PL(0:3,NLOOPLINE)
625
REAL*16 MP_PL(0:3,NLOOPLINE)
626
COMPLEX*16 M2L(NLOOPLINE)
627
INTEGER PAIRING(NLOOPLINE),WE(3)
628
INTEGER I, J, K, TEMP,I_LIB
629
LOGICAL COMPLEX_MASS,DOING_QP
633
INCLUDE 'MadLoopParams.inc'
634
INTEGER ID,SQSOINDEX,R
635
COMMON/ML5_0_LOOP/ID,SQSOINDEX,R
637
LOGICAL CHECKPHASE, HELDOUBLECHECKED
638
COMMON/ML5_0_INIT/CHECKPHASE, HELDOUBLECHECKED
641
INTEGER GOODHEL(NCOMB)
642
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
643
COMMON/ML5_0_FILTERS/GOODAMP,GOODHEL,HELOFFSET
645
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
646
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
647
COMMON/ML5_0_LOOPRES/LOOPRES,S
650
COMPLEX*16 W(20,NWAVEFUNCS)
652
COMPLEX*32 MP_W(20,NWAVEFUNCS)
653
COMMON/ML5_0_MP_W/MP_W
657
COMMON/ML5_0_CT/LSCALE,CTMODE
659
COMMON/ML5_0_I_LIB/LIBINDEX
665
C Determine it uses qp or not
666
DOING_QP = (CTMODE.GE.4)
668
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)
669
$ .OR.GOODAMP(SQUAREDSOINDEX,LOOPNUM)) THEN
679
SQSOINDEX=SQUAREDSOINDEX
687
DO K=TEMP,(TEMP+PAIRING(J)-1)
688
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
690
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
696
C Determine whether the integral is with complex masses or not
697
C since some reduction libraries, e.g.PJFry++ and IREGI, are
699
C not able to deal with complex masses
702
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
703
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
708
C Choose the correct loop library
709
CALL ML5_0_CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS
710
$ ,ID,DOING_QP,I_LIB)
711
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
713
CALL ML5_0_CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
714
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
716
C Tensor Integral Reduction is used
717
CALL ML5_0_TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL
718
$ ,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)
719
$ ,S(SQUAREDSOINDEX,LOOPNUM))
722
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
723
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
724
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
725
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.
729
SUBROUTINE ML5_0_LOOP_2(W1, W2, M1, M2, RANK, SQUAREDSOINDEX,
732
PARAMETER (NEXTERNAL=4)
734
PARAMETER (NLOOPLINE=2)
736
PARAMETER (NWAVEFUNCS=10)
738
PARAMETER (NLOOPGROUPS=26)
741
C These are constants related to the split orders
743
PARAMETER (NSQUAREDSO=0)
750
INTEGER RANK, LSYMFACT
751
INTEGER LOOPNUM, SQUAREDSOINDEX
755
REAL*8 PL(0:3,NLOOPLINE)
756
REAL*16 MP_PL(0:3,NLOOPLINE)
757
COMPLEX*16 M2L(NLOOPLINE)
758
INTEGER PAIRING(NLOOPLINE),WE(2)
759
INTEGER I, J, K, TEMP,I_LIB
760
LOGICAL COMPLEX_MASS,DOING_QP
764
INCLUDE 'MadLoopParams.inc'
765
INTEGER ID,SQSOINDEX,R
766
COMMON/ML5_0_LOOP/ID,SQSOINDEX,R
768
LOGICAL CHECKPHASE, HELDOUBLECHECKED
769
COMMON/ML5_0_INIT/CHECKPHASE, HELDOUBLECHECKED
772
INTEGER GOODHEL(NCOMB)
773
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
774
COMMON/ML5_0_FILTERS/GOODAMP,GOODHEL,HELOFFSET
776
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
777
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
778
COMMON/ML5_0_LOOPRES/LOOPRES,S
781
COMPLEX*16 W(20,NWAVEFUNCS)
783
COMPLEX*32 MP_W(20,NWAVEFUNCS)
784
COMMON/ML5_0_MP_W/MP_W
788
COMMON/ML5_0_CT/LSCALE,CTMODE
790
COMMON/ML5_0_I_LIB/LIBINDEX
796
C Determine it uses qp or not
797
DOING_QP = (CTMODE.GE.4)
799
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)
800
$ .OR.GOODAMP(SQUAREDSOINDEX,LOOPNUM)) THEN
811
SQSOINDEX=SQUAREDSOINDEX
819
DO K=TEMP,(TEMP+PAIRING(J)-1)
820
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
822
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
828
C Determine whether the integral is with complex masses or not
829
C since some reduction libraries, e.g.PJFry++ and IREGI, are
831
C not able to deal with complex masses
834
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
835
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
840
C Choose the correct loop library
841
CALL ML5_0_CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS
842
$ ,ID,DOING_QP,I_LIB)
843
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
845
CALL ML5_0_CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
846
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
848
C Tensor Integral Reduction is used
849
CALL ML5_0_TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL
850
$ ,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)
851
$ ,S(SQUAREDSOINDEX,LOOPNUM))
854
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
855
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
856
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
857
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.
595
861
SUBROUTINE ML5_0_LOOP_3_4(P1, P2, P3, W1, W2, W3, W4, M1, M2, M3
596
862
$ , RANK, SQUAREDSOINDEX, LOOPNUM)
597
863
INTEGER NEXTERNAL
729
SUBROUTINE ML5_0_LOOP_3(W1, W2, W3, M1, M2, M3, RANK,
730
$ SQUAREDSOINDEX, LOOPNUM)
732
PARAMETER (NEXTERNAL=4)
734
PARAMETER (NLOOPLINE=3)
736
PARAMETER (NWAVEFUNCS=10)
738
PARAMETER (NLOOPGROUPS=26)
741
C These are constants related to the split orders
743
PARAMETER (NSQUAREDSO=0)
748
COMPLEX*16 M1, M2, M3
750
INTEGER RANK, LSYMFACT
751
INTEGER LOOPNUM, SQUAREDSOINDEX
755
REAL*8 PL(0:3,NLOOPLINE)
756
REAL*16 MP_PL(0:3,NLOOPLINE)
757
COMPLEX*16 M2L(NLOOPLINE)
758
INTEGER PAIRING(NLOOPLINE),WE(3)
759
INTEGER I, J, K, TEMP,I_LIB
760
LOGICAL COMPLEX_MASS,DOING_QP
764
INCLUDE 'MadLoopParams.inc'
765
INTEGER ID,SQSOINDEX,R
766
COMMON/ML5_0_LOOP/ID,SQSOINDEX,R
768
LOGICAL CHECKPHASE, HELDOUBLECHECKED
769
COMMON/ML5_0_INIT/CHECKPHASE, HELDOUBLECHECKED
772
INTEGER GOODHEL(NCOMB)
773
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
774
COMMON/ML5_0_FILTERS/GOODAMP,GOODHEL,HELOFFSET
776
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
777
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
778
COMMON/ML5_0_LOOPRES/LOOPRES,S
781
COMPLEX*16 W(20,NWAVEFUNCS)
783
COMPLEX*32 MP_W(20,NWAVEFUNCS)
784
COMMON/ML5_0_MP_W/MP_W
788
COMMON/ML5_0_CT/LSCALE,CTMODE
790
COMMON/ML5_0_I_LIB/LIBINDEX
796
C Determine it uses qp or not
797
DOING_QP = (CTMODE.GE.4)
799
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED).OR.GOODAMP(SQUAREDSOIND
813
SQSOINDEX=SQUAREDSOINDEX
821
DO K=TEMP,(TEMP+PAIRING(J)-1)
822
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
824
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
830
C Determine whether the integral is with complex masses or not
831
C since some reduction libraries, e.g.PJFry++ and IREGI, are
833
C not able to deal with complex masses
836
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
837
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
842
C Choose the correct loop library
843
CALL ML5_0_CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS
844
$ ,ID,DOING_QP,I_LIB)
845
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
847
CALL ML5_0_CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
848
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
850
C Tensor Integral Reduction is used
851
CALL ML5_0_TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL
852
$ ,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)
853
$ ,S(SQUAREDSOINDEX,LOOPNUM))
856
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
857
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
858
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
859
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.
863
SUBROUTINE ML5_0_LOOP_2(W1, W2, M1, M2, RANK, SQUAREDSOINDEX,
866
PARAMETER (NEXTERNAL=4)
868
PARAMETER (NLOOPLINE=2)
870
PARAMETER (NWAVEFUNCS=10)
872
PARAMETER (NLOOPGROUPS=26)
875
C These are constants related to the split orders
877
PARAMETER (NSQUAREDSO=0)
884
INTEGER RANK, LSYMFACT
885
INTEGER LOOPNUM, SQUAREDSOINDEX
889
REAL*8 PL(0:3,NLOOPLINE)
890
REAL*16 MP_PL(0:3,NLOOPLINE)
891
COMPLEX*16 M2L(NLOOPLINE)
892
INTEGER PAIRING(NLOOPLINE),WE(2)
893
INTEGER I, J, K, TEMP,I_LIB
894
LOGICAL COMPLEX_MASS,DOING_QP
898
INCLUDE 'MadLoopParams.inc'
899
INTEGER ID,SQSOINDEX,R
900
COMMON/ML5_0_LOOP/ID,SQSOINDEX,R
902
LOGICAL CHECKPHASE, HELDOUBLECHECKED
903
COMMON/ML5_0_INIT/CHECKPHASE, HELDOUBLECHECKED
906
INTEGER GOODHEL(NCOMB)
907
LOGICAL GOODAMP(NSQUAREDSO,NLOOPGROUPS)
908
COMMON/ML5_0_FILTERS/GOODAMP,GOODHEL,HELOFFSET
910
COMPLEX*16 LOOPRES(3,NSQUAREDSO,NLOOPGROUPS)
911
LOGICAL S(NSQUAREDSO,NLOOPGROUPS)
912
COMMON/ML5_0_LOOPRES/LOOPRES,S
915
COMPLEX*16 W(20,NWAVEFUNCS)
917
COMPLEX*32 MP_W(20,NWAVEFUNCS)
918
COMMON/ML5_0_MP_W/MP_W
922
COMMON/ML5_0_CT/LSCALE,CTMODE
924
COMMON/ML5_0_I_LIB/LIBINDEX
930
C Determine it uses qp or not
931
DOING_QP = (CTMODE.GE.4)
933
IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED).OR.GOODAMP(SQUAREDSOIND
945
SQSOINDEX=SQUAREDSOINDEX
953
DO K=TEMP,(TEMP+PAIRING(J)-1)
954
PL(I,J)=PL(I,J)-DBLE(W(1+I,WE(K)))
956
MP_PL(I,J)=MP_PL(I,J)-REAL(MP_W(1+I,WE(K)),KIND=16)
962
C Determine whether the integral is with complex masses or not
963
C since some reduction libraries, e.g.PJFry++ and IREGI, are
965
C not able to deal with complex masses
968
IF(DIMAG(M2L(I)).EQ.0D0)CYCLE
969
IF(ABS(DIMAG(M2L(I)))/MAX(ABS(M2L(I)),1D-2).GT.1D-15)THEN
974
C Choose the correct loop library
975
CALL ML5_0_CHOOSE_LOOPLIB(LIBINDEX,NLOOPLINE,RANK,COMPLEX_MASS
976
$ ,ID,DOING_QP,I_LIB)
977
IF(MLREDUCTIONLIB(I_LIB).EQ.1)THEN
979
CALL ML5_0_CTLOOP(NLOOPLINE,PL,M2L,RANK,LOOPRES(1
980
$ ,SQUAREDSOINDEX,LOOPNUM),S(SQUAREDSOINDEX,LOOPNUM))
982
C Tensor Integral Reduction is used
983
CALL ML5_0_TIRLOOP(SQUAREDSOINDEX,LOOPNUM,I_LIB,NLOOPLINE,PL
984
$ ,M2L,RANK,LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)
985
$ ,S(SQUAREDSOINDEX,LOOPNUM))
988
LOOPRES(1,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
989
LOOPRES(2,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
990
LOOPRES(3,SQUAREDSOINDEX,LOOPNUM)=(0.0D0,0.0D0)
991
S(SQUAREDSOINDEX,LOOPNUM)=.TRUE.