1403
1420
rslt = ( log(rr) + IPI*jj )/(yy-1)
1424
function log2_r(xx,iph) result(rslt)
1425
!***********************************************************************
1426
!***********************************************************************
1429
integer ,intent(in) :: iph
1432
rslt = log2_c(xx*CONE,iph)
1436
function log2_c(xx,iph) result(rslt)
1437
!***********************************************************************
1438
!***********************************************************************
1441
integer ,intent(in) :: iph
1451
if (rex.eq.RZRO.and.imx.eq.RZRO) then
1452
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop log2_c: ' &
1453
,'xx = 0, returning 0'
1458
if (mod(iph,2).eq.0) then ;yy= xx ;jj=iph
1459
else ;yy=-xx ;jj=iph+sgnRe(imx)
1463
rslt = ( olog1(yy,jj) - 1 )/(yy-1)
1469
if (aa.ge.thrs(6,prcpar)) then
1470
rslt = (log(yy)/zz-1)/zz
1472
elseif (aa.ge.thrs(5,prcpar)) then ;nn=ntrm(6,prcpar)
1473
elseif (aa.ge.thrs(4,prcpar)) then ;nn=ntrm(5,prcpar)
1474
elseif (aa.ge.thrs(3,prcpar)) then ;nn=ntrm(4,prcpar)
1475
elseif (aa.ge.thrs(2,prcpar)) then ;nn=ntrm(3,prcpar)
1476
elseif (aa.ge.thrs(1,prcpar)) then ;nn=ntrm(2,prcpar)
1477
else ;nn=ntrm(1,prcpar)
1479
! convergence acceleration using z=(y-1)/(y+1)
1480
! rslt = -1/(y+1) + 2/(y+1)^2 * ( z/3 + z^3/5 + z^5/7 + ... )
1487
rslt = aa/ii + z2*rslt
1489
rslt = ( -1 + zz*rslt/(yy+1) )/(yy+1)
1493
function log3_r(xx,iph) result(rslt)
1494
!***********************************************************************
1495
!***********************************************************************
1498
integer ,intent(in) :: iph
1501
rslt = log3_c(xx*CONE,iph)
1505
function log3_c(xx,iph) result(rslt)
1506
!***********************************************************************
1507
!***********************************************************************
1510
integer ,intent(in) :: iph
1512
:: rslt ,yy,zz,z2,HLF
1520
if (rex.eq.RZRO.and.imx.eq.RZRO) then
1521
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop log2_c: ' &
1522
,'xx = 0, returning 0'
1529
if (mod(iph,2).eq.0) then ;yy= xx ;jj=iph
1530
else ;yy=-xx ;jj=iph+sgnRe(imx)
1534
rslt = ( olog2(xx,jj) + HLF )/(yy-1)
1540
if (aa.ge.thrs(6,prcpar)) then
1541
rslt = ((log(yy)/zz-1)/zz+HLF)/zz
1543
elseif (aa.ge.thrs(5,prcpar)) then ;nn=ntrm(6,prcpar)
1544
elseif (aa.ge.thrs(4,prcpar)) then ;nn=ntrm(5,prcpar)
1545
elseif (aa.ge.thrs(3,prcpar)) then ;nn=ntrm(4,prcpar)
1546
elseif (aa.ge.thrs(2,prcpar)) then ;nn=ntrm(3,prcpar)
1547
elseif (aa.ge.thrs(1,prcpar)) then ;nn=ntrm(2,prcpar)
1548
else ;nn=ntrm(1,prcpar)
1550
! convergence acceleration using z=(y-1)/(y+1)
1551
! rslt = 1/(2*(y+1)) + 2/(y+1)^3 * ( 1/3 + z^2/5 + z^4/7 + ... )
1558
rslt = aa/ii + z2*rslt
1560
rslt = ( HLF + rslt/(yy+1)**2 )/(yy+1)
1409
1568
module avh_olo_dp_dilog
1410
1569
!***********************************************************************
1411
1570
! /1 ln(1-zz*t)
7443
!*******************************************************************
7445
!*******************************************************************
7446
subroutine db0cc( rslt ,pp,m1,m2 )
7448
use avh_olo_dp_bub ,only: dbub0
7449
use avh_olo_dp_olog ,only: olog
7452
,intent(out) :: rslt(0:2)
7456
,intent(in) :: m1,m2
7461
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
7462
character(26+99) ,parameter :: warning=&
7463
'WARNING from OneLOop db0: '//warnonshell
7464
if (initz) call init
7470
if (aimag(ss).ne.RZRO) then
7471
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
7472
,'ss has non-zero imaginary part, putting it to zero.'
7479
if (hh.gt.RZRO) then
7480
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
7481
,'r1 has positive imaginary part, switching its sign.'
7482
r1 = acmplx( am1 ,-hh )
7484
am1 = abs(am1) + abs(hh)
7488
if (hh.gt.RZRO) then
7489
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
7490
,'r2 has positive imaginary part, switching its sign.'
7491
r2 = acmplx( am2 ,-hh )
7493
am2 = abs(am2) + abs(hh)
7497
mulocal2 = mulocal*mulocal
7499
if (am1.gt.am2) then
7500
ch=r1 ; r1=r2 ; r2=ch
7501
hh=am1;am1=am2;am2=hh
7505
if (nonzerothrs) then
7507
if (app.lt.hh) app = 0
7508
if (am1.lt.hh) am1 = 0
7509
if (am2.lt.hh) am2 = 0
7510
if (ssr2.lt.hh) ssr2 = 0
7511
elseif (wunit.gt.0) then
7512
hh = onshellthrs*max(app,max(am1,am2))
7513
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
7514
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
7515
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
7516
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
7519
rslt(0)=0;rslt(1)=0;rslt(2)=0
7521
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
7523
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
7525
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
7528
if (punit.gt.0) then
7529
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
7530
write(punit,*) ' pp:',trim(myprint(pp))
7531
write(punit,*) ' m1:',trim(myprint(m1))
7532
write(punit,*) ' m2:',trim(myprint(m2))
7533
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
7534
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
7535
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
7539
subroutine db0ccr( rslt ,pp,m1,m2 ,rmu )
7541
use avh_olo_dp_bub ,only: dbub0
7542
use avh_olo_dp_olog ,only: olog
7545
,intent(out) :: rslt(0:2)
7549
,intent(in) :: m1,m2
7556
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
7557
character(26+99) ,parameter :: warning=&
7558
'WARNING from OneLOop db0: '//warnonshell
7559
if (initz) call init
7565
if (aimag(ss).ne.RZRO) then
7566
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
7567
,'ss has non-zero imaginary part, putting it to zero.'
7574
if (hh.gt.RZRO) then
7575
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
7576
,'r1 has positive imaginary part, switching its sign.'
7577
r1 = acmplx( am1 ,-hh )
7579
am1 = abs(am1) + abs(hh)
7583
if (hh.gt.RZRO) then
7584
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
7585
,'r2 has positive imaginary part, switching its sign.'
7586
r2 = acmplx( am2 ,-hh )
7588
am2 = abs(am2) + abs(hh)
7592
mulocal2 = mulocal*mulocal
7594
if (am1.gt.am2) then
7595
ch=r1 ; r1=r2 ; r2=ch
7596
hh=am1;am1=am2;am2=hh
7600
if (nonzerothrs) then
7602
if (app.lt.hh) app = 0
7603
if (am1.lt.hh) am1 = 0
7604
if (am2.lt.hh) am2 = 0
7605
if (ssr2.lt.hh) ssr2 = 0
7606
elseif (wunit.gt.0) then
7607
hh = onshellthrs*max(app,max(am1,am2))
7608
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
7609
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
7610
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
7611
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
7614
rslt(0)=0;rslt(1)=0;rslt(2)=0
7616
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
7618
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
7620
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
7623
if (punit.gt.0) then
7624
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
7625
write(punit,*) ' pp:',trim(myprint(pp))
7626
write(punit,*) ' m1:',trim(myprint(m1))
7627
write(punit,*) ' m2:',trim(myprint(m2))
7628
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
7629
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
7630
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
7634
subroutine db0rc( rslt ,pp ,m1,m2 )
7636
use avh_olo_dp_bub ,only: dbub0
7637
use avh_olo_dp_olog ,only: olog
7640
,intent(out) :: rslt(0:2)
7644
,intent(in) :: m1,m2
7649
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
7650
character(26+99) ,parameter :: warning=&
7651
'WARNING from OneLOop db0: '//warnonshell
7652
if (initz) call init
7661
if (hh.gt.RZRO) then
7662
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
7663
,'r1 has positive imaginary part, switching its sign.'
7664
r1 = acmplx( am1 ,-hh )
7666
am1 = abs(am1) + abs(hh)
7670
if (hh.gt.RZRO) then
7671
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
7672
,'r2 has positive imaginary part, switching its sign.'
7673
r2 = acmplx( am2 ,-hh )
7675
am2 = abs(am2) + abs(hh)
7679
mulocal2 = mulocal*mulocal
7681
if (am1.gt.am2) then
7682
ch=r1 ; r1=r2 ; r2=ch
7683
hh=am1;am1=am2;am2=hh
7687
if (nonzerothrs) then
7689
if (app.lt.hh) app = 0
7690
if (am1.lt.hh) am1 = 0
7691
if (am2.lt.hh) am2 = 0
7692
if (ssr2.lt.hh) ssr2 = 0
7693
elseif (wunit.gt.0) then
7694
hh = onshellthrs*max(app,max(am1,am2))
7695
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
7696
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
7697
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
7698
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
7701
rslt(0)=0;rslt(1)=0;rslt(2)=0
7703
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
7705
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
7707
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
7710
if (punit.gt.0) then
7711
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
7712
write(punit,*) ' pp:',trim(myprint(pp))
7713
write(punit,*) ' m1:',trim(myprint(m1))
7714
write(punit,*) ' m2:',trim(myprint(m2))
7715
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
7716
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
7717
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
7721
subroutine db0rcr( rslt ,pp,m1,m2 ,rmu )
7723
use avh_olo_dp_bub ,only: dbub0
7724
use avh_olo_dp_olog ,only: olog
7727
,intent(out) :: rslt(0:2)
7731
,intent(in) :: m1,m2
7738
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
7739
character(26+99) ,parameter :: warning=&
7740
'WARNING from OneLOop db0: '//warnonshell
7741
if (initz) call init
7750
if (hh.gt.RZRO) then
7751
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
7752
,'r1 has positive imaginary part, switching its sign.'
7753
r1 = acmplx( am1 ,-hh )
7755
am1 = abs(am1) + abs(hh)
7759
if (hh.gt.RZRO) then
7760
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
7761
,'r2 has positive imaginary part, switching its sign.'
7762
r2 = acmplx( am2 ,-hh )
7764
am2 = abs(am2) + abs(hh)
7768
mulocal2 = mulocal*mulocal
7770
if (am1.gt.am2) then
7771
ch=r1 ; r1=r2 ; r2=ch
7772
hh=am1;am1=am2;am2=hh
7776
if (nonzerothrs) then
7778
if (app.lt.hh) app = 0
7779
if (am1.lt.hh) am1 = 0
7780
if (am2.lt.hh) am2 = 0
7781
if (ssr2.lt.hh) ssr2 = 0
7782
elseif (wunit.gt.0) then
7783
hh = onshellthrs*max(app,max(am1,am2))
7784
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
7785
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
7786
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
7787
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
7790
rslt(0)=0;rslt(1)=0;rslt(2)=0
7792
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
7794
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
7796
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
7799
if (punit.gt.0) then
7800
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
7801
write(punit,*) ' pp:',trim(myprint(pp))
7802
write(punit,*) ' m1:',trim(myprint(m1))
7803
write(punit,*) ' m2:',trim(myprint(m2))
7804
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
7805
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
7806
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
7810
subroutine db0rr( rslt ,pp ,m1,m2 )
7812
use avh_olo_dp_bub ,only: dbub0
7813
use avh_olo_dp_olog ,only: olog
7816
,intent(out) :: rslt(0:2)
7820
,intent(in) :: m1,m2
7825
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
7826
character(26+99) ,parameter :: warning=&
7827
'WARNING from OneLOop db0: '//warnonshell
7828
if (initz) call init
7840
mulocal2 = mulocal*mulocal
7842
if (am1.gt.am2) then
7843
ch=r1 ; r1=r2 ; r2=ch
7844
hh=am1;am1=am2;am2=hh
7848
if (nonzerothrs) then
7850
if (app.lt.hh) app = 0
7851
if (am1.lt.hh) am1 = 0
7852
if (am2.lt.hh) am2 = 0
7853
if (ssr2.lt.hh) ssr2 = 0
7854
elseif (wunit.gt.0) then
7855
hh = onshellthrs*max(app,max(am1,am2))
7856
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
7857
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
7858
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
7859
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
7862
rslt(0)=0;rslt(1)=0;rslt(2)=0
7864
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
7866
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
7868
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
7871
if (punit.gt.0) then
7872
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
7873
write(punit,*) ' pp:',trim(myprint(pp))
7874
write(punit,*) ' m1:',trim(myprint(m1))
7875
write(punit,*) ' m2:',trim(myprint(m2))
7876
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
7877
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
7878
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
7882
subroutine db0rrr( rslt ,pp ,m1,m2 ,rmu )
7884
use avh_olo_dp_bub ,only: dbub0
7885
use avh_olo_dp_olog ,only: olog
7888
,intent(out) :: rslt(0:2)
7892
,intent(in) :: m1,m2
7899
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
7900
character(26+99) ,parameter :: warning=&
7901
'WARNING from OneLOop db0: '//warnonshell
7902
if (initz) call init
7914
mulocal2 = mulocal*mulocal
7916
if (am1.gt.am2) then
7917
ch=r1 ; r1=r2 ; r2=ch
7918
hh=am1;am1=am2;am2=hh
7922
if (nonzerothrs) then
7924
if (app.lt.hh) app = 0
7925
if (am1.lt.hh) am1 = 0
7926
if (am2.lt.hh) am2 = 0
7927
if (ssr2.lt.hh) ssr2 = 0
7928
elseif (wunit.gt.0) then
7929
hh = onshellthrs*max(app,max(am1,am2))
7930
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
7931
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
7932
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
7933
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
7936
rslt(0)=0;rslt(1)=0;rslt(2)=0
7938
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
7940
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
7942
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
7945
if (punit.gt.0) then
7946
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
7947
write(punit,*) ' pp:',trim(myprint(pp))
7948
write(punit,*) ' m1:',trim(myprint(m1))
7949
write(punit,*) ' m2:',trim(myprint(m2))
7950
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
7951
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
7952
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
7190
7958
!*******************************************************************
7191
7959
! Return the Papparino-Veltman functions b11,b00,b1,b0 , for
12331
13117
rslt = ( log(rr) + IPI*jj )/(yy-1)
13121
function log2_r(xx,iph) result(rslt)
13122
!***********************************************************************
13123
!***********************************************************************
13126
integer ,intent(in) :: iph
13129
rslt = log2_c(xx*CONE,iph)
13133
function log2_c(xx,iph) result(rslt)
13134
!***********************************************************************
13135
!***********************************************************************
13138
integer ,intent(in) :: iph
13143
integer :: nn,ii,jj
13148
if (rex.eq.RZRO.and.imx.eq.RZRO) then
13149
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop log2_c: ' &
13150
,'xx = 0, returning 0'
13155
if (mod(iph,2).eq.0) then ;yy= xx ;jj=iph
13156
else ;yy=-xx ;jj=iph+sgnRe(imx)
13160
rslt = ( olog1(yy,jj) - 1 )/(yy-1)
13166
if (aa.ge.thrs(6,prcpar)) then
13167
rslt = (log(yy)/zz-1)/zz
13169
elseif (aa.ge.thrs(5,prcpar)) then ;nn=ntrm(6,prcpar)
13170
elseif (aa.ge.thrs(4,prcpar)) then ;nn=ntrm(5,prcpar)
13171
elseif (aa.ge.thrs(3,prcpar)) then ;nn=ntrm(4,prcpar)
13172
elseif (aa.ge.thrs(2,prcpar)) then ;nn=ntrm(3,prcpar)
13173
elseif (aa.ge.thrs(1,prcpar)) then ;nn=ntrm(2,prcpar)
13174
else ;nn=ntrm(1,prcpar)
13176
! convergence acceleration using z=(y-1)/(y+1)
13177
! rslt = -1/(y+1) + 2/(y+1)^2 * ( z/3 + z^3/5 + z^5/7 + ... )
13184
rslt = aa/ii + z2*rslt
13186
rslt = ( -1 + zz*rslt/(yy+1) )/(yy+1)
13190
function log3_r(xx,iph) result(rslt)
13191
!***********************************************************************
13192
!***********************************************************************
13195
integer ,intent(in) :: iph
13198
rslt = log3_c(xx*CONE,iph)
13202
function log3_c(xx,iph) result(rslt)
13203
!***********************************************************************
13204
!***********************************************************************
13207
integer ,intent(in) :: iph
13209
:: rslt ,yy,zz,z2,HLF
13212
integer :: nn,ii,jj
13217
if (rex.eq.RZRO.and.imx.eq.RZRO) then
13218
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop log2_c: ' &
13219
,'xx = 0, returning 0'
13226
if (mod(iph,2).eq.0) then ;yy= xx ;jj=iph
13227
else ;yy=-xx ;jj=iph+sgnRe(imx)
13231
rslt = ( olog2(xx,jj) + HLF )/(yy-1)
13237
if (aa.ge.thrs(6,prcpar)) then
13238
rslt = ((log(yy)/zz-1)/zz+HLF)/zz
13240
elseif (aa.ge.thrs(5,prcpar)) then ;nn=ntrm(6,prcpar)
13241
elseif (aa.ge.thrs(4,prcpar)) then ;nn=ntrm(5,prcpar)
13242
elseif (aa.ge.thrs(3,prcpar)) then ;nn=ntrm(4,prcpar)
13243
elseif (aa.ge.thrs(2,prcpar)) then ;nn=ntrm(3,prcpar)
13244
elseif (aa.ge.thrs(1,prcpar)) then ;nn=ntrm(2,prcpar)
13245
else ;nn=ntrm(1,prcpar)
13247
! convergence acceleration using z=(y-1)/(y+1)
13248
! rslt = 1/(2*(y+1)) + 2/(y+1)^3 * ( 1/3 + z^2/5 + z^4/7 + ... )
13255
rslt = aa/ii + z2*rslt
13257
rslt = ( HLF + rslt/(yy+1)**2 )/(yy+1)
12337
13265
module avh_olo_qp_dilog
12338
13266
!***********************************************************************
12339
13267
! /1 ln(1-zz*t)
18115
19138
end subroutine
19140
!*******************************************************************
19142
!*******************************************************************
19143
subroutine db0cc( rslt ,pp,m1,m2 )
19145
use avh_olo_qp_bub ,only: dbub0
19146
use avh_olo_qp_olog ,only: olog
19149
,intent(out) :: rslt(0:2)
19153
,intent(in) :: m1,m2
19158
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
19159
character(26+99) ,parameter :: warning=&
19160
'WARNING from OneLOop db0: '//warnonshell
19161
if (initz) call init
19167
if (aimag(ss).ne.RZRO) then
19168
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
19169
,'ss has non-zero imaginary part, putting it to zero.'
19176
if (hh.gt.RZRO) then
19177
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
19178
,'r1 has positive imaginary part, switching its sign.'
19179
r1 = acmplx( am1 ,-hh )
19181
am1 = abs(am1) + abs(hh)
19185
if (hh.gt.RZRO) then
19186
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
19187
,'r2 has positive imaginary part, switching its sign.'
19188
r2 = acmplx( am2 ,-hh )
19190
am2 = abs(am2) + abs(hh)
19194
mulocal2 = mulocal*mulocal
19196
if (am1.gt.am2) then
19197
ch=r1 ; r1=r2 ; r2=ch
19198
hh=am1;am1=am2;am2=hh
19202
if (nonzerothrs) then
19204
if (app.lt.hh) app = 0
19205
if (am1.lt.hh) am1 = 0
19206
if (am2.lt.hh) am2 = 0
19207
if (ssr2.lt.hh) ssr2 = 0
19208
elseif (wunit.gt.0) then
19209
hh = onshellthrs*max(app,max(am1,am2))
19210
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
19211
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
19212
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
19213
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
19216
rslt(0)=0;rslt(1)=0;rslt(2)=0
19218
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
19220
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
19222
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
19225
if (punit.gt.0) then
19226
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
19227
write(punit,*) ' pp:',trim(myprint(pp))
19228
write(punit,*) ' m1:',trim(myprint(m1))
19229
write(punit,*) ' m2:',trim(myprint(m2))
19230
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
19231
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
19232
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
19236
subroutine db0ccr( rslt ,pp,m1,m2 ,rmu )
19238
use avh_olo_qp_bub ,only: dbub0
19239
use avh_olo_qp_olog ,only: olog
19242
,intent(out) :: rslt(0:2)
19246
,intent(in) :: m1,m2
19253
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
19254
character(26+99) ,parameter :: warning=&
19255
'WARNING from OneLOop db0: '//warnonshell
19256
if (initz) call init
19262
if (aimag(ss).ne.RZRO) then
19263
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
19264
,'ss has non-zero imaginary part, putting it to zero.'
19271
if (hh.gt.RZRO) then
19272
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
19273
,'r1 has positive imaginary part, switching its sign.'
19274
r1 = acmplx( am1 ,-hh )
19276
am1 = abs(am1) + abs(hh)
19280
if (hh.gt.RZRO) then
19281
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
19282
,'r2 has positive imaginary part, switching its sign.'
19283
r2 = acmplx( am2 ,-hh )
19285
am2 = abs(am2) + abs(hh)
19289
mulocal2 = mulocal*mulocal
19291
if (am1.gt.am2) then
19292
ch=r1 ; r1=r2 ; r2=ch
19293
hh=am1;am1=am2;am2=hh
19297
if (nonzerothrs) then
19299
if (app.lt.hh) app = 0
19300
if (am1.lt.hh) am1 = 0
19301
if (am2.lt.hh) am2 = 0
19302
if (ssr2.lt.hh) ssr2 = 0
19303
elseif (wunit.gt.0) then
19304
hh = onshellthrs*max(app,max(am1,am2))
19305
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
19306
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
19307
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
19308
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
19311
rslt(0)=0;rslt(1)=0;rslt(2)=0
19313
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
19315
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
19317
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
19320
if (punit.gt.0) then
19321
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
19322
write(punit,*) ' pp:',trim(myprint(pp))
19323
write(punit,*) ' m1:',trim(myprint(m1))
19324
write(punit,*) ' m2:',trim(myprint(m2))
19325
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
19326
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
19327
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
19331
subroutine db0rc( rslt ,pp ,m1,m2 )
19333
use avh_olo_qp_bub ,only: dbub0
19334
use avh_olo_qp_olog ,only: olog
19337
,intent(out) :: rslt(0:2)
19341
,intent(in) :: m1,m2
19346
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
19347
character(26+99) ,parameter :: warning=&
19348
'WARNING from OneLOop db0: '//warnonshell
19349
if (initz) call init
19358
if (hh.gt.RZRO) then
19359
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
19360
,'r1 has positive imaginary part, switching its sign.'
19361
r1 = acmplx( am1 ,-hh )
19363
am1 = abs(am1) + abs(hh)
19367
if (hh.gt.RZRO) then
19368
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
19369
,'r2 has positive imaginary part, switching its sign.'
19370
r2 = acmplx( am2 ,-hh )
19372
am2 = abs(am2) + abs(hh)
19376
mulocal2 = mulocal*mulocal
19378
if (am1.gt.am2) then
19379
ch=r1 ; r1=r2 ; r2=ch
19380
hh=am1;am1=am2;am2=hh
19384
if (nonzerothrs) then
19386
if (app.lt.hh) app = 0
19387
if (am1.lt.hh) am1 = 0
19388
if (am2.lt.hh) am2 = 0
19389
if (ssr2.lt.hh) ssr2 = 0
19390
elseif (wunit.gt.0) then
19391
hh = onshellthrs*max(app,max(am1,am2))
19392
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
19393
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
19394
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
19395
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
19398
rslt(0)=0;rslt(1)=0;rslt(2)=0
19400
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
19402
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
19404
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
19407
if (punit.gt.0) then
19408
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
19409
write(punit,*) ' pp:',trim(myprint(pp))
19410
write(punit,*) ' m1:',trim(myprint(m1))
19411
write(punit,*) ' m2:',trim(myprint(m2))
19412
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
19413
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
19414
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
19418
subroutine db0rcr( rslt ,pp,m1,m2 ,rmu )
19420
use avh_olo_qp_bub ,only: dbub0
19421
use avh_olo_qp_olog ,only: olog
19424
,intent(out) :: rslt(0:2)
19428
,intent(in) :: m1,m2
19435
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
19436
character(26+99) ,parameter :: warning=&
19437
'WARNING from OneLOop db0: '//warnonshell
19438
if (initz) call init
19447
if (hh.gt.RZRO) then
19448
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
19449
,'r1 has positive imaginary part, switching its sign.'
19450
r1 = acmplx( am1 ,-hh )
19452
am1 = abs(am1) + abs(hh)
19456
if (hh.gt.RZRO) then
19457
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
19458
,'r2 has positive imaginary part, switching its sign.'
19459
r2 = acmplx( am2 ,-hh )
19461
am2 = abs(am2) + abs(hh)
19465
mulocal2 = mulocal*mulocal
19467
if (am1.gt.am2) then
19468
ch=r1 ; r1=r2 ; r2=ch
19469
hh=am1;am1=am2;am2=hh
19473
if (nonzerothrs) then
19475
if (app.lt.hh) app = 0
19476
if (am1.lt.hh) am1 = 0
19477
if (am2.lt.hh) am2 = 0
19478
if (ssr2.lt.hh) ssr2 = 0
19479
elseif (wunit.gt.0) then
19480
hh = onshellthrs*max(app,max(am1,am2))
19481
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
19482
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
19483
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
19484
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
19487
rslt(0)=0;rslt(1)=0;rslt(2)=0
19489
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
19491
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
19493
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
19496
if (punit.gt.0) then
19497
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
19498
write(punit,*) ' pp:',trim(myprint(pp))
19499
write(punit,*) ' m1:',trim(myprint(m1))
19500
write(punit,*) ' m2:',trim(myprint(m2))
19501
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
19502
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
19503
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
19507
subroutine db0rr( rslt ,pp ,m1,m2 )
19509
use avh_olo_qp_bub ,only: dbub0
19510
use avh_olo_qp_olog ,only: olog
19513
,intent(out) :: rslt(0:2)
19517
,intent(in) :: m1,m2
19522
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
19523
character(26+99) ,parameter :: warning=&
19524
'WARNING from OneLOop db0: '//warnonshell
19525
if (initz) call init
19537
mulocal2 = mulocal*mulocal
19539
if (am1.gt.am2) then
19540
ch=r1 ; r1=r2 ; r2=ch
19541
hh=am1;am1=am2;am2=hh
19545
if (nonzerothrs) then
19547
if (app.lt.hh) app = 0
19548
if (am1.lt.hh) am1 = 0
19549
if (am2.lt.hh) am2 = 0
19550
if (ssr2.lt.hh) ssr2 = 0
19551
elseif (wunit.gt.0) then
19552
hh = onshellthrs*max(app,max(am1,am2))
19553
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
19554
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
19555
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
19556
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
19559
rslt(0)=0;rslt(1)=0;rslt(2)=0
19561
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
19563
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
19565
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
19568
if (punit.gt.0) then
19569
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
19570
write(punit,*) ' pp:',trim(myprint(pp))
19571
write(punit,*) ' m1:',trim(myprint(m1))
19572
write(punit,*) ' m2:',trim(myprint(m2))
19573
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
19574
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
19575
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
19579
subroutine db0rrr( rslt ,pp ,m1,m2 ,rmu )
19581
use avh_olo_qp_bub ,only: dbub0
19582
use avh_olo_qp_olog ,only: olog
19585
,intent(out) :: rslt(0:2)
19589
,intent(in) :: m1,m2
19596
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
19597
character(26+99) ,parameter :: warning=&
19598
'WARNING from OneLOop db0: '//warnonshell
19599
if (initz) call init
19611
mulocal2 = mulocal*mulocal
19613
if (am1.gt.am2) then
19614
ch=r1 ; r1=r2 ; r2=ch
19615
hh=am1;am1=am2;am2=hh
19619
if (nonzerothrs) then
19621
if (app.lt.hh) app = 0
19622
if (am1.lt.hh) am1 = 0
19623
if (am2.lt.hh) am2 = 0
19624
if (ssr2.lt.hh) ssr2 = 0
19625
elseif (wunit.gt.0) then
19626
hh = onshellthrs*max(app,max(am1,am2))
19627
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
19628
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
19629
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
19630
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
19633
rslt(0)=0;rslt(1)=0;rslt(2)=0
19635
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
19637
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
19639
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
19642
if (punit.gt.0) then
19643
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
19644
write(punit,*) ' pp:',trim(myprint(pp))
19645
write(punit,*) ' m1:',trim(myprint(m1))
19646
write(punit,*) ' m2:',trim(myprint(m2))
19647
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
19648
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
19649
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
18118
19655
!*******************************************************************
18119
19656
! Return the Papparino-Veltman functions b11,b00,b1,b0 , for
23282
24837
rslt = ( log(rr) + IPI*jj )/(yy-1)
24841
function log2_r(xx,iph) result(rslt)
24842
!***********************************************************************
24843
!***********************************************************************
24846
integer ,intent(in) :: iph
24849
rslt = log2_c(xx*CONE,iph)
24853
function log2_c(xx,iph) result(rslt)
24854
!***********************************************************************
24855
!***********************************************************************
24858
integer ,intent(in) :: iph
24863
integer :: nn,ii,jj
24868
if (rex.eq.RZRO.and.imx.eq.RZRO) then
24869
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop log2_c: ' &
24870
,'xx = 0, returning 0'
24875
if (mod(iph,2).eq.0) then ;yy= xx ;jj=iph
24876
else ;yy=-xx ;jj=iph+sgnRe(imx)
24880
rslt = ( olog1(yy,jj) - 1 )/(yy-1)
24886
if (aa.ge.thrs(6,prcpar)) then
24887
rslt = (log(yy)/zz-1)/zz
24889
elseif (aa.ge.thrs(5,prcpar)) then ;nn=ntrm(6,prcpar)
24890
elseif (aa.ge.thrs(4,prcpar)) then ;nn=ntrm(5,prcpar)
24891
elseif (aa.ge.thrs(3,prcpar)) then ;nn=ntrm(4,prcpar)
24892
elseif (aa.ge.thrs(2,prcpar)) then ;nn=ntrm(3,prcpar)
24893
elseif (aa.ge.thrs(1,prcpar)) then ;nn=ntrm(2,prcpar)
24894
else ;nn=ntrm(1,prcpar)
24896
! convergence acceleration using z=(y-1)/(y+1)
24897
! rslt = -1/(y+1) + 2/(y+1)^2 * ( z/3 + z^3/5 + z^5/7 + ... )
24904
rslt = aa/ii + z2*rslt
24906
rslt = ( -1 + zz*rslt/(yy+1) )/(yy+1)
24910
function log3_r(xx,iph) result(rslt)
24911
!***********************************************************************
24912
!***********************************************************************
24915
integer ,intent(in) :: iph
24918
rslt = log3_c(xx*CONE,iph)
24922
function log3_c(xx,iph) result(rslt)
24923
!***********************************************************************
24924
!***********************************************************************
24927
integer ,intent(in) :: iph
24929
:: rslt ,yy,zz,z2,HLF
24932
integer :: nn,ii,jj
24937
if (rex.eq.RZRO.and.imx.eq.RZRO) then
24938
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop log2_c: ' &
24939
,'xx = 0, returning 0'
24946
if (mod(iph,2).eq.0) then ;yy= xx ;jj=iph
24947
else ;yy=-xx ;jj=iph+sgnRe(imx)
24951
rslt = ( olog2(xx,jj) + HLF )/(yy-1)
24957
if (aa.ge.thrs(6,prcpar)) then
24958
rslt = ((log(yy)/zz-1)/zz+HLF)/zz
24960
elseif (aa.ge.thrs(5,prcpar)) then ;nn=ntrm(6,prcpar)
24961
elseif (aa.ge.thrs(4,prcpar)) then ;nn=ntrm(5,prcpar)
24962
elseif (aa.ge.thrs(3,prcpar)) then ;nn=ntrm(4,prcpar)
24963
elseif (aa.ge.thrs(2,prcpar)) then ;nn=ntrm(3,prcpar)
24964
elseif (aa.ge.thrs(1,prcpar)) then ;nn=ntrm(2,prcpar)
24965
else ;nn=ntrm(1,prcpar)
24967
! convergence acceleration using z=(y-1)/(y+1)
24968
! rslt = 1/(2*(y+1)) + 2/(y+1)^3 * ( 1/3 + z^2/5 + z^4/7 + ... )
24975
rslt = aa/ii + z2*rslt
24977
rslt = ( HLF + rslt/(yy+1)**2 )/(yy+1)
23288
24985
module avh_olo_mp_dilog
23289
24986
!***********************************************************************
23290
24987
! /1 ln(1-zz*t)
29066
30858
end subroutine
30860
!*******************************************************************
30862
!*******************************************************************
30863
subroutine db0cc( rslt ,pp,m1,m2 )
30865
use avh_olo_mp_bub ,only: dbub0
30866
use avh_olo_mp_olog ,only: olog
30869
,intent(out) :: rslt(0:2)
30873
,intent(in) :: m1,m2
30878
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
30879
character(26+99) ,parameter :: warning=&
30880
'WARNING from OneLOop db0: '//warnonshell
30881
if (initz) call init
30887
if (aimag(ss).ne.RZRO) then
30888
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
30889
,'ss has non-zero imaginary part, putting it to zero.'
30896
if (hh.gt.RZRO) then
30897
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
30898
,'r1 has positive imaginary part, switching its sign.'
30899
r1 = acmplx( am1 ,-hh )
30901
am1 = abs(am1) + abs(hh)
30905
if (hh.gt.RZRO) then
30906
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
30907
,'r2 has positive imaginary part, switching its sign.'
30908
r2 = acmplx( am2 ,-hh )
30910
am2 = abs(am2) + abs(hh)
30914
mulocal2 = mulocal*mulocal
30916
if (am1.gt.am2) then
30917
ch=r1 ; r1=r2 ; r2=ch
30918
hh=am1;am1=am2;am2=hh
30922
if (nonzerothrs) then
30924
if (app.lt.hh) app = 0
30925
if (am1.lt.hh) am1 = 0
30926
if (am2.lt.hh) am2 = 0
30927
if (ssr2.lt.hh) ssr2 = 0
30928
elseif (wunit.gt.0) then
30929
hh = onshellthrs*max(app,max(am1,am2))
30930
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
30931
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
30932
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
30933
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
30936
rslt(0)=0;rslt(1)=0;rslt(2)=0
30938
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
30940
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
30942
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
30945
if (punit.gt.0) then
30946
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
30947
write(punit,*) ' pp:',trim(myprint(pp))
30948
write(punit,*) ' m1:',trim(myprint(m1))
30949
write(punit,*) ' m2:',trim(myprint(m2))
30950
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
30951
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
30952
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
30956
subroutine db0ccr( rslt ,pp,m1,m2 ,rmu )
30958
use avh_olo_mp_bub ,only: dbub0
30959
use avh_olo_mp_olog ,only: olog
30962
,intent(out) :: rslt(0:2)
30966
,intent(in) :: m1,m2
30973
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
30974
character(26+99) ,parameter :: warning=&
30975
'WARNING from OneLOop db0: '//warnonshell
30976
if (initz) call init
30982
if (aimag(ss).ne.RZRO) then
30983
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
30984
,'ss has non-zero imaginary part, putting it to zero.'
30991
if (hh.gt.RZRO) then
30992
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
30993
,'r1 has positive imaginary part, switching its sign.'
30994
r1 = acmplx( am1 ,-hh )
30996
am1 = abs(am1) + abs(hh)
31000
if (hh.gt.RZRO) then
31001
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
31002
,'r2 has positive imaginary part, switching its sign.'
31003
r2 = acmplx( am2 ,-hh )
31005
am2 = abs(am2) + abs(hh)
31009
mulocal2 = mulocal*mulocal
31011
if (am1.gt.am2) then
31012
ch=r1 ; r1=r2 ; r2=ch
31013
hh=am1;am1=am2;am2=hh
31017
if (nonzerothrs) then
31019
if (app.lt.hh) app = 0
31020
if (am1.lt.hh) am1 = 0
31021
if (am2.lt.hh) am2 = 0
31022
if (ssr2.lt.hh) ssr2 = 0
31023
elseif (wunit.gt.0) then
31024
hh = onshellthrs*max(app,max(am1,am2))
31025
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
31026
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
31027
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
31028
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
31031
rslt(0)=0;rslt(1)=0;rslt(2)=0
31033
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
31035
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
31037
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
31040
if (punit.gt.0) then
31041
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
31042
write(punit,*) ' pp:',trim(myprint(pp))
31043
write(punit,*) ' m1:',trim(myprint(m1))
31044
write(punit,*) ' m2:',trim(myprint(m2))
31045
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
31046
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
31047
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
31051
subroutine db0rc( rslt ,pp ,m1,m2 )
31053
use avh_olo_mp_bub ,only: dbub0
31054
use avh_olo_mp_olog ,only: olog
31057
,intent(out) :: rslt(0:2)
31061
,intent(in) :: m1,m2
31066
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
31067
character(26+99) ,parameter :: warning=&
31068
'WARNING from OneLOop db0: '//warnonshell
31069
if (initz) call init
31078
if (hh.gt.RZRO) then
31079
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
31080
,'r1 has positive imaginary part, switching its sign.'
31081
r1 = acmplx( am1 ,-hh )
31083
am1 = abs(am1) + abs(hh)
31087
if (hh.gt.RZRO) then
31088
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
31089
,'r2 has positive imaginary part, switching its sign.'
31090
r2 = acmplx( am2 ,-hh )
31092
am2 = abs(am2) + abs(hh)
31096
mulocal2 = mulocal*mulocal
31098
if (am1.gt.am2) then
31099
ch=r1 ; r1=r2 ; r2=ch
31100
hh=am1;am1=am2;am2=hh
31104
if (nonzerothrs) then
31106
if (app.lt.hh) app = 0
31107
if (am1.lt.hh) am1 = 0
31108
if (am2.lt.hh) am2 = 0
31109
if (ssr2.lt.hh) ssr2 = 0
31110
elseif (wunit.gt.0) then
31111
hh = onshellthrs*max(app,max(am1,am2))
31112
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
31113
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
31114
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
31115
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
31118
rslt(0)=0;rslt(1)=0;rslt(2)=0
31120
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
31122
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
31124
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
31127
if (punit.gt.0) then
31128
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
31129
write(punit,*) ' pp:',trim(myprint(pp))
31130
write(punit,*) ' m1:',trim(myprint(m1))
31131
write(punit,*) ' m2:',trim(myprint(m2))
31132
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
31133
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
31134
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
31138
subroutine db0rcr( rslt ,pp,m1,m2 ,rmu )
31140
use avh_olo_mp_bub ,only: dbub0
31141
use avh_olo_mp_olog ,only: olog
31144
,intent(out) :: rslt(0:2)
31148
,intent(in) :: m1,m2
31155
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
31156
character(26+99) ,parameter :: warning=&
31157
'WARNING from OneLOop db0: '//warnonshell
31158
if (initz) call init
31167
if (hh.gt.RZRO) then
31168
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop db0: ' &
31169
,'r1 has positive imaginary part, switching its sign.'
31170
r1 = acmplx( am1 ,-hh )
31172
am1 = abs(am1) + abs(hh)
31176
if (hh.gt.RZRO) then
31177
if (eunit.gt.0) write(eunit,*) 'ERROR in OneLOop b0: ' &
31178
,'r2 has positive imaginary part, switching its sign.'
31179
r2 = acmplx( am2 ,-hh )
31181
am2 = abs(am2) + abs(hh)
31185
mulocal2 = mulocal*mulocal
31187
if (am1.gt.am2) then
31188
ch=r1 ; r1=r2 ; r2=ch
31189
hh=am1;am1=am2;am2=hh
31193
if (nonzerothrs) then
31195
if (app.lt.hh) app = 0
31196
if (am1.lt.hh) am1 = 0
31197
if (am2.lt.hh) am2 = 0
31198
if (ssr2.lt.hh) ssr2 = 0
31199
elseif (wunit.gt.0) then
31200
hh = onshellthrs*max(app,max(am1,am2))
31201
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
31202
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
31203
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
31204
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
31207
rslt(0)=0;rslt(1)=0;rslt(2)=0
31209
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
31211
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
31213
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
31216
if (punit.gt.0) then
31217
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
31218
write(punit,*) ' pp:',trim(myprint(pp))
31219
write(punit,*) ' m1:',trim(myprint(m1))
31220
write(punit,*) ' m2:',trim(myprint(m2))
31221
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
31222
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
31223
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
31227
subroutine db0rr( rslt ,pp ,m1,m2 )
31229
use avh_olo_mp_bub ,only: dbub0
31230
use avh_olo_mp_olog ,only: olog
31233
,intent(out) :: rslt(0:2)
31237
,intent(in) :: m1,m2
31242
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
31243
character(26+99) ,parameter :: warning=&
31244
'WARNING from OneLOop db0: '//warnonshell
31245
if (initz) call init
31257
mulocal2 = mulocal*mulocal
31259
if (am1.gt.am2) then
31260
ch=r1 ; r1=r2 ; r2=ch
31261
hh=am1;am1=am2;am2=hh
31265
if (nonzerothrs) then
31267
if (app.lt.hh) app = 0
31268
if (am1.lt.hh) am1 = 0
31269
if (am2.lt.hh) am2 = 0
31270
if (ssr2.lt.hh) ssr2 = 0
31271
elseif (wunit.gt.0) then
31272
hh = onshellthrs*max(app,max(am1,am2))
31273
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
31274
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
31275
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
31276
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
31279
rslt(0)=0;rslt(1)=0;rslt(2)=0
31281
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
31283
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
31285
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
31288
if (punit.gt.0) then
31289
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
31290
write(punit,*) ' pp:',trim(myprint(pp))
31291
write(punit,*) ' m1:',trim(myprint(m1))
31292
write(punit,*) ' m2:',trim(myprint(m2))
31293
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
31294
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
31295
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
31299
subroutine db0rrr( rslt ,pp ,m1,m2 ,rmu )
31301
use avh_olo_mp_bub ,only: dbub0
31302
use avh_olo_mp_olog ,only: olog
31305
,intent(out) :: rslt(0:2)
31309
,intent(in) :: m1,m2
31316
:: app,am1,am2,hh,mulocal,mulocal2,ssr2
31317
character(26+99) ,parameter :: warning=&
31318
'WARNING from OneLOop db0: '//warnonshell
31319
if (initz) call init
31331
mulocal2 = mulocal*mulocal
31333
if (am1.gt.am2) then
31334
ch=r1 ; r1=r2 ; r2=ch
31335
hh=am1;am1=am2;am2=hh
31339
if (nonzerothrs) then
31341
if (app.lt.hh) app = 0
31342
if (am1.lt.hh) am1 = 0
31343
if (am2.lt.hh) am2 = 0
31344
if (ssr2.lt.hh) ssr2 = 0
31345
elseif (wunit.gt.0) then
31346
hh = onshellthrs*max(app,max(am1,am2))
31347
if (RZRO.lt.app.and.app.lt.hh) write(wunit,*) warning
31348
if (RZRO.lt.am1.and.am1.lt.hh) write(wunit,*) warning
31349
if (RZRO.lt.am2.and.am2.lt.hh) write(wunit,*) warning
31350
if (RZRO.lt.ssr2.and.ssr2.lt.hh) write(wunit,*) warning
31353
rslt(0)=0;rslt(1)=0;rslt(2)=0
31355
if (am1.eq.RZRO.and.ssr2.eq.RZRO) then
31357
rslt(0) =-( 1 + olog(mulocal2/ss,0)/2 )/ss
31359
call dbub0( rslt(0) ,ss,r1,r2 ,app,am1,am2 )
31362
if (punit.gt.0) then
31363
if (nonzerothrs) write(punit,*) 'onshell:',trim(myprint(onshellthrs))
31364
write(punit,*) ' pp:',trim(myprint(pp))
31365
write(punit,*) ' m1:',trim(myprint(m1))
31366
write(punit,*) ' m2:',trim(myprint(m2))
31367
write(punit,*) 'db0(2):',trim(myprint(rslt(2)))
31368
write(punit,*) 'db0(1):',trim(myprint(rslt(1)))
31369
write(punit,*) 'db0(0):',trim(myprint(rslt(0)))
29069
31375
!*******************************************************************
29070
31376
! Return the Papparino-Veltman functions b11,b00,b1,b0 , for