~maddevelopers/mg5amcnlo/simple_unlops

« back to all changes in this revision

Viewing changes to tests/input_files/IOTestsComparison/short_ML_SMQCD_optimized/gg_ttx/polynomial.f

  • Committer: olivier-mattelaer
  • Date: 2021-11-12 09:29:31 UTC
  • mfrom: (967.1.15 3.3.0)
  • Revision ID: olivier-mattelaer-20211112092931-4ec9qfzgxkeovqog
versionĀ 3.3.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
78
78
      INTEGER    NCOLORROWS
79
79
      PARAMETER (NCOLORROWS=129)
80
80
      INTEGER    NLOOPGROUPS
81
 
      PARAMETER (NLOOPGROUPS=26)
 
81
      PARAMETER (NLOOPGROUPS=28)
82
82
      INTEGER    NCOMB
83
83
      PARAMETER (NCOMB=16)
84
84
C     These are constants related to the split orders
180
180
      INTEGER    NCOLORROWS
181
181
      PARAMETER (NCOLORROWS=129)
182
182
      INTEGER    NLOOPGROUPS
183
 
      PARAMETER (NLOOPGROUPS=26)
 
183
      PARAMETER (NLOOPGROUPS=28)
184
184
      INTEGER    NCOMB
185
185
      PARAMETER (NCOMB=16)
186
186
C     These are constants related to the split orders
419
419
      ENDDO
420
420
      END
421
421
 
 
422
      SUBROUTINE ML5_0_UPDATE_WL_1_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
 
423
     $ ,OUT)
 
424
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
425
      INTEGER I,J,K
 
426
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
427
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
 
428
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
429
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
430
 
 
431
      DO I=1,LCUT_SIZE
 
432
        DO J=1,OUT_SIZE
 
433
          DO K=0,14
 
434
            OUT(J,K,I)=(0.0D0,0.0D0)
 
435
          ENDDO
 
436
          DO K=1,IN_SIZE
 
437
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
 
438
            OUT(J,1,I)=OUT(J,1,I)+A(K,0,I)*B(J,1,K)+A(K,1,I)*B(J,0,K)
 
439
            OUT(J,2,I)=OUT(J,2,I)+A(K,0,I)*B(J,2,K)+A(K,2,I)*B(J,0,K)
 
440
            OUT(J,3,I)=OUT(J,3,I)+A(K,0,I)*B(J,3,K)+A(K,3,I)*B(J,0,K)
 
441
            OUT(J,4,I)=OUT(J,4,I)+A(K,0,I)*B(J,4,K)+A(K,4,I)*B(J,0,K)
 
442
            OUT(J,5,I)=OUT(J,5,I)+A(K,1,I)*B(J,1,K)
 
443
            OUT(J,6,I)=OUT(J,6,I)+A(K,1,I)*B(J,2,K)+A(K,2,I)*B(J,1,K)
 
444
            OUT(J,7,I)=OUT(J,7,I)+A(K,2,I)*B(J,2,K)
 
445
            OUT(J,8,I)=OUT(J,8,I)+A(K,1,I)*B(J,3,K)+A(K,3,I)*B(J,1,K)
 
446
            OUT(J,9,I)=OUT(J,9,I)+A(K,2,I)*B(J,3,K)+A(K,3,I)*B(J,2,K)
 
447
            OUT(J,10,I)=OUT(J,10,I)+A(K,3,I)*B(J,3,K)
 
448
            OUT(J,11,I)=OUT(J,11,I)+A(K,1,I)*B(J,4,K)+A(K,4,I)*B(J,1,K)
 
449
            OUT(J,12,I)=OUT(J,12,I)+A(K,2,I)*B(J,4,K)+A(K,4,I)*B(J,2,K)
 
450
            OUT(J,13,I)=OUT(J,13,I)+A(K,3,I)*B(J,4,K)+A(K,4,I)*B(J,3,K)
 
451
            OUT(J,14,I)=OUT(J,14,I)+A(K,4,I)*B(J,4,K)
 
452
          ENDDO
 
453
        ENDDO
 
454
      ENDDO
 
455
      END
 
456
 
 
457
      SUBROUTINE MP_ML5_0_UPDATE_WL_1_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
 
458
     $ ,OUT)
 
459
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
460
      INTEGER I,J,K
 
461
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
462
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
 
463
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
464
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
465
 
 
466
      DO I=1,LCUT_SIZE
 
467
        DO J=1,OUT_SIZE
 
468
          DO K=0,14
 
469
            OUT(J,K,I)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
 
470
          ENDDO
 
471
          DO K=1,IN_SIZE
 
472
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
 
473
            OUT(J,1,I)=OUT(J,1,I)+A(K,0,I)*B(J,1,K)+A(K,1,I)*B(J,0,K)
 
474
            OUT(J,2,I)=OUT(J,2,I)+A(K,0,I)*B(J,2,K)+A(K,2,I)*B(J,0,K)
 
475
            OUT(J,3,I)=OUT(J,3,I)+A(K,0,I)*B(J,3,K)+A(K,3,I)*B(J,0,K)
 
476
            OUT(J,4,I)=OUT(J,4,I)+A(K,0,I)*B(J,4,K)+A(K,4,I)*B(J,0,K)
 
477
            OUT(J,5,I)=OUT(J,5,I)+A(K,1,I)*B(J,1,K)
 
478
            OUT(J,6,I)=OUT(J,6,I)+A(K,1,I)*B(J,2,K)+A(K,2,I)*B(J,1,K)
 
479
            OUT(J,7,I)=OUT(J,7,I)+A(K,2,I)*B(J,2,K)
 
480
            OUT(J,8,I)=OUT(J,8,I)+A(K,1,I)*B(J,3,K)+A(K,3,I)*B(J,1,K)
 
481
            OUT(J,9,I)=OUT(J,9,I)+A(K,2,I)*B(J,3,K)+A(K,3,I)*B(J,2,K)
 
482
            OUT(J,10,I)=OUT(J,10,I)+A(K,3,I)*B(J,3,K)
 
483
            OUT(J,11,I)=OUT(J,11,I)+A(K,1,I)*B(J,4,K)+A(K,4,I)*B(J,1,K)
 
484
            OUT(J,12,I)=OUT(J,12,I)+A(K,2,I)*B(J,4,K)+A(K,4,I)*B(J,2,K)
 
485
            OUT(J,13,I)=OUT(J,13,I)+A(K,3,I)*B(J,4,K)+A(K,4,I)*B(J,3,K)
 
486
            OUT(J,14,I)=OUT(J,14,I)+A(K,4,I)*B(J,4,K)
 
487
          ENDDO
 
488
        ENDDO
 
489
      ENDDO
 
490
      END
 
491
 
 
492
      SUBROUTINE ML5_0_UPDATE_WL_1_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
 
493
     $ ,OUT)
 
494
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
495
      INTEGER I,J,K
 
496
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
497
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
 
498
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
499
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
500
 
 
501
      DO I=1,LCUT_SIZE
 
502
        DO J=1,OUT_SIZE
 
503
          DO K=0,4
 
504
            OUT(J,K,I)=(0.0D0,0.0D0)
 
505
          ENDDO
 
506
          DO K=1,IN_SIZE
 
507
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
 
508
            OUT(J,1,I)=OUT(J,1,I)+A(K,1,I)*B(J,0,K)
 
509
            OUT(J,2,I)=OUT(J,2,I)+A(K,2,I)*B(J,0,K)
 
510
            OUT(J,3,I)=OUT(J,3,I)+A(K,3,I)*B(J,0,K)
 
511
            OUT(J,4,I)=OUT(J,4,I)+A(K,4,I)*B(J,0,K)
 
512
          ENDDO
 
513
        ENDDO
 
514
      ENDDO
 
515
      END
 
516
 
 
517
      SUBROUTINE MP_ML5_0_UPDATE_WL_1_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
 
518
     $ ,OUT)
 
519
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
520
      INTEGER I,J,K
 
521
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
522
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
 
523
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
524
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
525
 
 
526
      DO I=1,LCUT_SIZE
 
527
        DO J=1,OUT_SIZE
 
528
          DO K=0,4
 
529
            OUT(J,K,I)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
 
530
          ENDDO
 
531
          DO K=1,IN_SIZE
 
532
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
 
533
            OUT(J,1,I)=OUT(J,1,I)+A(K,1,I)*B(J,0,K)
 
534
            OUT(J,2,I)=OUT(J,2,I)+A(K,2,I)*B(J,0,K)
 
535
            OUT(J,3,I)=OUT(J,3,I)+A(K,3,I)*B(J,0,K)
 
536
            OUT(J,4,I)=OUT(J,4,I)+A(K,4,I)*B(J,0,K)
 
537
          ENDDO
 
538
        ENDDO
 
539
      ENDDO
 
540
      END
 
541
 
 
542
      SUBROUTINE ML5_0_UPDATE_WL_0_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
 
543
     $ ,OUT)
 
544
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
545
      INTEGER I,J,K
 
546
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
547
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
 
548
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
549
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
550
 
 
551
      DO I=1,LCUT_SIZE
 
552
        DO J=1,OUT_SIZE
 
553
          DO K=0,0
 
554
            OUT(J,K,I)=(0.0D0,0.0D0)
 
555
          ENDDO
 
556
          DO K=1,IN_SIZE
 
557
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
 
558
          ENDDO
 
559
        ENDDO
 
560
      ENDDO
 
561
      END
 
562
 
 
563
      SUBROUTINE MP_ML5_0_UPDATE_WL_0_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
 
564
     $ ,OUT)
 
565
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
566
      INTEGER I,J,K
 
567
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
568
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
 
569
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
570
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
571
 
 
572
      DO I=1,LCUT_SIZE
 
573
        DO J=1,OUT_SIZE
 
574
          DO K=0,0
 
575
            OUT(J,K,I)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
 
576
          ENDDO
 
577
          DO K=1,IN_SIZE
 
578
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
 
579
          ENDDO
 
580
        ENDDO
 
581
      ENDDO
 
582
      END
 
583
 
 
584
      SUBROUTINE ML5_0_UPDATE_WL_2_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
 
585
     $ ,OUT)
 
586
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
587
      INTEGER I,J,K
 
588
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
589
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
 
590
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
591
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
592
 
 
593
      DO I=1,LCUT_SIZE
 
594
        DO J=1,OUT_SIZE
 
595
          DO K=0,14
 
596
            OUT(J,K,I)=(0.0D0,0.0D0)
 
597
          ENDDO
 
598
          DO K=1,IN_SIZE
 
599
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
 
600
            OUT(J,1,I)=OUT(J,1,I)+A(K,1,I)*B(J,0,K)
 
601
            OUT(J,2,I)=OUT(J,2,I)+A(K,2,I)*B(J,0,K)
 
602
            OUT(J,3,I)=OUT(J,3,I)+A(K,3,I)*B(J,0,K)
 
603
            OUT(J,4,I)=OUT(J,4,I)+A(K,4,I)*B(J,0,K)
 
604
            OUT(J,5,I)=OUT(J,5,I)+A(K,5,I)*B(J,0,K)
 
605
            OUT(J,6,I)=OUT(J,6,I)+A(K,6,I)*B(J,0,K)
 
606
            OUT(J,7,I)=OUT(J,7,I)+A(K,7,I)*B(J,0,K)
 
607
            OUT(J,8,I)=OUT(J,8,I)+A(K,8,I)*B(J,0,K)
 
608
            OUT(J,9,I)=OUT(J,9,I)+A(K,9,I)*B(J,0,K)
 
609
            OUT(J,10,I)=OUT(J,10,I)+A(K,10,I)*B(J,0,K)
 
610
            OUT(J,11,I)=OUT(J,11,I)+A(K,11,I)*B(J,0,K)
 
611
            OUT(J,12,I)=OUT(J,12,I)+A(K,12,I)*B(J,0,K)
 
612
            OUT(J,13,I)=OUT(J,13,I)+A(K,13,I)*B(J,0,K)
 
613
            OUT(J,14,I)=OUT(J,14,I)+A(K,14,I)*B(J,0,K)
 
614
          ENDDO
 
615
        ENDDO
 
616
      ENDDO
 
617
      END
 
618
 
 
619
      SUBROUTINE MP_ML5_0_UPDATE_WL_2_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
 
620
     $ ,OUT)
 
621
      USE ML5_0_POLYNOMIAL_CONSTANTS
 
622
      INTEGER I,J,K
 
623
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
624
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
 
625
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
 
626
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
 
627
 
 
628
      DO I=1,LCUT_SIZE
 
629
        DO J=1,OUT_SIZE
 
630
          DO K=0,14
 
631
            OUT(J,K,I)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
 
632
          ENDDO
 
633
          DO K=1,IN_SIZE
 
634
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
 
635
            OUT(J,1,I)=OUT(J,1,I)+A(K,1,I)*B(J,0,K)
 
636
            OUT(J,2,I)=OUT(J,2,I)+A(K,2,I)*B(J,0,K)
 
637
            OUT(J,3,I)=OUT(J,3,I)+A(K,3,I)*B(J,0,K)
 
638
            OUT(J,4,I)=OUT(J,4,I)+A(K,4,I)*B(J,0,K)
 
639
            OUT(J,5,I)=OUT(J,5,I)+A(K,5,I)*B(J,0,K)
 
640
            OUT(J,6,I)=OUT(J,6,I)+A(K,6,I)*B(J,0,K)
 
641
            OUT(J,7,I)=OUT(J,7,I)+A(K,7,I)*B(J,0,K)
 
642
            OUT(J,8,I)=OUT(J,8,I)+A(K,8,I)*B(J,0,K)
 
643
            OUT(J,9,I)=OUT(J,9,I)+A(K,9,I)*B(J,0,K)
 
644
            OUT(J,10,I)=OUT(J,10,I)+A(K,10,I)*B(J,0,K)
 
645
            OUT(J,11,I)=OUT(J,11,I)+A(K,11,I)*B(J,0,K)
 
646
            OUT(J,12,I)=OUT(J,12,I)+A(K,12,I)*B(J,0,K)
 
647
            OUT(J,13,I)=OUT(J,13,I)+A(K,13,I)*B(J,0,K)
 
648
            OUT(J,14,I)=OUT(J,14,I)+A(K,14,I)*B(J,0,K)
 
649
          ENDDO
 
650
        ENDDO
 
651
      ENDDO
 
652
      END
 
653
 
422
654
      SUBROUTINE ML5_0_UPDATE_WL_2_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
423
655
     $ ,OUT)
424
656
      USE ML5_0_POLYNOMIAL_CONSTANTS
483
715
 
484
716
      END
485
717
 
486
 
      SUBROUTINE ML5_0_UPDATE_WL_0_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
487
 
     $ ,OUT)
488
 
      USE ML5_0_POLYNOMIAL_CONSTANTS
489
 
      INTEGER I,J,K
490
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
491
 
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
492
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
493
 
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
494
 
 
495
 
      DO I=1,LCUT_SIZE
496
 
        DO J=1,OUT_SIZE
497
 
          DO K=0,0
498
 
            OUT(J,K,I)=(0.0D0,0.0D0)
499
 
          ENDDO
500
 
          DO K=1,IN_SIZE
501
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
502
 
          ENDDO
503
 
        ENDDO
504
 
      ENDDO
505
 
      END
506
 
 
507
 
      SUBROUTINE MP_ML5_0_UPDATE_WL_0_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
508
 
     $ ,OUT)
509
 
      USE ML5_0_POLYNOMIAL_CONSTANTS
510
 
      INTEGER I,J,K
511
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
512
 
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
513
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
514
 
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
515
 
 
516
 
      DO I=1,LCUT_SIZE
517
 
        DO J=1,OUT_SIZE
518
 
          DO K=0,0
519
 
            OUT(J,K,I)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
520
 
          ENDDO
521
 
          DO K=1,IN_SIZE
522
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
523
 
          ENDDO
524
 
        ENDDO
525
 
      ENDDO
526
 
      END
527
 
 
528
 
      SUBROUTINE ML5_0_UPDATE_WL_1_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
529
 
     $ ,OUT)
530
 
      USE ML5_0_POLYNOMIAL_CONSTANTS
531
 
      INTEGER I,J,K
532
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
533
 
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
534
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
535
 
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
536
 
 
537
 
      DO I=1,LCUT_SIZE
538
 
        DO J=1,OUT_SIZE
539
 
          DO K=0,14
540
 
            OUT(J,K,I)=(0.0D0,0.0D0)
541
 
          ENDDO
542
 
          DO K=1,IN_SIZE
543
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
544
 
            OUT(J,1,I)=OUT(J,1,I)+A(K,0,I)*B(J,1,K)+A(K,1,I)*B(J,0,K)
545
 
            OUT(J,2,I)=OUT(J,2,I)+A(K,0,I)*B(J,2,K)+A(K,2,I)*B(J,0,K)
546
 
            OUT(J,3,I)=OUT(J,3,I)+A(K,0,I)*B(J,3,K)+A(K,3,I)*B(J,0,K)
547
 
            OUT(J,4,I)=OUT(J,4,I)+A(K,0,I)*B(J,4,K)+A(K,4,I)*B(J,0,K)
548
 
            OUT(J,5,I)=OUT(J,5,I)+A(K,1,I)*B(J,1,K)
549
 
            OUT(J,6,I)=OUT(J,6,I)+A(K,1,I)*B(J,2,K)+A(K,2,I)*B(J,1,K)
550
 
            OUT(J,7,I)=OUT(J,7,I)+A(K,2,I)*B(J,2,K)
551
 
            OUT(J,8,I)=OUT(J,8,I)+A(K,1,I)*B(J,3,K)+A(K,3,I)*B(J,1,K)
552
 
            OUT(J,9,I)=OUT(J,9,I)+A(K,2,I)*B(J,3,K)+A(K,3,I)*B(J,2,K)
553
 
            OUT(J,10,I)=OUT(J,10,I)+A(K,3,I)*B(J,3,K)
554
 
            OUT(J,11,I)=OUT(J,11,I)+A(K,1,I)*B(J,4,K)+A(K,4,I)*B(J,1,K)
555
 
            OUT(J,12,I)=OUT(J,12,I)+A(K,2,I)*B(J,4,K)+A(K,4,I)*B(J,2,K)
556
 
            OUT(J,13,I)=OUT(J,13,I)+A(K,3,I)*B(J,4,K)+A(K,4,I)*B(J,3,K)
557
 
            OUT(J,14,I)=OUT(J,14,I)+A(K,4,I)*B(J,4,K)
558
 
          ENDDO
559
 
        ENDDO
560
 
      ENDDO
561
 
      END
562
 
 
563
 
      SUBROUTINE MP_ML5_0_UPDATE_WL_1_1(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
564
 
     $ ,OUT)
565
 
      USE ML5_0_POLYNOMIAL_CONSTANTS
566
 
      INTEGER I,J,K
567
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
568
 
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
569
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
570
 
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
571
 
 
572
 
      DO I=1,LCUT_SIZE
573
 
        DO J=1,OUT_SIZE
574
 
          DO K=0,14
575
 
            OUT(J,K,I)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
576
 
          ENDDO
577
 
          DO K=1,IN_SIZE
578
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
579
 
            OUT(J,1,I)=OUT(J,1,I)+A(K,0,I)*B(J,1,K)+A(K,1,I)*B(J,0,K)
580
 
            OUT(J,2,I)=OUT(J,2,I)+A(K,0,I)*B(J,2,K)+A(K,2,I)*B(J,0,K)
581
 
            OUT(J,3,I)=OUT(J,3,I)+A(K,0,I)*B(J,3,K)+A(K,3,I)*B(J,0,K)
582
 
            OUT(J,4,I)=OUT(J,4,I)+A(K,0,I)*B(J,4,K)+A(K,4,I)*B(J,0,K)
583
 
            OUT(J,5,I)=OUT(J,5,I)+A(K,1,I)*B(J,1,K)
584
 
            OUT(J,6,I)=OUT(J,6,I)+A(K,1,I)*B(J,2,K)+A(K,2,I)*B(J,1,K)
585
 
            OUT(J,7,I)=OUT(J,7,I)+A(K,2,I)*B(J,2,K)
586
 
            OUT(J,8,I)=OUT(J,8,I)+A(K,1,I)*B(J,3,K)+A(K,3,I)*B(J,1,K)
587
 
            OUT(J,9,I)=OUT(J,9,I)+A(K,2,I)*B(J,3,K)+A(K,3,I)*B(J,2,K)
588
 
            OUT(J,10,I)=OUT(J,10,I)+A(K,3,I)*B(J,3,K)
589
 
            OUT(J,11,I)=OUT(J,11,I)+A(K,1,I)*B(J,4,K)+A(K,4,I)*B(J,1,K)
590
 
            OUT(J,12,I)=OUT(J,12,I)+A(K,2,I)*B(J,4,K)+A(K,4,I)*B(J,2,K)
591
 
            OUT(J,13,I)=OUT(J,13,I)+A(K,3,I)*B(J,4,K)+A(K,4,I)*B(J,3,K)
592
 
            OUT(J,14,I)=OUT(J,14,I)+A(K,4,I)*B(J,4,K)
593
 
          ENDDO
594
 
        ENDDO
595
 
      ENDDO
596
 
      END
597
 
 
598
 
      SUBROUTINE ML5_0_UPDATE_WL_2_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
599
 
     $ ,OUT)
600
 
      USE ML5_0_POLYNOMIAL_CONSTANTS
601
 
      INTEGER I,J,K
602
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
603
 
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
604
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
605
 
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
606
 
 
607
 
      DO I=1,LCUT_SIZE
608
 
        DO J=1,OUT_SIZE
609
 
          DO K=0,14
610
 
            OUT(J,K,I)=(0.0D0,0.0D0)
611
 
          ENDDO
612
 
          DO K=1,IN_SIZE
613
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
614
 
            OUT(J,1,I)=OUT(J,1,I)+A(K,1,I)*B(J,0,K)
615
 
            OUT(J,2,I)=OUT(J,2,I)+A(K,2,I)*B(J,0,K)
616
 
            OUT(J,3,I)=OUT(J,3,I)+A(K,3,I)*B(J,0,K)
617
 
            OUT(J,4,I)=OUT(J,4,I)+A(K,4,I)*B(J,0,K)
618
 
            OUT(J,5,I)=OUT(J,5,I)+A(K,5,I)*B(J,0,K)
619
 
            OUT(J,6,I)=OUT(J,6,I)+A(K,6,I)*B(J,0,K)
620
 
            OUT(J,7,I)=OUT(J,7,I)+A(K,7,I)*B(J,0,K)
621
 
            OUT(J,8,I)=OUT(J,8,I)+A(K,8,I)*B(J,0,K)
622
 
            OUT(J,9,I)=OUT(J,9,I)+A(K,9,I)*B(J,0,K)
623
 
            OUT(J,10,I)=OUT(J,10,I)+A(K,10,I)*B(J,0,K)
624
 
            OUT(J,11,I)=OUT(J,11,I)+A(K,11,I)*B(J,0,K)
625
 
            OUT(J,12,I)=OUT(J,12,I)+A(K,12,I)*B(J,0,K)
626
 
            OUT(J,13,I)=OUT(J,13,I)+A(K,13,I)*B(J,0,K)
627
 
            OUT(J,14,I)=OUT(J,14,I)+A(K,14,I)*B(J,0,K)
628
 
          ENDDO
629
 
        ENDDO
630
 
      ENDDO
631
 
      END
632
 
 
633
 
      SUBROUTINE MP_ML5_0_UPDATE_WL_2_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
634
 
     $ ,OUT)
635
 
      USE ML5_0_POLYNOMIAL_CONSTANTS
636
 
      INTEGER I,J,K
637
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
638
 
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
639
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
640
 
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
641
 
 
642
 
      DO I=1,LCUT_SIZE
643
 
        DO J=1,OUT_SIZE
644
 
          DO K=0,14
645
 
            OUT(J,K,I)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
646
 
          ENDDO
647
 
          DO K=1,IN_SIZE
648
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
649
 
            OUT(J,1,I)=OUT(J,1,I)+A(K,1,I)*B(J,0,K)
650
 
            OUT(J,2,I)=OUT(J,2,I)+A(K,2,I)*B(J,0,K)
651
 
            OUT(J,3,I)=OUT(J,3,I)+A(K,3,I)*B(J,0,K)
652
 
            OUT(J,4,I)=OUT(J,4,I)+A(K,4,I)*B(J,0,K)
653
 
            OUT(J,5,I)=OUT(J,5,I)+A(K,5,I)*B(J,0,K)
654
 
            OUT(J,6,I)=OUT(J,6,I)+A(K,6,I)*B(J,0,K)
655
 
            OUT(J,7,I)=OUT(J,7,I)+A(K,7,I)*B(J,0,K)
656
 
            OUT(J,8,I)=OUT(J,8,I)+A(K,8,I)*B(J,0,K)
657
 
            OUT(J,9,I)=OUT(J,9,I)+A(K,9,I)*B(J,0,K)
658
 
            OUT(J,10,I)=OUT(J,10,I)+A(K,10,I)*B(J,0,K)
659
 
            OUT(J,11,I)=OUT(J,11,I)+A(K,11,I)*B(J,0,K)
660
 
            OUT(J,12,I)=OUT(J,12,I)+A(K,12,I)*B(J,0,K)
661
 
            OUT(J,13,I)=OUT(J,13,I)+A(K,13,I)*B(J,0,K)
662
 
            OUT(J,14,I)=OUT(J,14,I)+A(K,14,I)*B(J,0,K)
663
 
          ENDDO
664
 
        ENDDO
665
 
      ENDDO
666
 
      END
667
 
 
668
718
      SUBROUTINE ML5_0_UPDATE_WL_3_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
669
719
     $ ,OUT)
670
720
      USE ML5_0_POLYNOMIAL_CONSTANTS
774
824
        ENDDO
775
825
      ENDDO
776
826
      END
777
 
 
778
 
      SUBROUTINE ML5_0_UPDATE_WL_1_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
779
 
     $ ,OUT)
780
 
      USE ML5_0_POLYNOMIAL_CONSTANTS
781
 
      INTEGER I,J,K
782
 
      COMPLEX*16 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
783
 
      COMPLEX*16 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
784
 
      COMPLEX*16 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
785
 
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
786
 
 
787
 
      DO I=1,LCUT_SIZE
788
 
        DO J=1,OUT_SIZE
789
 
          DO K=0,4
790
 
            OUT(J,K,I)=(0.0D0,0.0D0)
791
 
          ENDDO
792
 
          DO K=1,IN_SIZE
793
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
794
 
            OUT(J,1,I)=OUT(J,1,I)+A(K,1,I)*B(J,0,K)
795
 
            OUT(J,2,I)=OUT(J,2,I)+A(K,2,I)*B(J,0,K)
796
 
            OUT(J,3,I)=OUT(J,3,I)+A(K,3,I)*B(J,0,K)
797
 
            OUT(J,4,I)=OUT(J,4,I)+A(K,4,I)*B(J,0,K)
798
 
          ENDDO
799
 
        ENDDO
800
 
      ENDDO
801
 
      END
802
 
 
803
 
      SUBROUTINE MP_ML5_0_UPDATE_WL_1_0(A,LCUT_SIZE,B,IN_SIZE,OUT_SIZE
804
 
     $ ,OUT)
805
 
      USE ML5_0_POLYNOMIAL_CONSTANTS
806
 
      INTEGER I,J,K
807
 
      COMPLEX*32 A(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
808
 
      COMPLEX*32 B(MAXLWFSIZE,0:VERTEXMAXCOEFS-1,MAXLWFSIZE)
809
 
      COMPLEX*32 OUT(MAXLWFSIZE,0:LOOPMAXCOEFS-1,MAXLWFSIZE)
810
 
      INTEGER LCUT_SIZE,IN_SIZE,OUT_SIZE
811
 
 
812
 
      DO I=1,LCUT_SIZE
813
 
        DO J=1,OUT_SIZE
814
 
          DO K=0,4
815
 
            OUT(J,K,I)=CMPLX(0.0E0_16,0.0E0_16,KIND=16)
816
 
          ENDDO
817
 
          DO K=1,IN_SIZE
818
 
            OUT(J,0,I)=OUT(J,0,I)+A(K,0,I)*B(J,0,K)
819
 
            OUT(J,1,I)=OUT(J,1,I)+A(K,1,I)*B(J,0,K)
820
 
            OUT(J,2,I)=OUT(J,2,I)+A(K,2,I)*B(J,0,K)
821
 
            OUT(J,3,I)=OUT(J,3,I)+A(K,3,I)*B(J,0,K)
822
 
            OUT(J,4,I)=OUT(J,4,I)+A(K,4,I)*B(J,0,K)
823
 
          ENDDO
824
 
        ENDDO
825
 
      ENDDO
826
 
      END