~maddevelopers/mg5amcnlo/2.5.4_run_py8_at_evtgen

« back to all changes in this revision

Viewing changes to tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.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:
14
14
C     
15
15
C     Process: u u~ > u u~ [ virt = QCD ] @1
16
16
C     
 
17
C     Modules
 
18
C     
 
19
      USE MG5_1_POLYNOMIAL_CONSTANTS
 
20
C     
17
21
      IMPLICIT NONE
18
22
C     
19
23
C     USER CUSTOMIZABLE OPTIONS
52
56
      PARAMETER (NEXTERNAL=4)
53
57
      INTEGER    NWAVEFUNCS,NLOOPWAVEFUNCS
54
58
      PARAMETER (NWAVEFUNCS=8,NLOOPWAVEFUNCS=50)
55
 
      INTEGER MAXLWFSIZE
56
 
      PARAMETER (MAXLWFSIZE=4)
57
 
      INTEGER LOOPMAXCOEFS, VERTEXMAXCOEFS
58
 
      PARAMETER (LOOPMAXCOEFS=15, VERTEXMAXCOEFS=5)
59
59
      INTEGER    NCOMB
60
60
      PARAMETER (NCOMB=16)
61
61
      REAL*8     ZERO
75
75
      INTEGER NSQUAREDSOP1
76
76
      PARAMETER (NSQUAREDSOP1=NSQUAREDSO+1)
77
77
C     The total number of loop reduction libraries
78
 
C     At present, there are only CutTools,PJFry++,IREGI,Golem95
 
78
C     At present, there are only CutTools,PJFry++,IREGI,Golem95,Samurai
 
79
C      and Ninja
79
80
      INTEGER NLOOPLIB
80
 
      PARAMETER (NLOOPLIB=4)
81
 
C     Only CutTools provides QP
 
81
      PARAMETER (NLOOPLIB=6)
 
82
C     Only CutTools or possibly Ninja (if installed with qp support)
 
83
C      provide QP
82
84
      INTEGER QP_NLOOPLIB
83
 
      PARAMETER (QP_NLOOPLIB=1)
 
85
      PARAMETER (QP_NLOOPLIB=2)
84
86
      INTEGER MAXSTABILITYLENGTH
85
87
      DATA MAXSTABILITYLENGTH/20/
86
88
      COMMON/MG5_1_STABILITY_TESTS/MAXSTABILITYLENGTH
160
162
      REAL*8 BORNBUFF(0:NSQSO_BORN),TMPR
161
163
      REAL*8 BUFFR(3,0:NSQUAREDSO),BUFFR_BIS(3,0:NSQUAREDSO),TEMP(0:3
162
164
     $ ,0:NSQUAREDSO),TEMP1(0:NSQUAREDSO)
 
165
      COMPLEX*16 CTEMP
163
166
      REAL*8 TEMP2
164
167
      COMPLEX*16 COEFS(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
165
168
      COMPLEX*16 CFTOT
170
173
      DATA ((LOOPFILTERBUFF(J,I),J=1,NSQUAREDSO),I=1,NLOOPGROUPS)
171
174
     $ /NSQSOXNLG*.FALSE./
172
175
 
173
 
      LOGICAL AUTOMATIC_TIR_CACHE_CLEARING
174
 
      DATA AUTOMATIC_TIR_CACHE_CLEARING/.TRUE./
175
 
      COMMON/MG5_1_RUNTIME_OPTIONS/AUTOMATIC_TIR_CACHE_CLEARING
 
176
      LOGICAL AUTOMATIC_CACHE_CLEARING
 
177
      DATA AUTOMATIC_CACHE_CLEARING/.TRUE./
 
178
      COMMON/MG5_1_RUNTIME_OPTIONS/AUTOMATIC_CACHE_CLEARING
176
179
 
177
180
      INTEGER IDEN
178
181
      DATA IDEN/36/
202
205
C     
203
206
C     GLOBAL VARIABLES
204
207
C     
 
208
      INCLUDE 'process_info.inc'
205
209
      INCLUDE 'coupl.inc'
206
210
      INCLUDE 'mp_coupl.inc'
207
211
      INCLUDE 'MadLoopParams.inc'
231
235
      COMMON/MG5_1_MP_DONE/MP_DONE
232
236
C     A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE
233
237
C      AVAILABLE OR NOT
234
 
      LOGICAL LOOPLIBS_AVAILABLE(4)
235
 
      DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE./
 
238
      LOGICAL LOOPLIBS_AVAILABLE(6)
 
239
      DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE.
 
240
     $ ,.TRUE./
236
241
      COMMON/MG5_1_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE
237
242
C     A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS
238
243
C      AVAILABLE OR NOT IN THE LOOPLIBS
239
 
C     PJFry++ and Golem95 do not support direction test
240
 
      LOGICAL LOOPLIBS_DIRECTEST(4)
241
 
      DATA LOOPLIBS_DIRECTEST /.TRUE.,.TRUE.,.TRUE.,.TRUE./
242
 
 
 
244
      LOGICAL LOOPLIBS_DIRECTEST(6)
 
245
      DATA LOOPLIBS_DIRECTEST /.TRUE.,.TRUE.,.TRUE.,.TRUE.,.TRUE.
 
246
     $ ,.TRUE./
 
247
C     Specifying for which reduction tool quadruple precision is
 
248
C      available.
 
249
C     The index 0 is dummy and simply means that the corresponding
 
250
C      loop_library is not available
 
251
C     in which case neither is its quadruple precision version.
 
252
      LOGICAL LOOPLIBS_QPAVAILABLE(0:6)
 
253
      DATA LOOPLIBS_QPAVAILABLE /.FALSE.,.TRUE.,.FALSE.,.FALSE.
 
254
     $ ,.FALSE.,.FALSE.,.TRUE./
243
255
C     PS CAN POSSIBILY BE PASSED THROUGH IMPROVE_PS BUT IS NOT
244
256
C      MODIFIED FOR THE PURPOSE OF THE STABILITY TEST
245
257
C     EVEN THOUGH THEY ARE PUT IN COMMON BLOCK, FOR NOW THEY ARE NOT
304
316
      DATA CTCALL_REQ_SO_DONE/.FALSE./
305
317
      DATA FILTER_SO/.FALSE./
306
318
      COMMON/MG5_1_SO_REQS/UVCT_REQ_SO_DONE,MP_UVCT_REQ_SO_DONE
307
 
     $ ,CT_REQ_SO_DONE,MP_CT_REQ_SO_DONE,LOOP_REQ_SO_DONE,MP_LOOP_REQ_S
308
 
     $ O_DONE,CTCALL_REQ_SO_DONE,FILTER_SO
 
319
     $ ,CT_REQ_SO_DONE,MP_CT_REQ_SO_DONE,LOOP_REQ_SO_DONE
 
320
     $ ,MP_LOOP_REQ_SO_DONE,CTCALL_REQ_SO_DONE,FILTER_SO
309
321
 
310
322
C     Allows to forbid the zero helicity double check, no matter the
311
323
C      value in MadLoopParams.dat
334
346
      COMPLEX*32 MPW(20,NWAVEFUNCS)
335
347
      COMMON/MG5_1_MP_W/MPW
336
348
 
337
 
      COMPLEX*16 WL(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE,0:NLOOPWAVEF
338
 
     $ UNCS)
 
349
      COMPLEX*16 WL(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE
 
350
     $ ,0:NLOOPWAVEFUNCS)
339
351
      COMPLEX*16 PL(0:3,0:NLOOPWAVEFUNCS)
340
352
      COMMON/MG5_1_WL/WL,PL
341
353
 
388
400
 
389
401
C     This variable controls the *local* initialization of this
390
402
C      particular SubProcess.
391
 
C     For example, the reading of the filters must be done independentl
392
 
C     y by each SubProcess.
 
403
C     For example, the reading of the filters must be done
 
404
C      independently by each SubProcess.
393
405
      LOGICAL LOCAL_ML_INIT
394
406
      DATA LOCAL_ML_INIT/.TRUE./
395
407
 
 
408
      LOGICAL WARNED_LORENTZ_STAB_TEST_OFF
 
409
      DATA WARNED_LORENTZ_STAB_TEST_OFF/.FALSE./
 
410
      INTEGER NROTATIONS_DP_BU,NROTATIONS_QP_BU
 
411
 
 
412
      LOGICAL FPE_IN_DP_REDUCTION, FPE_IN_QP_REDUCTION
 
413
      DATA FPE_IN_DP_REDUCTION, FPE_IN_QP_REDUCTION/.FALSE.,.FALSE./
 
414
      COMMON/MG5_1_FPE_IN_REDUCTION/FPE_IN_DP_REDUCTION,
 
415
     $  FPE_IN_QP_REDUCTION
396
416
C     ----------
397
417
C     BEGIN CODE
398
418
C     ----------
409
429
        ENDIF
410
430
 
411
431
C       Make sure that NROTATIONS_QP and NROTATIONS_DP are set to zero
412
 
C        if AUTOMATIC_TIR_CACHE_CLEARING is disabled.
413
 
        IF(.NOT.AUTOMATIC_TIR_CACHE_CLEARING) THEN
 
432
C        if AUTOMATIC_CACHE_CLEARING is disabled.
 
433
        IF(.NOT.AUTOMATIC_CACHE_CLEARING) THEN
414
434
          IF(NROTATIONS_DP.NE.0.OR.NROTATIONS_QP.NE.0) THEN
415
 
            WRITE(*,*) '##INFO: AUTOMATIC_TIR_CACHE_CLEARING i'
416
 
     $       //'s disabled, so MadLoop automatically resets NROTATIONS'
417
 
     $       //'_DP and NROTATIONS_QP to 0.'
 
435
            WRITE(*,*) '##INFO: AUTOMATIC_CACHE_CLEARING is disabled,'
 
436
     $       //' so MadLoop automatically resets NROTATIONS_DP and'
 
437
     $       //' NROTATIONS_QP to 0.'
418
438
            NROTATIONS_QP=0
419
439
            NROTATIONS_DP=0
420
440
          ENDIF
421
441
        ENDIF
 
442
 
422
443
      ENDIF
423
444
 
424
445
      IF (LOCAL_ML_INIT) THEN
437
458
          ENDIF
438
459
        ENDDO
439
460
        IF(MLREDUCTIONLIB(1).EQ.0)THEN
440
 
          STOP 'No available loop reduction lib is provided. Make sur'
441
 
     $     //'e MLReductionLib is correct.'
 
461
          STOP 'No available loop reduction lib is provided. Make sure'
 
462
     $     //' MLReductionLib is correct.'
442
463
        ENDIF
443
464
        J=0
444
465
        DO I=1,NLOOPLIB
445
 
          IF(MLREDUCTIONLIB(I).EQ.1)THEN
 
466
          IF(LOOPLIBS_QPAVAILABLE(MLREDUCTIONLIB(I)))THEN
446
467
            J=J+1
447
 
            IF(.NOT.QP_TOOLS_AVAILABLE)QP_TOOLS_AVAILABLE=.TRUE.
 
468
            IF(.NOT.QP_TOOLS_AVAILABLE) THEN
 
469
              QP_TOOLS_AVAILABLE=.TRUE.
 
470
            ENDIF
448
471
            INDEX_QP_TOOLS(J)=I
449
472
          ENDIF
450
473
        ENDDO
460
483
 
461
484
        CALL MG5_1_SET_N_EVALS(N_DP_EVAL,N_QP_EVAL)
462
485
 
 
486
C       Make sure that the loop filter is disabled when there is
 
487
C        spin-2 particles for 2>1 or 1>2 processes
 
488
        IF(MAX_SPIN_EXTERNAL_PARTICLE.GT.3.AND.(NEXTERNAL.LE.3.AND.HELI
 
489
     $CITYFILTERLEVEL.NE.0)) THEN
 
490
          WRITE(*,*) '##INFO: Helicity filter deactivated for 2>1'
 
491
     $     //' processes involving spin 2 particles.'
 
492
          HELICITYFILTERLEVEL = 0
 
493
C         We write a dummy filter for structural reasons here
 
494
          OPEN(1, FILE=HELFILTERFN, ERR=6116, STATUS='NEW'
 
495
     $     ,ACTION='WRITE')
 
496
          DO I=1,NCOMB
 
497
            WRITE(1,*) 1
 
498
          ENDDO
 
499
 6116     CONTINUE
 
500
          CLOSE(1)
 
501
        ENDIF
 
502
 
463
503
        OPEN(1, FILE=COLORNUMFN, ERR=104, STATUS='OLD',          
464
504
     $    ACTION='READ')
465
505
        DO I=1,NCOLORROWS
467
507
        ENDDO
468
508
        GOTO 105
469
509
 104    CONTINUE
470
 
        STOP 'Color factors could not be initialized from fil'
471
 
     $   //'e MG5_1_ColorNumFactors.dat. File not found'
 
510
        STOP 'Color factors could not be initialized from file'
 
511
     $   //' MG5_1_ColorNumFactors.dat. File not found'
472
512
 105    CONTINUE
473
513
        CLOSE(1)
474
514
        OPEN(1, FILE=COLORDENOMFN, ERR=106, STATUS='OLD',          
478
518
        ENDDO
479
519
        GOTO 107
480
520
 106    CONTINUE
481
 
        STOP 'Color factors could not be initialized from fil'
482
 
     $   //'e MG5_1_ColorDenomFactors.dat. File not found'
 
521
        STOP 'Color factors could not be initialized from file'
 
522
     $   //' MG5_1_ColorDenomFactors.dat. File not found'
483
523
 107    CONTINUE
484
524
        CLOSE(1)
485
525
        OPEN(1, FILE=HELCONFIGFN, ERR=108, STATUS='OLD',              
489
529
        ENDDO
490
530
        GOTO 109
491
531
 108    CONTINUE
492
 
        STOP 'Color helictiy configurations could not be initialize'
493
 
     $   //'d from file MG5_1_HelConfigs.dat. File not found'
 
532
        STOP 'Color helictiy configurations could not be initialized'
 
533
     $   //' from file MG5_1_HelConfigs.dat. File not found'
494
534
 109    CONTINUE
495
535
        CLOSE(1)
496
536
 
497
537
C       SETUP OF THE COMMON STARTING EXTERNAL LOOP WAVEFUNCTION
498
538
C       IT IS ALSO PS POINT INDEPENDENT, SO IT CAN BE DONE HERE.
499
539
        DO I=0,3
500
 
          PL(I,0)=(0.0D0,0.0D0)
 
540
          PL(I,0)=DCMPLX(0.0D0,0.0D0)
501
541
        ENDDO
502
542
        DO I=1,MAXLWFSIZE
503
543
          DO J=0,LOOPMAXCOEFS-1
516
556
        ENDIF
517
557
      ENDIF
518
558
 
 
559
C     Make sure that lorentz rotation tests are not used if there is
 
560
C      external loop wavefunction of spin 2 and that one specific
 
561
C      helicity is asked
 
562
      NROTATIONS_DP_BU = NROTATIONS_DP
 
563
      NROTATIONS_QP_BU = NROTATIONS_QP
 
564
      IF(MAX_SPIN_EXTERNAL_PARTICLE.GT.3.AND.USERHEL.NE.-1) THEN
 
565
        IF(.NOT.WARNED_LORENTZ_STAB_TEST_OFF) THEN
 
566
          WRITE(*,*) '##WARNING: Evaluation of a specific helicity was'
 
567
     $     //' asked for this PS point, and there is a spin-2 (or'
 
568
     $     //' higher) particle in the external states.'
 
569
          WRITE(*,*) '##WARNING: As a result, MadLoop disabled the'
 
570
     $     //' Lorentz rotation test for this phase-space point only.'
 
571
          WRITE(*,*) '##WARNING: Further warning of that type'
 
572
     $     //' suppressed.'
 
573
          WARNED_LORENTZ_STAB_TEST_OFF = .TRUE.
 
574
        ENDIF
 
575
        NROTATIONS_QP=0
 
576
        NROTATIONS_DP=0
 
577
        CALL MG5_1_SET_N_EVALS(N_DP_EVAL,N_QP_EVAL)
 
578
      ENDIF
 
579
 
519
580
      IF(NTRY.EQ.0) THEN
520
 
        HELDOUBLECHECKED=(.NOT.DOUBLECHECKHELICITYFILTER).OR.(HELICITYF
521
 
     $   ILTERLEVEL.EQ.0)
 
581
        HELDOUBLECHECKED=(.NOT.DOUBLECHECKHELICITYFILTER)
 
582
     $   .OR.(HELICITYFILTERLEVEL.EQ.0)
522
583
        OPEN(1, FILE=LOOPFILTERFN, ERR=100, STATUS='OLD',          
523
584
     $    ACTION='READ')
524
585
        DO J=1,NLOOPGROUPS
556
617
 103    CONTINUE
557
618
        CLOSE(1)
558
619
        IF (HELICITYFILTERLEVEL.EQ.1) THEN
559
 
C         We must make sure to remove the matching-helicity optimisatio
560
 
C         n, as requested by the user.
 
620
C         We must make sure to remove the matching-helicity
 
621
C          optimisation, as requested by the user.
561
622
          DO J=1,NCOMB
562
623
            IF ((GOODHEL(J).GT.1).OR.(GOODHEL(J).LT.-HELOFFSET)) THEN
563
624
              GOODHEL(J)=1
626
687
        DONEHELDOUBLECHECK=.FALSE.
627
688
      ENDIF
628
689
 
629
 
      CHECKPHASE=(NTRY.LE.CHECKCYCLE).AND.(((.NOT.FOUNDLOOPFILTER
630
 
     $ ).AND.USELOOPFILTER).OR.(.NOT.FOUNDHELFILTER))
 
690
      CHECKPHASE=(NTRY.LE.CHECKCYCLE).AND.(((.NOT.FOUNDLOOPFILTER)
 
691
     $ .AND.USELOOPFILTER).OR.(.NOT.FOUNDHELFILTER))
631
692
 
632
693
      IF (WRITEOUTFILTERS) THEN
633
 
        IF ((HELICITYFILTERLEVEL.NE.0).AND.(.NOT. CHECKPHASE).AND.(.NOT
634
 
     $   .FOUNDHELFILTER)) THEN
635
 
          OPEN(1, FILE=HELFILTERFN, ERR=110, STATUS='NEW',ACTION='WRIT'
636
 
     $     //'E')
 
694
        IF ((HELICITYFILTERLEVEL.NE.0).AND.(.NOT. CHECKPHASE)
 
695
     $   .AND.(.NOT.FOUNDHELFILTER)) THEN
 
696
          OPEN(1, FILE=HELFILTERFN, ERR=110, STATUS='NEW'
 
697
     $     ,ACTION='WRITE')
637
698
          DO I=1,NCOMB
638
699
            WRITE(1,*) GOODHEL(I)
639
700
          ENDDO
642
703
          FOUNDHELFILTER=.TRUE.
643
704
        ENDIF
644
705
 
645
 
        IF ((.NOT. CHECKPHASE).AND.(.NOT.FOUNDLOOPFILTER).AND.USELOOPFI
646
 
     $   LTER) THEN
647
 
          OPEN(1, FILE=LOOPFILTERFN, ERR=111, STATUS='NEW',ACTION='WRI'
648
 
     $     //'TE')
 
706
        IF ((.NOT. CHECKPHASE).AND.(.NOT.FOUNDLOOPFILTER)
 
707
     $   .AND.USELOOPFILTER) THEN
 
708
          OPEN(1, FILE=LOOPFILTERFN, ERR=111, STATUS='NEW'
 
709
     $     ,ACTION='WRITE')
649
710
          DO J=1,NLOOPGROUPS
650
711
            WRITE(1,*) (GOODAMP(I,J),I=1,NSQUAREDSO)
651
712
          ENDDO
700
761
        ENDDO
701
762
      ENDDO
702
763
 
 
764
C     Make sure we start with empty caches
 
765
      IF (AUTOMATIC_CACHE_CLEARING) THEN
 
766
        CALL MG5_1_CLEAR_CACHES()
 
767
      ENDIF
703
768
 
704
769
      IF (IMPROVEPSPOINT.GE.0) THEN
705
 
C       Make the input PS more precise (exact onshell and energy-moment
706
 
C       um conservation)
 
770
C       Make the input PS more precise (exact onshell and
 
771
C        energy-momentum conservation)
707
772
        CALL MG5_1_IMPROVE_PS_POINT_PRECISION(PS)
708
773
      ENDIF
709
774
 
732
797
C      recomputes a rotated PS point
733
798
 200  CONTINUE
734
799
C     For the computation of a rotated version of this PS point we
735
 
C      must reset the TIR cache since this changes the definition of
736
 
C      the loop denominators.
737
 
      CALL MG5_1_CLEAR_TIR_CACHE()
 
800
C      must reset the all MadLoop cache since this changes the
 
801
C      definition of the loop denominators.
 
802
C     We don't check for AUTOMATIC_CACHE_CLEARING here because the
 
803
C      Lorentz test should anyway be disabled if the flag is turned
 
804
C      off.
 
805
      CALL MG5_1_CLEAR_CACHES()
738
806
 208  CONTINUE
739
807
 
740
808
C     MadLoop jumps to this label during initialization when it goes
751
819
 
752
820
      CTCALL_REQ_SO_DONE=.FALSE.
753
821
      FILTER_SO = (.NOT.CHECKPHASE).AND.HELDOUBLECHECKED.AND.(SQSO_TARG
754
 
     $ ET.NE.-1)
 
822
     $ET.NE.-1)
755
823
 
756
824
      DO I=1,NLOOPGROUPS
757
825
        DO J=0,LOOPMAXCOEFS-1
791
859
 
792
860
      DO H=1,NCOMB
793
861
        IF ((HELPICKED.EQ.H).OR.((HELPICKED.EQ.-1).AND.(CHECKPHASE.OR.(
794
 
     $   .NOT.HELDOUBLECHECKED).OR.(GOODHEL(H).GT.-HELOFFSET.AND.GOODHE
795
 
     $   L(H).NE.0)))) THEN
 
862
     $.NOT.HELDOUBLECHECKED).OR.(GOODHEL(H).GT.-HELOFFSET.AND.GOODHEL(H)
 
863
     $   .NE.0)))) THEN
796
864
          DO I=1,NEXTERNAL
797
865
            NHEL(I)=HELC(I,H)
798
866
          ENDDO
801
869
          CT_REQ_SO_DONE=.FALSE.
802
870
          LOOP_REQ_SO_DONE=.FALSE.
803
871
 
804
 
          IF (.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.HELPICKED.EQ.
805
 
     $     -1) THEN
 
872
          IF (.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.HELPICKED.EQ.-1)
 
873
     $      THEN
806
874
            HEL_MULT=GOODHEL(H)
807
875
          ELSE
808
876
            HEL_MULT=1
811
879
 
812
880
C         Helas calls for the born amplitudes and counterterms
813
881
C          associated to given loops
814
 
          CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1))
815
 
          CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2))
816
 
          CALL OXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3))
817
 
          CALL IXXXXX(P(0,4),ZERO,NHEL(4),-1*IC(4),W(1,4))
818
 
          CALL FFV1P0_3(W(1,1),W(1,2),GC_5,ZERO,ZERO,W(1,5))
819
 
C         Amplitude(s) for born diagram with ID 1
820
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),GC_5,AMP(1))
821
 
          CALL FFV1P0_3(W(1,1),W(1,3),GC_5,ZERO,ZERO,W(1,6))
822
 
C         Amplitude(s) for born diagram with ID 2
823
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),GC_5,AMP(2))
824
 
          CALL FFV1P0_3(W(1,4),W(1,3),GC_5,ZERO,ZERO,W(1,7))
825
 
C         Counter-term amplitude(s) for loop diagram number 3
826
 
          CALL R2_GG_1_0(W(1,5),W(1,7),R2_GGQ,AMPL(1,1))
827
 
          CALL R2_GG_1_0(W(1,5),W(1,7),R2_GGQ,AMPL(1,2))
828
 
          CALL R2_GG_1_0(W(1,5),W(1,7),R2_GGQ,AMPL(1,3))
829
 
          CALL R2_GG_1_0(W(1,5),W(1,7),R2_GGQ,AMPL(1,4))
830
 
          CALL FFV1P0_3(W(1,4),W(1,2),GC_5,ZERO,ZERO,W(1,8))
831
 
C         Counter-term amplitude(s) for loop diagram number 4
832
 
          CALL R2_GG_1_0(W(1,6),W(1,8),R2_GGQ,AMPL(1,5))
833
 
          CALL R2_GG_1_0(W(1,6),W(1,8),R2_GGQ,AMPL(1,6))
834
 
          CALL R2_GG_1_0(W(1,6),W(1,8),R2_GGQ,AMPL(1,7))
835
 
          CALL R2_GG_1_0(W(1,6),W(1,8),R2_GGQ,AMPL(1,8))
836
 
C         Counter-term amplitude(s) for loop diagram number 5
837
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),UV_GQQQ_1EPS,AMPL(2,9))
838
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),UV_GQQQ_1EPS,AMPL(2,10))
839
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),UV_GQQQ_1EPS,AMPL(2,11))
840
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),UV_GQQQ_1EPS,AMPL(2,12))
841
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),UV_GQQB,AMPL(1,13))
842
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),UV_GQQQ_1EPS,AMPL(2,14))
843
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),UV_GQQT,AMPL(1,15))
844
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),UV_GQQQ_1EPS,AMPL(2,16))
845
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),UV_GQQG_1EPS,AMPL(2,17))
846
 
          CALL FFV1_0(W(1,4),W(1,3),W(1,5),R2_GQQ,AMPL(1,18))
847
 
C         Counter-term amplitude(s) for loop diagram number 7
848
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),UV_GQQQ_1EPS,AMPL(2,19))
849
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),UV_GQQQ_1EPS,AMPL(2,20))
850
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),UV_GQQQ_1EPS,AMPL(2,21))
851
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),UV_GQQQ_1EPS,AMPL(2,22))
852
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),UV_GQQB,AMPL(1,23))
853
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),UV_GQQQ_1EPS,AMPL(2,24))
854
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),UV_GQQT,AMPL(1,25))
855
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),UV_GQQQ_1EPS,AMPL(2,26))
856
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),UV_GQQG_1EPS,AMPL(2,27))
857
 
          CALL FFV1_0(W(1,4),W(1,2),W(1,6),R2_GQQ,AMPL(1,28))
858
 
C         Counter-term amplitude(s) for loop diagram number 9
859
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),UV_GQQQ_1EPS,AMPL(2,29))
860
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),UV_GQQQ_1EPS,AMPL(2,30))
861
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),UV_GQQQ_1EPS,AMPL(2,31))
862
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),UV_GQQQ_1EPS,AMPL(2,32))
863
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),UV_GQQB,AMPL(1,33))
864
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),UV_GQQQ_1EPS,AMPL(2,34))
865
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),UV_GQQT,AMPL(1,35))
866
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),UV_GQQQ_1EPS,AMPL(2,36))
867
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),UV_GQQG_1EPS,AMPL(2,37))
868
 
          CALL FFV1_0(W(1,1),W(1,3),W(1,8),R2_GQQ,AMPL(1,38))
869
 
C         Counter-term amplitude(s) for loop diagram number 13
870
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),UV_GQQQ_1EPS,AMPL(2,39))
871
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),UV_GQQQ_1EPS,AMPL(2,40))
872
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),UV_GQQQ_1EPS,AMPL(2,41))
873
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),UV_GQQQ_1EPS,AMPL(2,42))
874
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),UV_GQQB,AMPL(1,43))
875
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),UV_GQQQ_1EPS,AMPL(2,44))
876
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),UV_GQQT,AMPL(1,45))
877
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),UV_GQQQ_1EPS,AMPL(2,46))
878
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),UV_GQQG_1EPS,AMPL(2,47))
879
 
          CALL FFV1_0(W(1,1),W(1,2),W(1,7),R2_GQQ,AMPL(1,48))
880
 
C         Counter-term amplitude(s) for loop diagram number 17
881
 
          CALL R2_GG_1_R2_GG_3_0(W(1,5),W(1,7),R2_GGQ,R2_GGB,AMPL(1
882
 
     $     ,49))
883
 
C         Counter-term amplitude(s) for loop diagram number 18
884
 
          CALL R2_GG_1_R2_GG_3_0(W(1,6),W(1,8),R2_GGQ,R2_GGB,AMPL(1
885
 
     $     ,50))
886
 
C         Counter-term amplitude(s) for loop diagram number 19
887
 
          CALL R2_GG_1_R2_GG_3_0(W(1,5),W(1,7),R2_GGQ,R2_GGT,AMPL(1
888
 
     $     ,51))
889
 
C         Counter-term amplitude(s) for loop diagram number 20
890
 
          CALL R2_GG_1_R2_GG_3_0(W(1,6),W(1,8),R2_GGQ,R2_GGT,AMPL(1
891
 
     $     ,52))
892
 
C         Counter-term amplitude(s) for loop diagram number 21
893
 
          CALL R2_GG_1_R2_GG_2_0(W(1,5),W(1,7),R2_GGG_1,R2_GGG_2
894
 
     $     ,AMPL(1,53))
895
 
C         Counter-term amplitude(s) for loop diagram number 22
896
 
          CALL R2_GG_1_R2_GG_2_0(W(1,6),W(1,8),R2_GGG_1,R2_GGG_2
897
 
     $     ,AMPL(1,54))
898
 
C         At this point, all CT amps needed for (QCD=6), i.e. of split
899
 
C          order ID=1, are computed.
900
 
          IF(FILTER_SO.AND.SQSO_TARGET.EQ.1) GOTO 2000
 
882
          CALL MG5_1_HELAS_CALLS_AMPB_1(P,NHEL,H,IC)
901
883
 2000     CONTINUE
902
884
          CT_REQ_SO_DONE=.TRUE.
903
885
 
911
893
 3000     CONTINUE
912
894
          UVCT_REQ_SO_DONE=.TRUE.
913
895
 
914
 
          DO I=1,NCTAMPS
915
 
            DO J=1,NBORNAMPS
 
896
          DO J=1,NBORNAMPS
 
897
            CTEMP = 2.0D0*HEL_MULT*DCONJG(AMP(J))
 
898
            DO I=1,NCTAMPS
916
899
              CFTOT=DCMPLX(CF_N(I,J)/DBLE(ABS(CF_D(I,J))),0.0D0)
917
900
              IF(CF_D(I,J).LT.0) CFTOT=CFTOT*IMAG1
918
901
              ITEMP = MG5_1_ML5SQSOINDEX(MG5_1_ML5SOINDEX_FOR_LOOP_AMP(
919
 
     $         I),MG5_1_ML5SOINDEX_FOR_BORN_AMP(J))
 
902
     $I),MG5_1_ML5SOINDEX_FOR_BORN_AMP(J))
920
903
              IF (.NOT.FILTER_SO.OR.SQSO_TARGET.EQ.ITEMP) THEN
921
904
                DO K=1,3
922
 
                  TEMP2 = 2.0D0*HEL_MULT*DBLE(CFTOT*AMPL(K,I)
923
 
     $             *DCONJG(AMP(J)))
 
905
                  TEMP2 = DBLE(CFTOT*AMPL(K,I)*CTEMP)
924
906
                  ANS(K,ITEMP)=ANS(K,ITEMP)+TEMP2
925
907
                  ANS(K,0)=ANS(K,0)+TEMP2
926
908
                ENDDO
928
910
            ENDDO
929
911
          ENDDO
930
912
 
931
 
C         Coefficient construction for loop diagram with ID 3
932
 
          CALL FFV1L2_1(PL(0,0),W(1,5),GC_5,ZERO,ZERO,PL(0,1),COEFS)
933
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1,1))
934
 
          CALL FFV1L2_1(PL(0,1),W(1,7),GC_5,ZERO,ZERO,PL(0,2),COEFS)
935
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,1),4,COEFS,4,4,WL(1,0,1,2))
936
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,2),2,4,1,1,4,55,H)
937
 
C         Coefficient construction for loop diagram with ID 4
938
 
          CALL FFV1L2_1(PL(0,0),W(1,6),GC_5,ZERO,ZERO,PL(0,3),COEFS)
939
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1,3))
940
 
          CALL FFV1L2_1(PL(0,3),W(1,8),GC_5,ZERO,ZERO,PL(0,4),COEFS)
941
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,3),4,COEFS,4,4,WL(1,0,1,4))
942
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,4),2,4,2,1,4,56,H)
943
 
C         Coefficient construction for loop diagram with ID 5
944
 
          CALL FFV1L1P0_3(PL(0,0),W(1,3),GC_5,ZERO,ZERO,PL(0,5),COEFS)
945
 
          CALL MG5_1_UPDATE_WL_0_0(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1,5))
946
 
          CALL FFV1L3_2(PL(0,5),W(1,4),GC_5,ZERO,ZERO,PL(0,6),COEFS)
947
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,5),4,COEFS,4,4,WL(1,0,1,6))
948
 
          CALL FFV1L1_2(PL(0,6),W(1,5),GC_5,ZERO,ZERO,PL(0,7),COEFS)
949
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,6),4,COEFS,4,4,WL(1,0,1,7))
950
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,7),2,4,3,1,1,57,H)
951
 
C         Coefficient construction for loop diagram with ID 6
952
 
          CALL FFV1L3_1(PL(0,0),W(1,3),GC_5,ZERO,ZERO,PL(0,8),COEFS)
953
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1,8))
954
 
          CALL FFV1L2P0_3(PL(0,8),W(1,4),GC_5,ZERO,ZERO,PL(0,9),COEFS)
955
 
          CALL MG5_1_UPDATE_WL_1_0(WL(1,0,1,8),4,COEFS,4,4,WL(1,0,1,9))
956
 
          CALL VVV1L2P0_1(PL(0,9),W(1,5),GC_4,ZERO,ZERO,PL(0,10),COEFS)
957
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,9),4,COEFS,4,4,WL(1,0,1
958
 
     $     ,10))
959
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,10),2,4,3,1,1,58,H)
960
 
C         Coefficient construction for loop diagram with ID 7
961
 
          CALL FFV1L1P0_3(PL(0,0),W(1,2),GC_5,ZERO,ZERO,PL(0,11),COEFS)
962
 
          CALL MG5_1_UPDATE_WL_0_0(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
963
 
     $     ,11))
964
 
          CALL FFV1L3_2(PL(0,11),W(1,4),GC_5,ZERO,ZERO,PL(0,12),COEFS)
965
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,11),4,COEFS,4,4,WL(1,0,1
966
 
     $     ,12))
967
 
          CALL FFV1L1_2(PL(0,12),W(1,6),GC_5,ZERO,ZERO,PL(0,13),COEFS)
968
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,12),4,COEFS,4,4,WL(1,0,1
969
 
     $     ,13))
970
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,13),2,4,4,1,1,59,H)
971
 
C         Coefficient construction for loop diagram with ID 8
972
 
          CALL FFV1L3_1(PL(0,0),W(1,2),GC_5,ZERO,ZERO,PL(0,14),COEFS)
973
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
974
 
     $     ,14))
975
 
          CALL FFV1L2P0_3(PL(0,14),W(1,4),GC_5,ZERO,ZERO,PL(0,15)
976
 
     $     ,COEFS)
977
 
          CALL MG5_1_UPDATE_WL_1_0(WL(1,0,1,14),4,COEFS,4,4,WL(1,0,1
978
 
     $     ,15))
979
 
          CALL VVV1L2P0_1(PL(0,15),W(1,6),GC_4,ZERO,ZERO,PL(0,16)
980
 
     $     ,COEFS)
981
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,15),4,COEFS,4,4,WL(1,0,1
982
 
     $     ,16))
983
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,16),2,4,4,1,1,60,H)
984
 
C         Coefficient construction for loop diagram with ID 9
985
 
          CALL FFV1L2P0_3(PL(0,0),W(1,1),GC_5,ZERO,ZERO,PL(0,17),COEFS)
986
 
          CALL MG5_1_UPDATE_WL_0_0(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
987
 
     $     ,17))
988
 
          CALL FFV1L3_1(PL(0,17),W(1,3),GC_5,ZERO,ZERO,PL(0,18),COEFS)
989
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,17),4,COEFS,4,4,WL(1,0,1
990
 
     $     ,18))
991
 
          CALL FFV1L2_1(PL(0,18),W(1,8),GC_5,ZERO,ZERO,PL(0,19),COEFS)
992
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,18),4,COEFS,4,4,WL(1,0,1
993
 
     $     ,19))
994
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,19),2,4,5,1,1,61,H)
995
 
C         Coefficient construction for loop diagram with ID 10
996
 
          CALL FFV1L3_2(PL(0,0),W(1,1),GC_5,ZERO,ZERO,PL(0,20),COEFS)
997
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
998
 
     $     ,20))
999
 
          CALL FFV1L1P0_3(PL(0,20),W(1,3),GC_5,ZERO,ZERO,PL(0,21)
1000
 
     $     ,COEFS)
1001
 
          CALL MG5_1_UPDATE_WL_1_0(WL(1,0,1,20),4,COEFS,4,4,WL(1,0,1
1002
 
     $     ,21))
1003
 
          CALL VVV1L2P0_1(PL(0,21),W(1,8),GC_4,ZERO,ZERO,PL(0,22)
1004
 
     $     ,COEFS)
1005
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,21),4,COEFS,4,4,WL(1,0,1
1006
 
     $     ,22))
1007
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,22),2,4,5,1,1,62,H)
1008
 
C         Coefficient construction for loop diagram with ID 11
1009
 
          CALL FFV1L1P0_3(PL(0,20),W(1,2),GC_5,ZERO,ZERO,PL(0,23)
1010
 
     $     ,COEFS)
1011
 
          CALL MG5_1_UPDATE_WL_1_0(WL(1,0,1,20),4,COEFS,4,4,WL(1,0,1
1012
 
     $     ,23))
1013
 
          CALL FFV1L3_2(PL(0,23),W(1,4),GC_5,ZERO,ZERO,PL(0,24),COEFS)
1014
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,23),4,COEFS,4,4,WL(1,0,1
1015
 
     $     ,24))
1016
 
          CALL FFV1L1P0_3(PL(0,24),W(1,3),GC_5,ZERO,ZERO,PL(0,25)
1017
 
     $     ,COEFS)
1018
 
          CALL MG5_1_UPDATE_WL_2_0(WL(1,0,1,24),4,COEFS,4,4,WL(1,0,1
1019
 
     $     ,25))
1020
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,25),2,4,6,1,1,63,H)
1021
 
C         Coefficient construction for loop diagram with ID 12
1022
 
          CALL FFV1L3_1(PL(0,23),W(1,3),GC_5,ZERO,ZERO,PL(0,26),COEFS)
1023
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,23),4,COEFS,4,4,WL(1,0,1
1024
 
     $     ,26))
1025
 
          CALL FFV1L2P0_3(PL(0,26),W(1,4),GC_5,ZERO,ZERO,PL(0,27)
1026
 
     $     ,COEFS)
1027
 
          CALL MG5_1_UPDATE_WL_2_0(WL(1,0,1,26),4,COEFS,4,4,WL(1,0,1
1028
 
     $     ,27))
1029
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,27),2,4,7,1,1,64,H)
1030
 
C         Coefficient construction for loop diagram with ID 13
1031
 
          CALL VVV1L2P0_1(PL(0,23),W(1,7),GC_4,ZERO,ZERO,PL(0,28)
1032
 
     $     ,COEFS)
1033
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,23),4,COEFS,4,4,WL(1,0,1
1034
 
     $     ,28))
1035
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,28),2,4,8,1,1,65,H)
1036
 
C         Coefficient construction for loop diagram with ID 14
1037
 
          CALL FFV1L3_1(PL(0,17),W(1,2),GC_5,ZERO,ZERO,PL(0,29),COEFS)
1038
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,17),4,COEFS,4,4,WL(1,0,1
1039
 
     $     ,29))
1040
 
          CALL FFV1L2_1(PL(0,29),W(1,7),GC_5,ZERO,ZERO,PL(0,30),COEFS)
1041
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,29),4,COEFS,4,4,WL(1,0,1
1042
 
     $     ,30))
1043
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,30),2,4,8,1,1,66,H)
1044
 
C         Coefficient construction for loop diagram with ID 15
1045
 
          CALL FFV1L2P0_3(PL(0,29),W(1,4),GC_5,ZERO,ZERO,PL(0,31)
1046
 
     $     ,COEFS)
1047
 
          CALL MG5_1_UPDATE_WL_1_0(WL(1,0,1,29),4,COEFS,4,4,WL(1,0,1
1048
 
     $     ,31))
1049
 
          CALL FFV1L3_1(PL(0,31),W(1,3),GC_5,ZERO,ZERO,PL(0,32),COEFS)
1050
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,31),4,COEFS,4,4,WL(1,0,1
1051
 
     $     ,32))
1052
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,32),2,4,6,1,1,67,H)
1053
 
C         Coefficient construction for loop diagram with ID 16
1054
 
          CALL FFV1L3_1(PL(0,21),W(1,2),GC_5,ZERO,ZERO,PL(0,33),COEFS)
1055
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,21),4,COEFS,4,4,WL(1,0,1
1056
 
     $     ,33))
1057
 
          CALL FFV1L2P0_3(PL(0,33),W(1,4),GC_5,ZERO,ZERO,PL(0,34)
1058
 
     $     ,COEFS)
1059
 
          CALL MG5_1_UPDATE_WL_2_0(WL(1,0,1,33),4,COEFS,4,4,WL(1,0,1
1060
 
     $     ,34))
1061
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,34),2,4,9,1,1,68,H)
1062
 
C         Coefficient construction for loop diagram with ID 17
1063
 
          CALL FFV1L2_1(PL(0,0),W(1,5),GC_5,MDL_MB,ZERO,PL(0,35),COEFS)
1064
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
1065
 
     $     ,35))
1066
 
          CALL FFV1L2_1(PL(0,35),W(1,7),GC_5,MDL_MB,ZERO,PL(0,36)
1067
 
     $     ,COEFS)
1068
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,35),4,COEFS,4,4,WL(1,0,1
1069
 
     $     ,36))
1070
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,36),2,4,10,1,1,69,H)
1071
 
C         Coefficient construction for loop diagram with ID 18
1072
 
          CALL FFV1L2_1(PL(0,0),W(1,6),GC_5,MDL_MB,ZERO,PL(0,37),COEFS)
1073
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
1074
 
     $     ,37))
1075
 
          CALL FFV1L2_1(PL(0,37),W(1,8),GC_5,MDL_MB,ZERO,PL(0,38)
1076
 
     $     ,COEFS)
1077
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,37),4,COEFS,4,4,WL(1,0,1
1078
 
     $     ,38))
1079
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,38),2,4,11,1,1,70,H)
1080
 
C         Coefficient construction for loop diagram with ID 19
1081
 
          CALL FFV1L2_1(PL(0,0),W(1,5),GC_5,MDL_MT,MDL_WT,PL(0,39)
1082
 
     $     ,COEFS)
1083
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
1084
 
     $     ,39))
1085
 
          CALL FFV1L2_1(PL(0,39),W(1,7),GC_5,MDL_MT,MDL_WT,PL(0,40)
1086
 
     $     ,COEFS)
1087
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,39),4,COEFS,4,4,WL(1,0,1
1088
 
     $     ,40))
1089
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,40),2,4,12,1,1,71,H)
1090
 
C         Coefficient construction for loop diagram with ID 20
1091
 
          CALL FFV1L2_1(PL(0,0),W(1,6),GC_5,MDL_MT,MDL_WT,PL(0,41)
1092
 
     $     ,COEFS)
1093
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
1094
 
     $     ,41))
1095
 
          CALL FFV1L2_1(PL(0,41),W(1,8),GC_5,MDL_MT,MDL_WT,PL(0,42)
1096
 
     $     ,COEFS)
1097
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,41),4,COEFS,4,4,WL(1,0,1
1098
 
     $     ,42))
1099
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,42),2,4,13,1,1,72,H)
1100
 
C         Coefficient construction for loop diagram with ID 21
1101
 
          CALL VVV1L2P0_1(PL(0,0),W(1,5),GC_4,ZERO,ZERO,PL(0,43),COEFS)
1102
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
1103
 
     $     ,43))
1104
 
          CALL VVV1L2P0_1(PL(0,43),W(1,7),GC_4,ZERO,ZERO,PL(0,44)
1105
 
     $     ,COEFS)
1106
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,43),4,COEFS,4,4,WL(1,0,1
1107
 
     $     ,44))
1108
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,44),2,4,1,2,1,73,H)
1109
 
C         Coefficient construction for loop diagram with ID 22
1110
 
          CALL VVV1L2P0_1(PL(0,0),W(1,6),GC_4,ZERO,ZERO,PL(0,45),COEFS)
1111
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),4,COEFS,4,4,WL(1,0,1
1112
 
     $     ,45))
1113
 
          CALL VVV1L2P0_1(PL(0,45),W(1,8),GC_4,ZERO,ZERO,PL(0,46)
1114
 
     $     ,COEFS)
1115
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,45),4,COEFS,4,4,WL(1,0,1
1116
 
     $     ,46))
1117
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,46),2,4,2,2,1,74,H)
1118
 
C         Coefficient construction for loop diagram with ID 23
1119
 
          CALL GHGHGL2_1(PL(0,0),W(1,5),GC_4,ZERO,ZERO,PL(0,47),COEFS)
1120
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),1,COEFS,1,1,WL(1,0,1
1121
 
     $     ,47))
1122
 
          CALL GHGHGL2_1(PL(0,47),W(1,7),GC_4,ZERO,ZERO,PL(0,48),COEFS)
1123
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,47),1,COEFS,1,1,WL(1,0,1
1124
 
     $     ,48))
1125
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,48),2,1,1,1,1,75,H)
1126
 
C         Coefficient construction for loop diagram with ID 24
1127
 
          CALL GHGHGL2_1(PL(0,0),W(1,6),GC_4,ZERO,ZERO,PL(0,49),COEFS)
1128
 
          CALL MG5_1_UPDATE_WL_0_1(WL(1,0,1,0),1,COEFS,1,1,WL(1,0,1
1129
 
     $     ,49))
1130
 
          CALL GHGHGL2_1(PL(0,49),W(1,8),GC_4,ZERO,ZERO,PL(0,50),COEFS)
1131
 
          CALL MG5_1_UPDATE_WL_1_1(WL(1,0,1,49),1,COEFS,1,1,WL(1,0,1
1132
 
     $     ,50))
1133
 
          CALL MG5_1_CREATE_LOOP_COEFS(WL(1,0,1,50),2,1,2,1,1,76,H)
1134
 
C         At this point, all loop coefficients needed for (QCD=6),
1135
 
C          i.e. of split order ID=1, are computed.
1136
 
          IF(FILTER_SO.AND.SQSO_TARGET.EQ.1) GOTO 4000
 
913
          CALL MG5_1_COEF_CONSTRUCTION_1(P,NHEL,H,IC)
1137
914
 4000     CONTINUE
1138
915
          LOOP_REQ_SO_DONE=.TRUE.
1139
916
 
1156
933
C      recomputes the same PS point with a different CTMode
1157
934
 300  CONTINUE
1158
935
 
 
936
C     Make sure that the loop calls are performed since this is new
 
937
C      evaluation.
 
938
      CTCALL_REQ_SO_DONE=.FALSE.
 
939
 
1159
940
C     Free cache when using IREGI
1160
941
      IF(IREGIRECY.AND.MLREDUCTIONLIB(I_LIB).EQ.3) THEN
1161
942
        CALL IREGI_FREE_PS()
1179
960
          S(I_SO,J)=.TRUE.
1180
961
        ENDDO
1181
962
        IF (FILTER_SO.AND.SQSO_TARGET.NE.I_SO) GOTO 5001
1182
 
C       CutTools call for loop numbers 1,19,21
1183
 
        CALL MG5_1_LOOP_2(5,7,DCMPLX(ZERO),DCMPLX(ZERO),2,I_SO,1)
1184
 
C       CutTools call for loop numbers 2,20,22
1185
 
        CALL MG5_1_LOOP_2(6,8,DCMPLX(ZERO),DCMPLX(ZERO),2,I_SO,2)
1186
 
C       CutTools call for loop numbers 3,4
1187
 
        CALL MG5_1_LOOP_3(3,4,5,DCMPLX(ZERO),DCMPLX(ZERO),DCMPLX(ZERO)
1188
 
     $   ,2,I_SO,3)
1189
 
C       CutTools call for loop numbers 5,6
1190
 
        CALL MG5_1_LOOP_3(2,4,6,DCMPLX(ZERO),DCMPLX(ZERO),DCMPLX(ZERO)
1191
 
     $   ,2,I_SO,4)
1192
 
C       CutTools call for loop numbers 7,8
1193
 
        CALL MG5_1_LOOP_3(1,3,8,DCMPLX(ZERO),DCMPLX(ZERO),DCMPLX(ZERO)
1194
 
     $   ,2,I_SO,5)
1195
 
C       CutTools call for loop numbers 9,13
1196
 
        CALL MG5_1_LOOP_4(1,2,4,3,DCMPLX(ZERO),DCMPLX(ZERO),DCMPLX(ZERO
1197
 
     $   ),DCMPLX(ZERO),2,I_SO,6)
1198
 
C       CutTools call for loop numbers 10
1199
 
        CALL MG5_1_LOOP_4(1,2,3,4,DCMPLX(ZERO),DCMPLX(ZERO),DCMPLX(ZERO
1200
 
     $   ),DCMPLX(ZERO),2,I_SO,7)
1201
 
C       CutTools call for loop numbers 11,12
1202
 
        CALL MG5_1_LOOP_3(1,2,7,DCMPLX(ZERO),DCMPLX(ZERO),DCMPLX(ZERO)
1203
 
     $   ,2,I_SO,8)
1204
 
C       CutTools call for loop numbers 14
1205
 
        CALL MG5_1_LOOP_4(1,3,2,4,DCMPLX(ZERO),DCMPLX(ZERO),DCMPLX(ZERO
1206
 
     $   ),DCMPLX(ZERO),2,I_SO,9)
1207
 
C       CutTools call for loop numbers 15
1208
 
        CALL MG5_1_LOOP_2(5,7,DCMPLX(MDL_MB),DCMPLX(MDL_MB),2,I_SO,10)
1209
 
C       CutTools call for loop numbers 16
1210
 
        CALL MG5_1_LOOP_2(6,8,DCMPLX(MDL_MB),DCMPLX(MDL_MB),2,I_SO,11)
1211
 
C       CutTools call for loop numbers 17
1212
 
        CALL MG5_1_LOOP_2(5,7,DCMPLX(MDL_MT),DCMPLX(MDL_MT),2,I_SO,12)
1213
 
C       CutTools call for loop numbers 18
1214
 
        CALL MG5_1_LOOP_2(6,8,DCMPLX(MDL_MT),DCMPLX(MDL_MT),2,I_SO,13)
1215
 
C       At this point, all reductions needed for (QCD=6), i.e. of
1216
 
C        split order ID=1, are computed.
1217
 
        IF(FILTER_SO.AND.SQSO_TARGET.EQ.1) GOTO 5000
 
963
        CALL MG5_1_LOOP_CT_CALLS_1(P,NHEL,H,IC)
1218
964
        GOTO 5001
1219
965
 5000   CONTINUE
1220
966
        CTCALL_REQ_SO_DONE=.TRUE.
1237
983
        ENDIF
1238
984
      ENDDO
1239
985
 
 
986
C     Make sure that no NaN is present in the result
 
987
      DO K=1,NSQUAREDSO
 
988
        DO J=1,3
 
989
          IF (.NOT.(ANS(J,K).EQ.ANS(J,K))) THEN
 
990
            IF (DOING_QP_EVALS) THEN
 
991
              FPE_IN_QP_REDUCTION = .TRUE.
 
992
            ELSE
 
993
              FPE_IN_DP_REDUCTION = .TRUE.
 
994
            ENDIF
 
995
          ENDIF
 
996
        ENDDO
 
997
      ENDDO
 
998
 
1240
999
 1226 CONTINUE
1241
1000
 
1242
1001
      IF (CHECKPHASE.OR.(.NOT.HELDOUBLECHECKED)) THEN
1266
1025
C         SET THE HELICITY FILTER
1267
1026
          IF(.NOT.FOUNDHELFILTER) THEN
1268
1027
            HEL_INCONSISTENT=.FALSE.
1269
 
            IF(MG5_1_ISZERO(DABS(HELSAVED(1,HELPICKED))+DABS(HELSAVED(2
1270
 
     $       ,HELPICKED))+DABS(HELSAVED(3,HELPICKED)),REF/DBLE(NCOMB),
1271
 
     $       -1,-1)) THEN
 
1028
            IF(MG5_1_ISZERO(DABS(HELSAVED(1,HELPICKED))
 
1029
     $       +DABS(HELSAVED(2,HELPICKED))+DABS(HELSAVED(3,HELPICKED))
 
1030
     $       ,REF/DBLE(NCOMB),-1,-1)) THEN
1272
1031
              IF(NTRY.EQ.1) THEN
1273
1032
                GOODHEL(HELPICKED)=-HELOFFSET
1274
1033
              ELSEIF(GOODHEL(HELPICKED).NE.-HELOFFSET) THEN
1275
 
                WRITE(*,*) '##W02A WARNING Inconsistent zero helicit'
1276
 
     $           //'y ',HELPICKED
 
1034
                WRITE(*,*) '##W02A WARNING Inconsistent zero helicity'
 
1035
     $           //' ',HELPICKED
1277
1036
                IF(HELINITSTARTOVER) THEN
1278
 
                  WRITE(*,*) '##I01 INFO Initialization starting ove'
1279
 
     $             //'r because of inconsistency in the helicit'
1280
 
     $             //'y filter setup.'
 
1037
                  WRITE(*,*) '##I01 INFO Initialization starting over'
 
1038
     $             //' because of inconsistency in the helicity filter'
 
1039
     $             //' setup.'
1281
1040
                  NTRY=0
1282
1041
                ELSE
1283
1042
                  HEL_INCONSISTENT=.TRUE.
1300
1059
C                     Make sure we have paired this hel config to the
1301
1060
C                      same one last PS point
1302
1061
                    ELSEIF(GOODHEL(HELPICKED).NE.(-H-HELOFFSET)) THEN
1303
 
                      WRITE(*,*) '##W02B WARNING Inconsistent matchin'
1304
 
     $                 //'g helicity ',HELPICKED
 
1062
                      WRITE(*,*) '##W02B WARNING Inconsistent matching'
 
1063
     $                 //' helicity ',HELPICKED
1305
1064
                      IF(HELINITSTARTOVER) THEN
1306
 
                        WRITE(*,*) '##I01 INFO Initialization startin'
1307
 
     $                   //'g over because of inconsistency in th'
1308
 
     $                   //'e helicity filter setup.'
 
1065
                        WRITE(*,*) '##I01 INFO Initialization starting'
 
1066
     $                   //' over because of inconsistency in the'
 
1067
     $                   //' helicity filter setup.'
1309
1068
                        NTRY=0
1310
1069
                      ELSE
1311
1070
                        HEL_INCONSISTENT=.TRUE.
1318
1077
            IF(HEL_INCONSISTENT) THEN
1319
1078
C             This helicity has unstable filter so we will always
1320
1079
C              compute it by itself.
1321
 
C             We therefore also need to remove it from the multiplicati
1322
 
C             ve factor of the corresponding helicity.
 
1080
C             We therefore also need to remove it from the
 
1081
C              multiplicative factor of the corresponding helicity.
1323
1082
              IF(GOODHEL(HELPICKED).LT.-HELOFFSET) THEN
1324
1083
                GOODHEL(-GOODHEL(HELPICKED)-HELOFFSET)=GOODHEL(
1325
1084
     $           -GOODHEL(HELPICKED)-HELOFFSET)-1
1330
1089
C             Of course if it is one, then we do not need to do
1331
1090
C              anything (because with HELINITSTARTOVER=.FALSE. we only
1332
1091
C              support exactly identical Hels.)
1333
 
              IF(GOODHEL(HELPICKED).GT.-HELOFFSET.AND.GOODHEL(HELPICKED
1334
 
     $         ).NE.1) THEN
 
1092
              IF(GOODHEL(HELPICKED).GT.-HELOFFSET.AND.GOODHEL(HELPICKED)
 
1093
     $         .NE.1) THEN
1335
1094
                NEWHELREF=-1
1336
1095
                DO H=1,NCOMB
1337
1096
                  IF (GOODHEL(H).EQ.(-HELOFFSET-HELPICKED)) THEN
1365
1124
                    WRITE(*,*) '##W02 WARNING Inconsistent loop amp '
1366
1125
     $               ,I,'.'
1367
1126
                    IF(LOOPINITSTARTOVER) THEN
1368
 
                      WRITE(*,*) '##I01 INFO Initialization startin'
1369
 
     $                 //'g over because of inconsistency in the loo'
1370
 
     $                 //'p filter setup.'
 
1127
                      WRITE(*,*) '##I01 INFO Initialization starting'
 
1128
     $                 //' over because of inconsistency in the loop'
 
1129
     $                 //' filter setup.'
1371
1130
                      NTRY=0
1372
1131
                    ELSE
1373
1132
                      GOODAMP(J,I)=.TRUE.
1383
1142
            IF (.NOT.MG5_1_ISZERO(DABS(HELSAVED(1,HELPICKED))
1384
1143
     $       +DABS(HELSAVED(2,HELPICKED))+DABS(HELSAVED(2,HELPICKED))
1385
1144
     $       ,REF/DBLE(NCOMB),-1,-1)) THEN
1386
 
              WRITE(*,*) '##W15 Helicity filter could not be successfu'
1387
 
     $         //'lly double checked.'
1388
 
              WRITE(*,*) '##One reason for this is that you might hav'
1389
 
     $         //'e changed sensible parameters which affected wha'
1390
 
     $         //'t are the zero helicity configurations.'
1391
 
              WRITE(*,*) '##MadLoop will try to reset the Helicit'
1392
 
     $         //'y filter with the next PS points it receives.'
 
1145
              WRITE(*,*) '##W15 Helicity filter could not be'
 
1146
     $         //' successfully double checked.'
 
1147
              WRITE(*,*) '##One reason for this is that you might have'
 
1148
     $         //' changed sensible parameters which affected what are'
 
1149
     $         //' the zero helicity configurations.'
 
1150
              WRITE(*,*) '##MadLoop will try to reset the Helicity'
 
1151
     $         //' filter with the next PS points it receives.'
1393
1152
              NTRY=0
1394
1153
              OPEN(29,FILE=HELFILTERFN,ERR=348)
1395
1154
 348          CONTINUE
1397
1156
            ENDIF
1398
1157
          ENDIF
1399
1158
          IF (GOODHEL(HELPICKED).LT.-HELOFFSET.AND.NTRY.NE.0) THEN
1400
 
            IF(MG5_1_ISSAME(HELSAVED(1,HELPICKED),HELSAVED(1,ABS(GOODHE
1401
 
     $       L(HELPICKED)+HELOFFSET)),REF,.TRUE.).EQ.0) THEN
1402
 
              WRITE(*,*) '##W15 Helicity filter could not be successfu'
1403
 
     $         //'lly double checked.'
1404
 
              WRITE(*,*) '##One reason for this is that you might hav'
1405
 
     $         //'e changed sensible parameters which affected th'
1406
 
     $         //'e helicity dependance relations.'
1407
 
              WRITE(*,*) '##MadLoop will try to reset the Helicit'
1408
 
     $         //'y filter with the next PS points it receives.'
 
1159
            IF(MG5_1_ISSAME(HELSAVED(1,HELPICKED),HELSAVED(1
 
1160
     $       ,ABS(GOODHEL(HELPICKED)+HELOFFSET)),REF,.TRUE.).EQ.0) THEN
 
1161
              WRITE(*,*) '##W15 Helicity filter could not be'
 
1162
     $         //' successfully double checked.'
 
1163
              WRITE(*,*) '##One reason for this is that you might have'
 
1164
     $         //' changed sensible parameters which affected the'
 
1165
     $         //' helicity dependance relations.'
 
1166
              WRITE(*,*) '##MadLoop will try to reset the Helicity'
 
1167
     $         //' filter with the next PS points it receives.'
1409
1168
              NTRY=0
1410
1169
              OPEN(30,FILE=HELFILTERFN,ERR=349)
1411
1170
 349          CONTINUE
1413
1172
            ENDIF
1414
1173
          ENDIF
1415
1174
C         SET HELDOUBLECHECKED TO .TRUE. WHEN DONE
1416
 
C         even if it failed we do not want to redo the check afterwards
1417
 
C          if HELINITSTARTOVER=.FALSE.
 
1175
C         even if it failed we do not want to redo the check
 
1176
C          afterwards if HELINITSTARTOVER=.FALSE.
1418
1177
          IF (HELPICKED.EQ.NCOMB.AND.(NTRY.NE.0.OR..NOT.HELINITSTARTOVE
1419
 
     $     R)) THEN
 
1178
     $R)) THEN
1420
1179
            DONEHELDOUBLECHECK=.TRUE.
1421
1180
          ENDIF
1422
1181
        ENDIF
1442
1201
          IF(NTRY.EQ.0) THEN
1443
1202
            NATTEMPTS=NATTEMPTS+1
1444
1203
            IF(NATTEMPTS.EQ.MAXATTEMPTS) THEN
1445
 
              WRITE(*,*) '##E01 ERROR Could not initialize the filter'
1446
 
     $         //'s in ',MAXATTEMPTS,' trials'
 
1204
              WRITE(*,*) '##E01 ERROR Could not initialize the filters'
 
1205
     $         //' in ',MAXATTEMPTS,' trials'
1447
1206
              STOP 1
1448
1207
            ENDIF
1449
1208
          ENDIF
1460
1219
      ENDDO
1461
1220
 
1462
1221
 
1463
 
      IF(.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.(CTMODERUN.EQ.
1464
 
     $ -1)) THEN
 
1222
      IF(.NOT.CHECKPHASE.AND.HELDOUBLECHECKED.AND.(CTMODERUN.EQ.-1))
 
1223
     $  THEN
1465
1224
        STAB_INDEX=STAB_INDEX+1
1466
 
        IF(DOING_QP_EVALS.AND.MLREDUCTIONLIB(I_LIB).EQ.1) THEN
1467
 
C         NOW,ONLY CUTTOOLS PROVIDES QP
 
1225
        IF(DOING_QP_EVALS.AND.LOOPLIBS_QPAVAILABLE(MLREDUCTIONLIB(I_LIB)
 
1226
     $   )) THEN
 
1227
C         Only run over the reduction algorithms which support
 
1228
C          quadruple precision
1468
1229
          DO I=0,NSQUAREDSO
1469
1230
            DO K=1,3
1470
1231
              QP_RES(K,I,STAB_INDEX)=ANS(K,I)
1478
1239
          ENDDO
1479
1240
        ENDIF
1480
1241
 
1481
 
        IF(DOING_QP_EVALS.AND.MLREDUCTIONLIB(I_LIB).EQ.1) THEN
 
1242
        IF(DOING_QP_EVALS.AND.LOOPLIBS_QPAVAILABLE(MLREDUCTIONLIB(I_LIB)
 
1243
     $   )) THEN
1482
1244
          BASIC_CT_MODE=4
1483
1245
        ELSE
1484
1246
          BASIC_CT_MODE=1
1516
1278
        CTMODE=BASIC_CT_MODE
1517
1279
 
1518
1280
        IF(.NOT.EVAL_DONE(3).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1519
 
     $   .1).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
 
1281
     $.1).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.1)) ) THEN
1520
1282
          EVAL_DONE(3)=.TRUE.
1521
1283
          CALL MG5_1_ROTATE_PS(PS,P,1)
1522
1284
          IF (DOING_QP_EVALS) CALL MG5_1_MP_ROTATE_PS(MP_PS,MP_P,1)
1524
1286
        ENDIF
1525
1287
 
1526
1288
        IF(.NOT.EVAL_DONE(4).AND. ((DOING_QP_EVALS.AND.NROTATIONS_QP.GE
1527
 
     $   .2).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
 
1289
     $.2).OR.((.NOT.DOING_QP_EVALS).AND.NROTATIONS_DP.GE.2)) ) THEN
1528
1290
          EVAL_DONE(4)=.TRUE.
1529
1291
          CALL MG5_1_ROTATE_PS(PS,P,2)
1530
1292
          IF (DOING_QP_EVALS) CALL MG5_1_MP_ROTATE_PS(MP_PS,MP_P,2)
1536
1298
 
1537
1299
C       END OF THE DEFINITIONS OF THE DIFFERENT EVALUATION METHODS
1538
1300
 
1539
 
        IF(DOING_QP_EVALS.AND.MLREDUCTIONLIB(I_LIB).EQ.1) THEN
 
1301
        IF(DOING_QP_EVALS.AND.LOOPLIBS_QPAVAILABLE(MLREDUCTIONLIB(I_LIB)
 
1302
     $   )) THEN
1540
1303
          CALL MG5_1_COMPUTE_ACCURACY(QP_RES,N_QP_EVAL,ACC,ANS)
 
1304
C         If a floating point exception was encountered during the
 
1305
C          reduction,
 
1306
C         the result cannot be trusted at all and we hardset all
 
1307
C          accuracies to 1.0
 
1308
          IF(FPE_IN_QP_REDUCTION) THEN
 
1309
            DO I=0,NSQUAREDSO
 
1310
              ACC(I)=1.0D0
 
1311
            ENDDO
 
1312
          ENDIF
1541
1313
          DO I=0,NSQUAREDSO
1542
1314
            ACCURACY(I)=ACC(I)
1543
1315
          ENDDO
1546
1318
     $     ,.TRUE.)
1547
1319
          IF(MAXVAL(ACC).GE.MLSTABTHRES) THEN
1548
1320
            I_QP_LIB=I_QP_LIB+1
1549
 
            IF(I_QP_LIB.GT.QP_NLOOPLIB.OR.INDEX_QP_TOOLS(I_QP_LIB
1550
 
     $       ).EQ.0)THEN
 
1321
            IF(I_QP_LIB.GT.QP_NLOOPLIB.OR.INDEX_QP_TOOLS(I_QP_LIB)
 
1322
     $       .EQ.0)THEN
1551
1323
              RET_CODE_H=4
1552
1324
              RET_CODE_U=SET_RET_CODE_U(MLREDUCTIONLIB(I_LIB),.TRUE.
1553
1325
     $         ,.FALSE.)
1554
1326
              NEPS=NEPS+1
1555
1327
              CALL MG5_1_COMPUTE_ACCURACY(DP_RES,N_DP_EVAL,TEMP1,TEMP)
 
1328
              CALL MG5_1_COMPUTE_ACCURACY(QP_RES,N_QP_EVAL,ACC,ANS)
1556
1329
              IF(NEPS.LE.10) THEN
1557
 
                WRITE(*,*) '##W03 WARNING An unstable PS point was'
1558
 
     $           ,       ' detected.'
 
1330
                WRITE(*,*) '##W03 WARNING An unstable PS point was',  
 
1331
     $                ' detected.'
 
1332
                IF(FPE_IN_QP_REDUCTION) THEN
 
1333
                  WRITE(*,*) '## The last QP reduction was deemed'
 
1334
     $             //' unstable because a floating point exception was'
 
1335
     $             //' encountered.'
 
1336
                ENDIF
1559
1337
                IF (NSQUAREDSO.NE.1) THEN
1560
 
                  WRITE(*,*) '##Accuracies for each split orde'
1561
 
     $             //'r, starting with the summed case'
1562
 
                  WRITE(*,*) '##DP accuracies (for each split orde'
1563
 
     $             //'r): ',(TEMP1(I),I=0,NSQUAREDSO)
1564
 
                  WRITE(*,*) '##QP accuracies (for each split orde'
1565
 
     $             //'r): ',(ACC(I),I=0,NSQUAREDSO)
 
1338
                  WRITE(*,*) '##Accuracies for each split order,'
 
1339
     $             //' starting with the summed case'
 
1340
                  WRITE(*,*) '##DP accuracies (for each split order):'
 
1341
     $             //' ',(TEMP1(I),I=0,NSQUAREDSO)
 
1342
                  WRITE(*,*) '##QP accuracies (for each split order):'
 
1343
     $             //' ',(ACC(I),I=0,NSQUAREDSO)
1566
1344
                ELSE
1567
1345
                  WRITE(*,*) '##DP accuracy: ',TEMP1(1)
1568
1346
                  WRITE(*,*) '##QP accuracy: ',ACC(1)
1570
1348
                DO J=0,NSQUAREDSO
1571
1349
                  IF (NSQUAREDSO.NE.1.OR.J.NE.0) THEN
1572
1350
                    IF (J.EQ.0) THEN
1573
 
                      WRITE(*,*) 'Details for all split orders summe'
1574
 
     $                 //'d :'
 
1351
                      WRITE(*,*) 'Details for all split orders summed'
 
1352
     $                 //' :'
1575
1353
                    ELSE
1576
1354
                      WRITE(*,*) 'Details for split order index : ',J
1577
1355
                    ENDIF
1591
1369
                ENDDO
1592
1370
              ENDIF
1593
1371
              IF(NEPS.EQ.10) THEN
1594
 
                WRITE(*,*) 'Further output of the details of thes'
1595
 
     $           //'e unstable PS points will now be suppressed.'
 
1372
                WRITE(*,*) 'Further output of the details of these'
 
1373
     $           //' unstable PS points will now be suppressed.'
1596
1374
              ENDIF
1597
1375
            ELSE
 
1376
C             A new reduction tool will be used. Reinitialize the FPE
 
1377
C              flags.
 
1378
              FPE_IN_DP_REDUCTION=.FALSE.
 
1379
              FPE_IN_QP_REDUCTION=.FALSE.
1598
1380
              I_LIB=INDEX_QP_TOOLS(I_QP_LIB)
1599
1381
              EVAL_DONE(1)=.TRUE.
1600
1382
              DO I=2,MAXSTABILITYLENGTH
1610
1392
          ENDIF
1611
1393
        ELSEIF(.NOT.DOING_QP_EVALS)THEN
1612
1394
          CALL MG5_1_COMPUTE_ACCURACY(DP_RES,N_DP_EVAL,ACC,ANS)
 
1395
C         If a floating point exception was encountered during the
 
1396
C          reduction,
 
1397
C         the result cannot be trusted at all and we hardset all
 
1398
C          accuracies to 1.0
 
1399
          IF(FPE_IN_DP_REDUCTION) THEN
 
1400
            DO I=0,NSQUAREDSO
 
1401
              ACC(I)=1.0D0
 
1402
            ENDDO
 
1403
          ENDIF
1613
1404
          IF(MAXVAL(ACC).GE.MLSTABTHRES) THEN
1614
1405
            I_LIB=I_LIB+1
1615
 
            IF((I_LIB.GT.NLOOPLIB.OR.MLREDUCTIONLIB(I_LIB).EQ.0
1616
 
     $       ).AND.QP_TOOLS_AVAILABLE)THEN
 
1406
            IF((I_LIB.GT.NLOOPLIB.OR.MLREDUCTIONLIB(I_LIB).EQ.0)
 
1407
     $       .AND.QP_TOOLS_AVAILABLE)THEN
1617
1408
              I_LIB=INDEX_QP_TOOLS(1)
 
1409
C             A new reduction tool will be used. Reinitialize the FPE
 
1410
C              flags.
 
1411
              FPE_IN_DP_REDUCTION=.FALSE.
 
1412
              FPE_IN_QP_REDUCTION=.FALSE.
1618
1413
              I_QP_LIB=1
1619
1414
              DOING_QP_EVALS=.TRUE.
1620
1415
              EVAL_DONE(1)=.TRUE.
1624
1419
              STAB_INDEX=0
1625
1420
              CTMODE=4
1626
1421
              GOTO 200
1627
 
            ELSEIF(I_LIB.LE.NLOOPLIB.AND.MLREDUCTIONLIB(I_LIB).GT.0
1628
 
     $       )THEN
 
1422
            ELSEIF(I_LIB.LE.NLOOPLIB.AND.MLREDUCTIONLIB(I_LIB).GT.0)
 
1423
     $       THEN
 
1424
C             A new reduction tool will be used. Reinitialize the FPE
 
1425
C              flags.
 
1426
              FPE_IN_DP_REDUCTION=.FALSE.
 
1427
              FPE_IN_QP_REDUCTION=.FALSE.
1629
1428
              EVAL_DONE(1)=.TRUE.
1630
1429
              DO I=2,MAXSTABILITYLENGTH
1631
1430
                EVAL_DONE(I)=.FALSE.
1645
1444
     $         ,.FALSE.)
1646
1445
              NEPS=NEPS+1
1647
1446
              IF(NEPS.LE.10) THEN
1648
 
                WRITE(*,*) '##W03 WARNING An unstable PS point was'
1649
 
     $           ,       ' detected.'
1650
 
                WRITE(*,*) '##W03 WARNING No quadruple precision wil'
1651
 
     $           //'l be used.'
 
1447
                WRITE(*,*) '##W03 WARNING An unstable PS point was',  
 
1448
     $                ' detected.'
 
1449
                WRITE(*,*) '##W03 WARNING No quadruple precision will'
 
1450
     $           //' be used.'
 
1451
                IF(FPE_IN_DP_REDUCTION) THEN
 
1452
                  WRITE(*,*) '## The last DP reduction was deemed'
 
1453
     $             //' unstable because a floating point exception was'
 
1454
     $             //' encountered.'
 
1455
                ENDIF
 
1456
                CALL MG5_1_COMPUTE_ACCURACY(DP_RES,N_DP_EVAL,ACC,ANS)
1652
1457
                IF (NSQUAREDSO.NE.1) THEN
1653
 
                  WRITE(*,*) 'Accuracies for each split orde'
1654
 
     $             //'r, starting with the summed case'
 
1458
                  WRITE(*,*) 'Accuracies for each split order,'
 
1459
     $             //' starting with the summed case'
1655
1460
                  WRITE(*,*) 'DP accuracies (for each split order): '
1656
1461
     $             ,(ACC(I),I=0,NSQUAREDSO)
1657
1462
                ELSE
1660
1465
                DO J=0,NSQUAREDSO
1661
1466
                  IF (NSQUAREDSO.NE.1.OR.J.NE.0) THEN
1662
1467
                    IF (J.EQ.0) THEN
1663
 
                      WRITE(*,*) 'Details for all split orders summe'
1664
 
     $                 //'d :'
 
1468
                      WRITE(*,*) 'Details for all split orders summed'
 
1469
     $                 //' :'
1665
1470
                    ELSE
1666
1471
                      WRITE(*,*) 'Details for split order index : ',J
1667
1472
                    ENDIF
1679
1484
                ENDDO
1680
1485
              ENDIF
1681
1486
              IF(NEPS.EQ.10) THEN
1682
 
                WRITE(*,*) 'Further output of the details of thes'
1683
 
     $           //'e unstable PS points will now be suppressed.'
 
1487
                WRITE(*,*) 'Further output of the details of these'
 
1488
     $           //' unstable PS points will now be suppressed.'
1684
1489
              ENDIF
1685
1490
            ENDIF
1686
1491
          ELSE
1741
1546
        CTMODEINIT=CTMODEINIT_BU
1742
1547
      ENDIF
1743
1548
 
 
1549
C     Reinitialize the Lorentz test if it had been disabled because
 
1550
C      spin-2 particles are in the external states.
 
1551
      NROTATIONS_DP = NROTATIONS_DP_BU
 
1552
      NROTATIONS_QP = NROTATIONS_QP_BU
 
1553
 
1744
1554
C     Reinitialize the check phase logicals and the filters if check
1745
1555
C      bypassed
1746
1556
      IF (BYPASS_CHECK) THEN
1755
1565
          ENDDO
1756
1566
        ENDDO
1757
1567
      ENDIF
 
1568
 
 
1569
C     Make sure that we finish by emptying caches
 
1570
      IF (AUTOMATIC_CACHE_CLEARING) THEN
 
1571
        CALL MG5_1_CLEAR_CACHES()
 
1572
      ENDIF
 
1573
      END
 
1574
 
 
1575
      SUBROUTINE MG5_1_CLEAR_CACHES()
 
1576
C     Clears all the caches used at some point in MadLoop
 
1577
      CALL MG5_1_CLEAR_TIR_CACHE()
 
1578
      CALL NINJA_CLEAR_INTEGRAL_CACHE()
1758
1579
      END
1759
1580
 
1760
1581
C     --=========================================--
1762
1583
C     for the main sloopmatrix subroutine
1763
1584
C     --=========================================--
1764
1585
 
1765
 
      LOGICAL FUNCTION MG5_1_ISZERO(TOTEST, REFERENCE_VALUE, LOOP
1766
 
     $ , SOINDEX)
 
1586
      LOGICAL FUNCTION MG5_1_ISZERO(TOTEST, REFERENCE_VALUE, LOOP,
 
1587
     $  SOINDEX)
1767
1588
      IMPLICIT NONE
1768
1589
C     
1769
1590
C     CONSTANTS
1789
1610
C     ----------
1790
1611
      IF(ABS(REFERENCE_VALUE).EQ.0.0D0) THEN
1791
1612
        MG5_1_ISZERO=.FALSE.
1792
 
        WRITE(*,*) '##E02 ERRROR Reference value for comparison i'
1793
 
     $   //'s zero.'
 
1613
        WRITE(*,*) '##E02 ERRROR Reference value for comparison is'
 
1614
     $   //' zero.'
1794
1615
        STOP 1
1795
1616
      ELSE
1796
1617
        MG5_1_ISZERO=((ABS(TOTEST)/ABS(REFERENCE_VALUE)).LT.ZEROTHRES)
1798
1619
 
1799
1620
      IF(LOOP.NE.-1) THEN
1800
1621
        IF((.NOT.MG5_1_ISZERO).AND.(.NOT.S(SOINDEX,LOOP))) THEN
1801
 
          WRITE(*,*) '##W01 WARNING Contribution ',LOOP,' of spli'
1802
 
     $     //'t order ',SOINDEX,' is detected as contributing wit'
1803
 
     $     //'h CR=',(ABS(TOTEST)/ABS(REFERENCE_VALUE)),' but i'
1804
 
     $     //'s unstable.'
 
1622
          WRITE(*,*) '##W01 WARNING Contribution ',LOOP,' of split'
 
1623
     $     //' order ',SOINDEX,' is detected as contributing with CR='
 
1624
     $     ,(ABS(TOTEST)/ABS(REFERENCE_VALUE)),' but is unstable.'
1805
1625
        ENDIF
1806
1626
      ENDIF
1807
1627
 
1811
1631
      IMPLICIT NONE
1812
1632
C     This function compares the result from two different helicity
1813
1633
C      configuration A and B
1814
 
C     It returns 0 if they are not related and (+/-wgt) if A=(+/-wgt)*B
1815
 
C     .
 
1634
C     It returns 0 if they are not related and (+/-wgt) if
 
1635
C      A=(+/-wgt)*B.
1816
1636
C     For now, the only wgt implemented is the integer 1 or -1.
1817
1637
C     If useMax is .TRUE., it uses all implemented weights no matter
1818
1638
C      what is HELINITSTARTOVER
1855
1675
      DO I=1,N_WGT_TO_TRY
1856
1676
        DO J=1,3
1857
1677
          IF (MG5_1_ISZERO(ABS(RESB(J)),REF,-1,-1)) THEN
1858
 
            IF(.NOT.MG5_1_ISZERO(ABS(RESB(J))+ABS(RESA(J)),REF,-1,
1859
 
     $       -1)) THEN
 
1678
            IF(.NOT.MG5_1_ISZERO(ABS(RESB(J))+ABS(RESA(J)),REF,-1,-1))
 
1679
     $        THEN
1860
1680
              GOTO 1231
1861
1681
            ENDIF
1862
1682
C           Be looser for helicity comparison, so bring a factor 100
1863
 
          ELSEIF(.NOT.MG5_1_ISZERO(ABS((RESA(J)/RESB(J))-DBLE(WGT_TO_TR
1864
 
     $     Y(I))),1.0D0,-1,-1)) THEN
 
1683
          ELSEIF(.NOT.MG5_1_ISZERO(ABS((RESA(J)/RESB(J))
 
1684
     $     -DBLE(WGT_TO_TRY(I))),1.0D0,-1,-1)) THEN
1865
1685
            GOTO 1231
1866
1686
          ENDIF
1867
1687
        ENDDO
1871
1691
      ENDDO
1872
1692
      END
1873
1693
 
1874
 
      SUBROUTINE MG5_1_COMPUTE_ACCURACY(FULLLIST, LENGTH, ACC
1875
 
     $ , ESTIMATE)
 
1694
      SUBROUTINE MG5_1_COMPUTE_ACCURACY(FULLLIST, LENGTH, ACC,
 
1695
     $  ESTIMATE)
1876
1696
      IMPLICIT NONE
1877
1697
C     
1878
1698
C     PARAMETERS 
2019
1839
 
2020
1840
      SUBROUTINE MG5_1_GET_ANSWER_DIMENSION(ANS_DIM)
2021
1841
C     
2022
 
C     MadLoop subroutines return an array of dimension ANS(0:3,0:ANS_DI
2023
 
C     M)
 
1842
C     MadLoop subroutines return an array of dimension
 
1843
C      ANS(0:3,0:ANS_DIM)
2024
1844
C     In order for the user program to be able to correctly declare
2025
1845
C      this
2026
1846
C     array when calling MadLoop, this subroutine returns its dimension
2069
1889
 1009   CONTINUE
2070
1890
      ENDDO
2071
1891
 
2072
 
      WRITE(*,*) 'ERROR:: Stopping function MG5_1_ML5SOINDEX_FOR_SQUAR'
2073
 
     $ //'ED_ORDERS'
 
1892
      WRITE(*,*) 'ERROR:: Stopping function MG5_1_ML5SOINDEX_FOR_SQUARE'
 
1893
     $ //'D_ORDERS'
2074
1894
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2075
1895
      STOP
2076
1896
 
2098
1918
C     BEGIN CODE
2099
1919
C     -----------
2100
1920
      IF (AMPID.GT.NBORNAMPS) THEN
2101
 
        WRITE(*,*) 'ERROR:: Born amplitude ID ',AMPID,' above th'
2102
 
     $   //'e maximum ',NBORNAMPS
 
1921
        WRITE(*,*) 'ERROR:: Born amplitude ID ',AMPID,' above the'
 
1922
     $   //' maximum ',NBORNAMPS
2103
1923
      ENDIF
2104
1924
      MG5_1_ML5SOINDEX_FOR_BORN_AMP = BORNAMPORDERS(AMPID)
2105
1925
 
2142
1962
C     BEGIN CODE
2143
1963
C     -----------
2144
1964
      IF (AMPID.GT.NLOOPAMPS) THEN
2145
 
        WRITE(*,*) 'ERROR:: Loop amplitude ID ',AMPID,' above th'
2146
 
     $   //'e maximum ',NLOOPAMPS
 
1965
        WRITE(*,*) 'ERROR:: Loop amplitude ID ',AMPID,' above the'
 
1966
     $   //' maximum ',NLOOPAMPS
2147
1967
      ENDIF
2148
1968
      MG5_1_ML5SOINDEX_FOR_LOOP_AMP = LOOPAMPORDERS(AMPID)
2149
1969
 
2156
1976
C      be hardcoded or 
2157
1977
C     made more elegant using hashtables if its execution speed ever
2158
1978
C      becomes a relevant
2159
 
C     factor. From two split order indices, it return the corresponding
2160
 
C      index in the squared 
 
1979
C     factor. From two split order indices, it return the
 
1980
C      corresponding index in the squared 
2161
1981
C     order canonical ordering.
2162
1982
C     
2163
1983
C     CONSTANTS
2185
2005
C     
2186
2006
      DO I=1,NSO
2187
2007
        SQORDERS(I)=AMPSPLITORDERS(ORDERINDEXA,I)+AMPSPLITORDERS(ORDERI
2188
 
     $   NDEXB,I)
 
2008
     $NDEXB,I)
2189
2009
      ENDDO
2190
2010
      MG5_1_ML5SQSOINDEX=MG5_1_ML5SOINDEX_FOR_SQUARED_ORDERS(SQORDERS)
2191
2011
      END
2224
2044
        RETURN
2225
2045
      ENDIF
2226
2046
 
2227
 
      WRITE(*,*) 'ERROR:: Stopping function MG5_1_ML5GET_SQUARED_ORDER'
2228
 
     $ //'S_FOR_SOINDEX'
 
2047
      WRITE(*,*) 'ERROR:: Stopping function MG5_1_ML5GET_SQUARED_ORDERS'
 
2048
     $ //'_FOR_SOINDEX'
2229
2049
      WRITE(*,*) 'Could not find squared orders index ',SOINDEX
2230
2050
      STOP
2231
2051
 
2264
2084
        RETURN
2265
2085
      ENDIF
2266
2086
 
2267
 
      WRITE(*,*) 'ERROR:: Stopping function MG5_1_ML5GET_ORDERS_FOR_AM'
2268
 
     $ //'PSOINDEX'
 
2087
      WRITE(*,*) 'ERROR:: Stopping function MG5_1_ML5GET_ORDERS_FOR_AMP'
 
2088
     $ //'SOINDEX'
2269
2089
      WRITE(*,*) 'Could not find amplitude split orders index ',SOINDEX
2270
2090
      STOP
2271
2091
 
2272
2092
      END SUBROUTINE
2273
2093
 
2274
2094
 
2275
 
C     This function is not directly useful, but included for completene
2276
 
C     ss
 
2095
C     This function is not directly useful, but included for
 
2096
C      completeness
2277
2097
      INTEGER FUNCTION MG5_1_ML5SOINDEX_FOR_AMPORDERS(ORDERS)
2278
2098
C     
2279
2099
C     This functions returns the integer index identifying the
2308
2128
 1009   CONTINUE
2309
2129
      ENDDO
2310
2130
 
2311
 
      WRITE(*,*) 'ERROR:: Stopping function MG5_1_ML5SOINDEX_FOR_AMPOR'
2312
 
     $ //'DERS'
 
2131
      WRITE(*,*) 'ERROR:: Stopping function MG5_1_ML5SOINDEX_FOR_AMPORD'
 
2132
     $ //'ERS'
2313
2133
      WRITE(*,*) 'Could not find squared orders ',(ORDERS(I),I=1,NSO)
2314
2134
      STOP
2315
2135
 
2336
2156
 
2337
2157
      END SUBROUTINE
2338
2158
 
2339
 
      SUBROUTINE MG5_1_SET_AUTOMATIC_TIR_CACHE_CLEARING(ONOFF)
 
2159
      SUBROUTINE MG5_1_SET_AUTOMATIC_CACHE_CLEARING(ONOFF)
2340
2160
C     
2341
2161
C     This function can be called by the MadLoop user so as to
2342
2162
C      manually chose when
2348
2168
 
2349
2169
      LOGICAL ONOFF
2350
2170
 
2351
 
      LOGICAL AUTOMATIC_TIR_CACHE_CLEARING
2352
 
      DATA AUTOMATIC_TIR_CACHE_CLEARING/.TRUE./
2353
 
      COMMON/MG5_1_RUNTIME_OPTIONS/AUTOMATIC_TIR_CACHE_CLEARING
 
2171
      LOGICAL AUTOMATIC_CACHE_CLEARING
 
2172
      DATA AUTOMATIC_CACHE_CLEARING/.TRUE./
 
2173
      COMMON/MG5_1_RUNTIME_OPTIONS/AUTOMATIC_CACHE_CLEARING
2354
2174
 
2355
2175
      INTEGER N_DP_EVAL, N_QP_EVAL
2356
2176
      COMMON/MG5_1_N_EVALS/N_DP_EVAL,N_QP_EVAL
2357
2177
 
2358
 
      WRITE(*,*) 'Warning: No TIR caching implemented. Call t'
2359
 
     $ //'o SET_AUTOMATIC_TIR_CACHE_CLEARING did nothing.'
 
2178
      WRITE(*,*) 'Warning: No TIR caching implemented. Call to'
 
2179
     $ //' SET_AUTOMATIC_CACHE_CLEARING did nothing.'
2360
2180
      END SUBROUTINE
2361
2181
 
2362
2182
      SUBROUTINE MG5_1_SET_COUPLINGORDERS_TARGET(SOTARGET)
2449
2269
      USER_STAB_PREC = PREC_ASKED
2450
2270
 
2451
2271
      CALL MG5_1_SLOOPMATRIXHEL(P,HEL,ANS)
2452
 
      IF(ALWAYS_TEST_STABILITY.AND.(H.EQ.1.OR.ACCURACY(0).LT.0.0D0)
2453
 
     $ ) THEN
 
2272
      IF(ALWAYS_TEST_STABILITY.AND.(H.EQ.1.OR.ACCURACY(0).LT.0.0D0))
 
2273
     $  THEN
2454
2274
        BYPASS_CHECK = .TRUE.
2455
2275
        CALL MG5_1_SLOOPMATRIXHEL(P,HEL,ANS)
2456
2276
        BYPASS_CHECK = .FALSE.
2473
2293
     $ ,RET_CODE)
2474
2294
C     
2475
2295
C     Inputs are:
2476
 
C     P(0:3, Nexternal)  double  :: Kinematic configuration (E,px,py,pz
2477
 
C     )
 
2296
C     P(0:3, Nexternal)  double  :: Kinematic configuration
 
2297
C      (E,px,py,pz)
2478
2298
C     PEC_ASKED          double  :: Target relative accuracy, -1 for
2479
2299
C      default
2480
2300
C     
2519
2339
C     Stable with IREGI.
2520
2340
C     U == 4
2521
2341
C     Stable with Golem95
 
2342
C     U == 5
 
2343
C     Stable with Samurai
 
2344
C     U == 6
 
2345
C     Stable with Ninja in double precision
 
2346
C     U == 8
 
2347
C     Stable with Ninja in quadruple precision
2522
2348
C     U == 9
2523
2349
C     Stable with CutTools in quadruple precision.         
2524
2350
C     
2559
2385
C     ----------
2560
2386
      USER_STAB_PREC = PREC_ASKED
2561
2387
      CALL MG5_1_SLOOPMATRIX(P,ANS)
2562
 
      IF(ALWAYS_TEST_STABILITY.AND.(H.EQ.1.OR.ACCURACY(0).LT.0.0D0)
2563
 
     $ ) THEN
 
2388
      IF(ALWAYS_TEST_STABILITY.AND.(H.EQ.1.OR.ACCURACY(0).LT.0.0D0))
 
2389
     $  THEN
2564
2390
        BYPASS_CHECK = .TRUE.
2565
2391
        CALL MG5_1_SLOOPMATRIX(P,ANS)
2566
2392
        BYPASS_CHECK = .FALSE.
2585
2411
      CONTINUE
2586
2412
      END
2587
2413
 
2588