16 double complex :: m02,m12,m22,m32,m42,m52
17 double complex :: p10,p21,p32,p43,p54,p50,p20,p31
18 double complex :: p42,p53,p40,p51,p30,p41,p52
19 double complex :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3),p5vec(0:3)
20 double complex :: mominv(15), masses2(0:5), momvec(0:3,5)
21 double complex,
allocatable :: acoeff(:),acoeffuv(:)
22 double complex,
allocatable :: bcoeff(:,:),bcoeffuv(:,:)
23 double complex,
allocatable :: ccoeff(:,:,:),ccoeffuv(:,:,:)
24 double complex,
allocatable :: dcoeff(:,:,:,:),dcoeffuv(:,:,:,:)
25 double complex,
allocatable :: ecoeff(:,:,:,:,:),ecoeffuv(:,:,:,:,:)
26 double complex,
allocatable :: fcoeff(:,:,:,:,:,:),fcoeffuv(:,:,:,:,:,:)
27 double complex,
allocatable :: cten(:,:,:,:),ctenuv(:,:,:,:)
28 double complex,
allocatable :: dten(:,:,:,:),dtenuv(:,:,:,:)
29 double complex,
allocatable :: eten(:,:,:,:),etenuv(:,:,:,:)
30 double complex,
allocatable :: ften(:,:,:,:),ftenuv(:,:,:,:)
31 double complex,
allocatable :: dbcoeff(:,:),dbcoeffuv(:,:)
32 double complex,
allocatable :: tncoeff(:),tncoeffuv(:)
33 double complex,
allocatable :: tnten(:),tntenuv(:)
34 double complex :: a0,b0,c0,d0,e0,f0,a0uv,b0uv,db0,db1,db00,db00uv
35 double complex,
parameter :: c0uv=(0d0,0d0),d0uv=(0d0,0d0)
36 double complex,
parameter :: e0uv=(0d0,0d0),f0uv=(0d0,0d0)
37 double precision,
allocatable :: aerr(:),berr(:),cerr(:),derr(:)
38 double precision,
allocatable :: eerr(:),ferr(:),dberr(:)
39 double precision :: muuv2,muir2,deltauv,deltair1,deltair2
40 integer :: rank,nmax,n,rmax
41 integer :: mode,casen,casei
49 call init_cll(nmax,rmax,
"output_cll")
54 call initcachesystem_cll(1,nmax)
79 write(*,*)
'Choose mode od COLLIER :'
80 write (*,*)
' 1) use COLI branch'
81 write (*,*)
' 2) use DD branch'
82 write (*,*)
' 3) use both branches and compare'
96 write(*,
'(/(a))')
' Input does not correspond to available mode'
100 call setmode_cll(mode)
103 write(*,*)
'Choose type of function:'
104 write (*,*)
' 1) 1-point function'
105 write (*,*)
' 2) 2-point function'
106 write (*,*)
' 3) 3-point function'
107 write (*,*)
' 4) 4-point function'
108 write (*,*)
' 5) 5-point function'
109 write (*,*)
' 6) 6-point function'
110 write (*,*)
'12) derivative of 2-point function'
120 write(*,*)
'Choose test case for 1-point function:'
121 write (*,*)
' 1) regular scalar 1-point function'
122 write (*,*)
'10) 1-point coefficients up to rank 2'
131 write(*,
'(/(a)/)')
' Calculating regular scalar 1-point function'
149 write(*,
'(/(a))')
' Calculating 1-point coefficients'
157 allocate(acoeff(0:rank/2))
158 allocate(acoeffuv(0:rank/2))
159 allocate(aerr(0:rank))
167 call a_cll(acoeff,acoeffuv,m02,rank,aerr)
171 allocate(tncoeff(getnc_cll(n,rank)))
172 allocate(tncoeffuv(getnc_cll(n,rank)))
173 call tn_cll(tncoeff,tncoeffuv,masses2(0:2),n,rank,aerr)
176 call writeresulta(casen,casei,acoeff,acoeffuv,masses2(0:0),rank,aerr)
178 deallocate(acoeff,acoeffuv,aerr,tncoeff,tncoeffuv)
182 write(*,
'(/(a))')
' Input does not correspond to predefined sample'
191 write(*,*)
'Choose test case for 2-point function:'
192 write (*,*)
' 1) regular scalar 2-point function'
193 write (*,*)
' 2) scalar 2-point function with small masses'
194 write (*,*)
'10) tensor 2-point function: coefficients up to rank 3'
203 write(*,
'(/(a)/)')
' Calculating regular scalar 2-point function'
210 masses2(0:1) = (/m02,m12/)
213 call b0_cll(b0,p10,m02,m12)
216 call b0_cll(b0,mominv(1:1),masses2(0:1))
227 ' Calculating scalar 2-point function with small masses'
238 call addminf2_cll(m12)
241 masses2(0:1) = (/m02,m12/)
244 call b0_cll(b0,p10,m02,m12)
247 call b0_cll(b0,mominv(1:1),masses2(0:1))
257 write(*,
'(/(a))')
' Calculating 2-point coefficients'
263 mominv(1:1) = (/p10/)
264 masses2(0:1) = (/m02,m12/)
268 allocate(bcoeff(0:rank/2,0:rank))
269 allocate(bcoeffuv(0:rank/2,0:rank))
270 allocate(berr(0:rank))
278 call b_cll(bcoeff,bcoeffuv,p10,m02,m12,rank,berr)
281 call b_cll(bcoeff,bcoeffuv,mominv(1:1),masses2(0:1),rank,berr)
285 allocate(tncoeff(getnc_cll(n,rank)))
286 allocate(tncoeffuv(getnc_cll(n,rank)))
287 call b_cll(tncoeff,tncoeffuv,p10,m02,m12,rank,berr)
289 call b_cll(tncoeff,tncoeffuv,mominv(1:1),masses2(0:1),rank,berr)
291 call tn_cll(tncoeff,tncoeffuv,mominv(1:1),masses2(0:1),n,rank,berr)
294 call writeresultb(casen,casei,bcoeff,bcoeffuv,mominv(1:1),masses2(0:1),rank,berr)
296 deallocate(bcoeff,bcoeffuv,berr,tncoeff,tncoeffuv)
300 write(*,
'(/(a))')
' Input does not correspond to predefined sample'
308 write(*,*)
'Choose test case for 3-point function:'
309 write (*,*)
' 1) regular scalar 3-point function'
310 write (*,*)
' 2) IR-singular scalar 3-point function'
311 write (*,*)
' 3) Mass-singular scalar 3-point function in dimensional regularization'
312 write (*,*)
' 4) Mass-singular scalar 3-point function in mass regularization'
313 write (*,*)
'10) tensor 3-point function: coefficients up to rank 3'
314 write (*,*)
'20) tensor 3-point function: tensor components up to rank 3'
323 write(*,
'(/(a)/)')
' Calculating regular scalar 3-point function'
332 mominv(1:3) = (/p10,p21,p20/)
333 masses2(0:2) = (/m02,m12,m22/)
336 call c0_cll(c0,p10,p21,p20,m02,m12,m22)
339 call c0_cll(c0,mominv(1:3),masses2(0:2))
349 write(*,
'(/(a)/)')
' Calculating IR-singular scalar 3-point function'
350 write(*,
'((a))')
' IR singularity described by log(muir2) and deltair'
359 mominv(1:3) = (/p10,p21,p20/)
360 masses2(0:2) = (/m02,m12,m22/)
363 call c0_cll(c0,p10,p21,p20,m02,m12,m22)
366 call c0_cll(c0,mominv(1:3),masses2(0:2))
376 write(*,
'(/(a))')
' Calculating mass-singular scalar 3-point function'
377 write(*,
'((a)/)')
' in dimensional regularization'
378 write(*,
'((a))')
' mass-singularity described by log(muir2) and deltair'
387 mominv(1:3) = (/p10,p21,p20/)
388 masses2(0:2) = (/m02,m12,m22/)
391 call c0_cll(c0,p10,p21,p20,m02,m12,m22)
394 call c0_cll(c0,mominv(1:3),masses2(0:2))
404 write(*,
'(/(a))')
' Calculating mass-singular scalar 3-point function'
405 write(*,
'((a)/)')
' in mass regularization'
406 write(*,
'((a)/)')
' mass-singularity described by log(m12)'
420 call addminf2_cll(m12)
422 mominv(1:3) = (/p10,p21,p20/)
423 masses2(0:2) = (/m02,m12,m22/)
426 call c0_cll(c0,p10,p21,p20,m02,m12,m22)
429 call c0_cll(c0,mominv(1:3),masses2(0:2))
440 write(*,
'(/(a))')
' Calculating 3-point coefficients'
449 mominv(1:3) = (/p10,p21,p20/)
450 masses2(0:2) = (/m02,m12,m22/)
454 allocate(ccoeff(0:rank/2,0:rank,0:rank))
455 allocate(ccoeffuv(0:rank/2,0:rank,0:rank))
456 allocate(cerr(0:rank))
464 call c_cll(ccoeff,ccoeffuv,p10,p21,p20,m02,m12,m22,rank,cerr)
467 call c_cll(ccoeff,ccoeffuv,mominv(1:3),masses2(0:2),rank,cerr)
471 allocate(tncoeff(getnc_cll(n,rank)))
472 allocate(tncoeffuv(getnc_cll(n,rank)))
473 call c_cll(tncoeff,tncoeffuv,p10,p21,p20,m02,m12,m22,rank,cerr)
475 call c_cll(tncoeff,tncoeffuv,mominv(1:3),masses2(0:2),rank,cerr)
477 call tn_cll(tncoeff,tncoeffuv,mominv(1:3),masses2(0:2),n,rank,cerr)
480 call writeresultc(casen,casei,ccoeff,ccoeffuv,mominv(1:3),masses2(0:2),rank,cerr)
482 deallocate(ccoeff,ccoeffuv,cerr,tncoeff,tncoeffuv)
488 write(*,
'(/(a))')
' Calculating 3-point tensor components'
490 p1vec = (/ 15d0,0d0,0d0,5d0 /)
491 p2vec = (/ -15d0,0d0,0d0,5d0 /)
499 momvec(0:3,1) = p1vec
500 momvec(0:3,2) = p2vec
501 mominv(1:3) = (/p10,p21,p20/)
502 masses2(0:2) = (/m02,m12,m22/)
507 allocate(cten(0:rank,0:rank,0:rank,0:rank))
508 allocate(ctenuv(0:rank,0:rank,0:rank,0:rank))
509 allocate(cerr(0:rank))
516 call cten_cll(cten,ctenuv,p1vec,p2vec,p10,p21,p20,m02,m12,m22,rank,cerr)
519 call cten_cll(cten,ctenuv,momvec(0:3,1:2),mominv(1:3),masses2(0:2),rank,cerr)
521 call tnten_cll(cten,ctenuv,momvec(0:3,1:2),mominv(1:3),masses2(0:2),n,rank,cerr)
524 allocate(tnten(getnt_cll(rank)))
525 allocate(tntenuv(getnt_cll(rank)))
526 call cten_cll(tnten,tntenuv,p1vec,p2vec,p10,p21,p20,m02,m12,m22,rank,cerr)
528 call cten_cll(tnten,tntenuv,momvec(0:3,1:2),mominv(1:3),masses2(0:2),rank,cerr)
530 call tnten_cll(tnten,tntenuv,momvec(0:3,1:2),mominv(1:3),masses2(0:2),n,rank,cerr)
533 call writeresultcten(casen,casei,cten,ctenuv,momvec(0:3,1:2),mominv(1:3),masses2(0:2),rank,cerr)
535 deallocate(cten,ctenuv,cerr,tnten,tntenuv)
539 write(*,
'(/(a))')
' Input does not correspond to predefined sample'
547 write(*,*)
'Choose test case for 4-point function:'
548 write (*,*)
' 1) regular scalar 4-point function'
552 write (*,*)
'10) tensor 4-point function: coefficients up to rank 3'
553 write (*,*)
'20) tensor 4-point function: tensor components up to rank 3'
562 write(*,
'(/(a)/)')
' Calculating regular scalar 4-point function'
575 mominv(1:6) = (/p10,p21,p32,p30,p20,p31/)
576 masses2(0:3) = (/m02,m12,m22,m32/)
579 call d0_cll(d0,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32)
582 call d0_cll(d0,mominv(1:6),masses2(0:3))
592 write(*,
'(/(a))')
' Calculating tensor 4-point coefficients'
605 mominv(1:6) = (/p10,p21,p32,p30,p20,p31/)
606 masses2(0:3) = (/m02,m12,m22,m32/)
610 allocate(dcoeff(0:rank/2,0:rank,0:rank,0:rank))
611 allocate(dcoeffuv(0:rank/2,0:rank,0:rank,0:rank))
612 allocate(derr(0:rank))
620 call d_cll(dcoeff,dcoeffuv,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32,rank,derr)
623 call d_cll(dcoeff,dcoeffuv,mominv(1:6),masses2(0:3),rank,derr)
627 allocate(tncoeff(getnc_cll(n,rank)))
628 allocate(tncoeffuv(getnc_cll(n,rank)))
629 call d_cll(tncoeff,tncoeffuv,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32,rank,derr)
631 call d_cll(tncoeff,tncoeffuv,mominv(1:6),masses2(0:3),rank,derr)
633 call tn_cll(tncoeff,tncoeffuv,mominv(1:6),masses2(0:3),n,rank,derr)
637 call writeresultd(casen,casei,dcoeff,dcoeffuv,mominv(1:6),masses2(0:3),rank,derr)
639 deallocate(dcoeff,dcoeffuv,derr,tncoeff,tncoeffuv)
645 write(*,
'(/(a))')
' Calculating 4-point tensor components'
647 p1vec = (/ 1d2,0d0,0d0,1d2 /)
648 p2vec = (/ 2d2,0d0,0d0,0d0 /)
649 p3vec = (/ 1d2,5d1,0d0,5d1 /)
661 momvec(0:3,1) = p1vec
662 momvec(0:3,2) = p2vec
663 momvec(0:3,3) = p3vec
664 mominv(1:6) = (/p10,p21,p32,p30,p20,p31/)
665 masses2(0:3) = (/m02,m12,m22,m32/)
670 allocate(dten(0:rank,0:rank,0:rank,0:rank))
671 allocate(dtenuv(0:rank,0:rank,0:rank,0:rank))
672 allocate(derr(0:rank))
680 call dten_cll(dten,dtenuv,p1vec,p2vec,p3vec,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32,rank,derr)
683 call dten_cll(dten,dtenuv,momvec(0:3,1:3),mominv(1:6),masses2(0:3),rank,derr)
685 call tnten_cll(dten,dtenuv,momvec(0:3,1:3),mominv(1:6),masses2(0:3),n,rank,derr)
688 allocate(tnten(getnt_cll(rank)))
689 allocate(tntenuv(getnt_cll(rank)))
690 call dten_cll(tnten,tntenuv,p1vec,p2vec,p3vec,p10,p21,p32,p30,p20,p31,m02,m12,m22,m32,rank,derr)
692 call dten_cll(tnten,tntenuv,momvec(0:3,1:3),mominv(1:6),masses2(0:3),rank,derr)
694 call tnten_cll(tnten,tntenuv,momvec(0:3,1:3),mominv(1:6),masses2(0:3),n,rank,derr)
697 call writeresultdten(casen,casei,dten,dtenuv,momvec(0:3,1:3),mominv(1:6),masses2(0:3),rank,derr)
699 deallocate(dten,dtenuv,derr,tnten,tntenuv)
703 write(*,
'(/(a))')
' Input does not correspond to predefined sample'
711 write(*,*)
'Choose test case for 5-point function:'
712 write (*,*)
'10) tensor 5-point function: coefficients up to rank 3'
713 write (*,*)
'20) tensor 5-point function: tensor components of rank 3'
723 write(*,
'(/(a))')
' Calculating 5-point coefficients'
730 masses2(0:4) = (/m02,m12,m22,m32,m42/)
746 allocate(ecoeff(0:rank/2,0:rank,0:rank,0:rank,0:rank))
747 allocate(ecoeffuv(0:rank/2,0:rank,0:rank,0:rank,0:rank))
748 allocate(eerr(0:rank))
755 call e_cll(ecoeff,ecoeffuv,p10,p21,p32,p43,p40,p20,p31,p42,p30,p41,m02,m12,m22,m32,m42,rank,eerr)
758 call e_cll(ecoeff,ecoeffuv,mominv(1:10),masses2(0:4),rank,eerr)
762 allocate(tncoeff(getnc_cll(n,rank)))
763 allocate(tncoeffuv(getnc_cll(n,rank)))
764 call e_cll(tncoeff,tncoeffuv,p10,p21,p32,p43,p40,p20,p31,p42,p30,p41,m02,m12,m22,m32,m42,rank,eerr)
766 call e_cll(tncoeff,tncoeffuv,mominv(1:10),masses2(0:4),rank,eerr)
768 call tn_cll(tncoeff,tncoeffuv,mominv(1:10),masses2(0:4),n,rank,eerr)
771 call writeresulte(casen,casei,ecoeff,ecoeffuv,mominv(1:10),masses2(0:4),rank,eerr)
773 deallocate(ecoeff,ecoeffuv,eerr,tncoeff,tncoeffuv)
779 write(*,
'(/(a))')
' Calculating 5-point tensor components'
786 masses2(0:4) = (/m02,m12,m22,m32,m42/)
789 p1vec = momvec(0:3,1)
790 p2vec = momvec(0:3,2)
791 p3vec = momvec(0:3,3)
792 p4vec = momvec(0:3,4)
807 allocate(eten(0:rank,0:rank,0:rank,0:rank))
808 allocate(etenuv(0:rank,0:rank,0:rank,0:rank))
809 allocate(eerr(0:rank))
816 call eten_cll(eten,etenuv,p1vec,p2vec,p3vec,p4vec,p10,p21,p32,p43,p40,p20,p31,p42,p30,p41,m02,m12,m22,m32,m42,rank,eerr)
819 call eten_cll(eten,etenuv,momvec(0:3,1:4),mominv(1:10),masses2(0:4),rank,eerr)
821 call tnten_cll(eten,etenuv,momvec(0:3,1:4),mominv(1:10),masses2(0:4),n,rank,eerr)
824 allocate(tnten(getnt_cll(rank)))
825 allocate(tntenuv(getnt_cll(rank)))
826 call eten_cll(tnten,tntenuv,p1vec,p2vec,p3vec,p4vec,p10,p21,p32,p43,p40,p20,p31,p42,p30,p41,m02,m12,m22,m32,m42,rank,eerr)
828 call eten_cll(tnten,tntenuv,momvec(0:3,1:4),mominv(1:10),masses2(0:4),rank,eerr)
830 call tnten_cll(tnten,tntenuv,momvec(0:3,1:4),mominv(1:10),masses2(0:4),n,rank,eerr)
833 call writeresulteten(casen,casei,eten,etenuv,momvec(0:3,1:4),mominv(1:10),masses2(0:4),rank,eerr)
835 deallocate(eten,etenuv,eerr,tnten,tntenuv)
839 write(*,
'(/(a))')
' Input does not correspond to predefined sample'
847 write(*,*)
'Choose test case for 6-point function:'
848 write (*,*)
'10) tensor 6-point function: coefficients up to rank 3'
849 write (*,*)
'20) tensor 6-point function: tensor components of rank 3'
858 write(*,
'(/(a))')
' Calculating 6-point coefficients'
866 masses2(0:5) = (/m02,m12,m22,m32,m42,m52/)
888 allocate(fcoeff(0:rank/2,0:rank,0:rank,0:rank,0:rank,0:rank))
889 allocate(fcoeffuv(0:rank/2,0:rank,0:rank,0:rank,0:rank,0:rank))
890 allocate(ferr(0:rank))
897 call f_cll(fcoeff,fcoeffuv,p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40, &
898 p51,p30,p41,p52,m02,m12,m22,m32,m42,m52,rank,ferr)
901 call f_cll(fcoeff,fcoeffuv,mominv(1:15),masses2(0:5),rank,ferr)
905 allocate(tncoeff(getnc_cll(n,rank)))
906 allocate(tncoeffuv(getnc_cll(n,rank)))
907 call f_cll(tncoeff,tncoeffuv,p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40, &
908 p51,p30,p41,p52,m02,m12,m22,m32,m42,m52,rank,ferr)
910 call f_cll(tncoeff,tncoeffuv,mominv(1:15),masses2(0:5),rank,ferr)
912 call tn_cll(tncoeff,tncoeffuv,mominv(1:15),masses2(0:5),n,rank,ferr)
916 call writeresultf(casen,casei,fcoeff,fcoeffuv,mominv(1:15),masses2(0:5),rank,ferr)
918 deallocate(fcoeff,fcoeffuv,ferr,tncoeff,tncoeffuv)
924 write(*,
'(/(a))')
' Calculating 6-point tensor components'
932 masses2(0:5) = (/m02,m12,m22,m32,m42,m52/)
936 p1vec = momvec(0:3,1)
937 p2vec = momvec(0:3,2)
938 p3vec = momvec(0:3,3)
939 p4vec = momvec(0:3,4)
940 p5vec = momvec(0:3,5)
960 allocate(ften(0:rank,0:rank,0:rank,0:rank))
961 allocate(ftenuv(0:rank,0:rank,0:rank,0:rank))
962 allocate(ferr(0:rank))
969 call ften_cll(ften,ftenuv,p1vec,p2vec,p3vec,p4vec,p5vec,p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40, &
970 p51,p30,p41,p52,m02,m12,m22,m32,m42,m52,rank,ferr)
973 call ften_cll(ften,ftenuv,momvec(0:3,1:5),mominv(1:15),masses2(0:5),rank,ferr)
975 call tnten_cll(ften,ftenuv,momvec(0:3,1:5),mominv(1:15),masses2(0:5),n,rank,ferr)
978 allocate(tnten(getnt_cll(rank)))
979 allocate(tntenuv(getnt_cll(rank)))
980 call ften_cll(tnten,tntenuv,p1vec,p2vec,p3vec,p4vec,p5vec,p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40, &
981 p51,p30,p41,p52,m02,m12,m22,m32,m42,m52,rank,ferr)
983 call ften_cll(tnten,tntenuv,momvec(0:3,1:5),mominv(1:15),masses2(0:5),rank,ferr)
985 call tnten_cll(tnten,tntenuv,momvec(0:3,1:5),mominv(1:15),masses2(0:5),n,rank,ferr)
988 call writeresultften(casen,casei,ften,ftenuv,momvec(0:3,1:5),mominv(1:15),masses2(0:5),rank,ferr)
990 deallocate(ften,ftenuv,ferr,tnten,tntenuv)
994 write(*,
'(/(a))')
' Input does not correspond to predefined sample'
1002 write(*,*)
'Choose test case for 2-point function derivative:'
1003 write (*,*)
' 1) scalar 2-point function derivative'
1004 write (*,*)
' 2) vector 2-point function derivative'
1005 write (*,*)
' 3) tensor 2-point function derivative'
1006 write (*,*)
' 4) mass-singular scalar 2-point function derivative'
1007 write (*,*)
'10) tensor 2-point function derivatives up to rank 2'
1016 write(*,
'(/(a)/)')
' Calculating derivative of scalar 2-point function'
1023 masses2(0:1) = (/m02,m12/)
1026 call db0_cll(db0,p10,m02,m12)
1029 call db0_cll(db0,mominv(1:1),masses2(0:1))
1039 write(*,
'(/(a)/)')
' Calculating derivative of vector 2-point function coefficient'
1046 masses2(0:1) = (/m02,m12/)
1049 call db1_cll(db1,p10,m02,m12)
1052 call db1_cll(db1,mominv(1:1),masses2(0:1))
1056 allocate(dbcoeff(0:rank/2,0:rank))
1057 allocate(dbcoeffuv(0:rank/2,0:rank))
1058 allocate(dberr(0:rank))
1060 call writeresultdb(casen,casei,dbcoeff,dbcoeffuv,mominv(1:1),masses2(0:1),1,1)
1067 write(*,
'(/(a)/)')
' Calculating derivative of tensor 2-point function coefficient'
1074 masses2(0:1) = (/m02,m12/)
1077 call db00_cll(db00,db00uv,p10,m02,m12)
1080 call db00_cll(db00,db00uv,mominv(1:1),masses2(0:1))
1084 allocate(dbcoeff(0:rank/2,0:rank))
1085 allocate(dbcoeffuv(0:rank/2,0:rank))
1086 allocate(dberr(0:rank))
1088 call writeresultdb(casen,casei,dbcoeff,dbcoeffuv,mominv(1:1),masses2(0:1),2,2)
1095 write(*,
'(/(a))')
' Calculating derivative of mass-singular scalar 2-point function'
1096 write(*,
'((a)/)')
' in mass regularization'
1097 write(*,
'((a)/)')
' mass-singularity described by log(m12)'
1108 call addminf2_cll(m12)
1111 masses2(0:1) = (/m02,m12/)
1114 call db0_cll(db0,p10,m02,m12)
1117 call db0_cll(db0,mominv(1:1),masses2(0:1))
1127 write(*,
'(/(a))')
' Calculating derivatives of tensor 2-point coefficients'
1133 mominv(1:1) = (/p10/)
1134 masses2(0:1) = (/m02,m12/)
1138 allocate(dbcoeff(0:rank/2,0:rank))
1139 allocate(dbcoeffuv(0:rank/2,0:rank))
1140 allocate(dberr(0:rank))
1148 call db_cll(dbcoeff,dbcoeffuv,p10,m02,m12,rank,dberr)
1151 call db_cll(dbcoeff,dbcoeffuv,mominv(1:1),masses2(0:1),rank,dberr)
1154 call writeresultdb(casen,casei,dbcoeff,dbcoeffuv,mominv(1:1),masses2(0:1),0,rank,berr)
1156 deallocate(dbcoeff,dbcoeffuv,dberr)
1160 write(*,
'(/(a))')
' Input does not correspond to predefined sample'
1166 write(*,
'(/(a))')
' Input does not correspond to predefined sample'
1178 subroutine writeresulta(caseN,casei,Acoeff,Acoeffuv,masses2,rank,Aerr)
1181 integer,
intent(in) :: rank,caseN,casei
1182 double complex,
intent(in) :: masses2(0:0)
1183 double complex,
intent(in) :: Acoeff(0:rank/2)
1184 double complex,
intent(in) :: Acoeffuv(0:rank/2)
1185 double precision,
optional,
intent(in) :: Aerr(0:rank)
1186 integer :: r,n0,mode
1187 character(len=99) :: fname
1188 character(len=*),
parameter :: fmt1 =
"(A9,' = ',es23.16,' + i*',es23.16)"
1189 character(len=*),
parameter :: fmt2 =
"(A9,' = ',es23.16)"
1190 character(len=*),
parameter :: fmt10 =
"(' Acoeff(',i1,') = ',es23.16,' + i*',es23.16)"
1191 character(len=*),
parameter :: fmt11 =
"(' Aerr(',i1,') = ',es23.16)"
1192 character(len=*),
parameter :: fmt12 =
"(' A0 = ',es23.16,' + i*',es23.16)"
1193 character(len=*),
parameter :: fmt13 =
"(' Acoeffuv(',i1,') = ',es23.16,' + i*',es23.16)"
1196 call getmode_cll(mode)
1199 fname =
'demo_1point_example00_coli.dat'
1201 fname =
'demo_1point_example00_dd.dat'
1203 fname =
'demo_1point_example00_comp.dat'
1205 write(fname(20:21),
'(i2.2)') casei
1207 open(unit=50,file=trim(fname),status=
'unknown')
1209 call getmuuv2_cll(muuv2)
1211 call getdeltauv_cll(deltauv)
1214 write (50,
'(a37,i2,i3/)')
' Result for 1-point function, example',casen,casei
1215 write (50,
'((a))')
' '
1216 write (50,
'((a))')
' ------- '
1217 write (50,
'((a))')
' / \ '
1218 write (50,
'((a))')
' / \ '
1219 write (50,
'((a))')
' 0d0 ----- 0 | m02 '
1220 write (50,
'((a))')
' \ / '
1221 write (50,
'((a))')
' \ / '
1222 write (50,
'((a))')
' ------- '
1223 write (50,
'((a))')
' '
1224 write (50,
'((a))')
''
1225 write (50,
'((a))')
' Input:'
1226 write (50,fmt1)
' m02 ',masses2(0)
1227 write (50,fmt2)
' muUV2 ',muuv2
1229 write (50,fmt2)
' deltaUV ',deltauv
1232 write (50,
'((a))')
''
1233 write (50,
'((a))')
' Conventions:'
1234 write (50,
'((a))')
''
1236 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1237 write (50,
'((a))')
' A = --------------- \int d^D q f(q)'
1238 write (50,
'((a))')
' i*pi^2 '
1241 write (50,
'((a))')
' = A_fin(muUV2) + a_UV*DeltaUV '
1243 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1244 write (50,
'((a))')
' A0 = --------------- \int d^D q f(q)'
1245 write (50,
'((a))')
' i*pi^2 '
1248 write (50,
'((a))')
' = A0_fin(muUV2) + a_UV*DeltaUV '
1251 write (50,
'((a))')
' where'
1253 write (50,
'((a))') &
1255 write (50,
'((a))') &
1256 ' DeltaUV = -------- '
1257 write (50,
'((a))') &
1260 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
1262 write (50,
'((a))')
' you can freely choose the regularization parameters'
1263 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
1265 write (50,
'((a))')
' note:'
1266 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
1267 write (50,
'((a))')
' - by default DeltaUV = 0 '
1269 write (50,
'((a))')
''
1270 write (50,
'((a))')
' Results:'
1274 write (50,fmt10) n0,acoeff(n0)
1277 write (50,
'(/(a))')
' Error estimates:'
1279 write (50,fmt11) r,aerr(r)
1282 write (50,fmt12) acoeff(0)
1285 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
1299 integer,
intent(in) :: caseN,casei
1300 double complex,
intent(in) :: A0
1301 double complex,
intent(in) :: masses2(0:0)
1302 double complex :: Acoeff(0:0)
1303 double complex :: Acoeffuv(0:0)
1307 acoeffuv(0:0) = masses2
1308 call writeresulta(casen,casei,acoeff,acoeffuv,masses2,0)
1318 subroutine writeresultb(caseN,casei,Bcoeff,Bcoeffuv,MomInv,masses2,rank,Berr)
1321 integer,
intent(in) :: rank,caseN,casei
1322 double complex,
intent(in) :: MomInv(1), masses2(0:1)
1323 double complex,
intent(in) :: Bcoeff(0:rank/2,0:rank)
1324 double complex,
intent(in) :: Bcoeffuv(0:rank/2,0:rank)
1325 double precision,
optional,
intent(in) :: Berr(0:rank)
1326 integer :: r,n0,n1,mode
1327 integer,
parameter :: rankuv=0
1328 character(len=99) :: fname
1329 character(len=*),
parameter :: fmt1 =
"(A9,' = ',es23.16,' + i*',es23.16)"
1330 character(len=*),
parameter :: fmt2 =
"(A9,' = ',es23.16)"
1331 character(len=*),
parameter :: fmt10 =
"(' Bcoeff(',i1,1(',',i1),') = ',es23.16,' + i*',es23.16)"
1332 character(len=*),
parameter :: fmt11 =
"(' Berr(',i1,') = ',es23.16)"
1333 character(len=*),
parameter :: fmt12 =
"(' B0 = ',es23.16,' + i*',es23.16)"
1334 character(len=*),
parameter :: fmt13 =
"(' Bcoeffuv(',i1,1(',',i1),') = ',es23.16,' + i*',es23.16)"
1337 call getmode_cll(mode)
1340 fname =
'demo_2point_example00_coli.dat'
1342 fname =
'demo_2point_example00_dd.dat'
1344 fname =
'demo_2point_example00_comp.dat'
1346 write(fname(20:21),
'(i2.2)') casei
1348 open(unit=50,file=trim(fname),status=
'unknown')
1350 call getmuuv2_cll(muuv2)
1351 call getmuir2_cll(muir2)
1352 call getdeltauv_cll(deltauv)
1353 call getdeltair_cll(deltair1,deltair2)
1355 write (50,
'(a37,i2,i3/)')
' Result for 2-point function, example',casen,casei
1356 write (50,
'((a))')
' m12 '
1357 write (50,
'((a))')
' ------- '
1358 write (50,
'((a))')
' / 1 \ '
1359 write (50,
'((a))')
' / \ '
1360 write (50,
'((a))')
' p10 ----- ----- p10 '
1361 write (50,
'((a))')
' \ / '
1362 write (50,
'((a))')
' \ 0 / '
1363 write (50,
'((a))')
' ------- '
1364 write (50,
'((a))')
' m02 '
1365 write (50,
'((a))')
''
1366 write (50,
'((a))')
' Input:'
1367 write (50,fmt1)
' p10 ',mominv(1)
1368 write (50,fmt1)
' m02 ',masses2(0)
1369 write (50,fmt1)
' m12 ',masses2(1)
1370 if (rank.ge.rankuv)
then
1371 write (50,fmt2)
' muUV2 ',muuv2
1374 if (rank.ge.rankuv)
then
1375 write (50,fmt2)
' deltaUV ',deltauv
1379 write (50,
'((a))')
''
1380 write (50,
'((a))')
' Conventions:'
1381 write (50,
'((a))')
''
1383 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1384 write (50,
'((a))')
' B = --------------- \int d^D q f(q,p_i)'
1385 write (50,
'((a))')
' i*pi^2 '
1388 write (50,
'((a))')
' = B_fin(muUV2,muIR2) + a_UV*DeltaUV '
1390 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1391 write (50,
'((a))')
' B0 = --------------- \int d^D q f(q,p_i)'
1392 write (50,
'((a))')
' i*pi^2 '
1395 write (50,
'((a))')
' = B0_fin(muUV2,muIR2) + a_UV*DeltaUV '
1398 write (50,
'((a))')
' where'
1400 write (50,
'((a))') &
1402 write (50,
'((a))') &
1403 ' DeltaUV = -------- '
1404 write (50,
'((a))') &
1407 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
1409 write (50,
'((a))')
' you can freely choose the regularization parameters'
1410 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
1412 write (50,
'((a))')
' note:'
1413 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
1414 write (50,
'((a))')
' - by default DeltaUV = 0 '
1416 write (50,
'((a))')
''
1417 write (50,
'((a))')
' Results:'
1423 write (50,fmt10) n0,n1,bcoeff(n0,n1)
1434 write (50,
'(/(a))')
' Error estimates:'
1436 write (50,fmt11) r,berr(r)
1439 write (50,fmt12) bcoeff(0,0)
1442 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
1456 integer,
intent(in) :: caseN,casei
1457 double complex,
intent(in) :: B0
1458 double complex,
intent(in) :: MomInv(1), masses2(0:1)
1459 double complex :: Bcoeff(0:0,0:0)
1460 double complex :: Bcoeffuv(0:0,0:0)
1463 bcoeff(0:0,0:0) = b0
1464 bcoeffuv(0:0,0:0) = 1d0
1465 call writeresultb(casen,casei,bcoeff,bcoeffuv,mominv,masses2,0)
1476 subroutine writeresultc(caseN,casei,Ccoeff,Ccoeffuv,MomInv,masses2,rank,Cerr)
1479 integer,
intent(in) :: rank,caseN,casei
1480 double complex,
intent(in) :: MomInv(3), masses2(0:2)
1481 double complex,
intent(in) :: Ccoeff(0:rank/2,0:rank,0:rank)
1482 double complex,
intent(in) :: Ccoeffuv(0:rank/2,0:rank,0:rank)
1483 double precision,
optional,
intent(in) :: Cerr(0:rank)
1484 integer :: r,n0,n1,n2,mode
1485 integer,
parameter :: rankuv=2
1486 character(len=99) :: fname
1487 character(len=*),
parameter :: fmt1 =
"(A9,' = ',es23.16,' + i*',es23.16)"
1488 character(len=*),
parameter :: fmt2 =
"(A9,' = ',es23.16)"
1489 character(len=*),
parameter :: fmt10 =
"(' Ccoeff(',i1,2(',',i1),') = ',es23.16,' + i*',es23.16)"
1490 character(len=*),
parameter :: fmt11 =
"(' Cerr(',i1,') = ',es23.16)"
1491 character(len=*),
parameter :: fmt12 =
"(' C0 = ',es23.16,' + i*',es23.16)"
1494 call getmode_cll(mode)
1497 fname =
'demo_3point_example00_coli.dat'
1499 fname =
'demo_3point_example00_dd.dat'
1501 fname =
'demo_3point_example00_comp.dat'
1503 write(fname(20:21),
'(i2.2)') casei
1507 open(unit=50,file=trim(fname),status=
'unknown')
1509 call getmuuv2_cll(muuv2)
1510 call getmuir2_cll(muir2)
1511 call getdeltauv_cll(deltauv)
1512 call getdeltair_cll(deltair1,deltair2)
1514 write (50,
'(a37,i2,i3/)')
' Result for 3-point function, example',casen,casei
1515 write (50,
'(a63,i2,i3,a)')
' The corresponding code can be found in demo.f90 under ''example',casen,casei,
''''
1517 write (50,
'((a))')
' p21 '
1518 write (50,
'((a))')
' | '
1519 write (50,
'((a))')
' | '
1520 write (50,
'((a))')
' / \ '
1521 write (50,
'((a))')
' / \ '
1522 write (50,
'((a))')
' m12 /1 2\ m22 '
1523 write (50,
'((a))')
' / \ '
1524 write (50,
'((a))')
' / 0 \ '
1525 write (50,
'((a))')
' p10 --------------------- p20 '
1526 write (50,
'((a))')
' m02 '
1527 write (50,
'((a))')
''
1528 write (50,
'((a))')
' Input:'
1529 write (50,fmt1)
' p10 ',mominv(1)
1530 write (50,fmt1)
' p21 ',mominv(2)
1531 write (50,fmt1)
' p20 ',mominv(3)
1532 write (50,fmt1)
' m02 ',masses2(0)
1533 write (50,fmt1)
' m12 ',masses2(1)
1534 write (50,fmt1)
' m22 ',masses2(2)
1536 write (50,fmt2)
' muUV2 ',muuv2
1538 write (50,fmt2)
' muIR2 ',muir2
1540 write (50,fmt2)
' DeltaUV ',deltauv
1542 write (50,fmt2)
' DeltaIR1',deltair2
1543 write (50,fmt2)
' DeltaIR2',deltair1
1544 write (50,
'((a))')
''
1545 write (50,
'((a))')
' Conventions:'
1546 write (50,
'((a))')
''
1548 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1549 write (50,
'((a))')
' C0 = --------------- \int d^D q f(q,p_i)'
1550 write (50,
'((a))')
' i*pi^2 '
1553 write (50,
'((a))')
' = C0_fin(muUV2,muIR2) + '// &
1554 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
1555 else if(rank.ge.rankuv)
then
1556 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1557 write (50,
'((a))')
' C = --------------- \int d^D q f(q,p_i)'
1558 write (50,
'((a))')
' i*pi^2 '
1561 write (50,
'((a))')
' = C_fin(muUV2,muIR2) + a_UV*DeltaUV + '// &
1562 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
1564 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1565 write (50,
'((a))')
' C = --------------- \int d^D q f(q,p_i)'
1566 write (50,
'((a))')
' i*pi^2 '
1569 write (50,
'((a))')
' = C_fin(muUV2,muIR2) + '// &
1570 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
1573 write (50,
'((a))')
' where'
1576 write (50,
'((a))') &
1577 ' c(epsUV) c(epsIR) c(epsIR)'
1578 write (50,
'((a))') &
1579 ' DeltaUV = --------, DeltaIR1 = --------, DeltaIR2 = --------'
1580 write (50,
'((a))') &
1581 ' epsUV epsIR epsIR^2'
1583 write (50,
'((a))') &
1584 ' c(epsIR) c(epsIR)'
1585 write (50,
'((a))') &
1586 ' DeltaIR1 = --------, DeltaIR2 = --------'
1587 write (50,
'((a))') &
1591 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
1593 write (50,
'((a))')
' you can freely choose the regularization parameters'
1595 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
1597 write (50,
'((a))')
' of IR origin: muIR2 = mu^2, DeltaIR1, DeltaIR2'
1599 write (50,
'((a))')
' note:'
1600 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
1602 write (50,
'((a))')
' - by default DeltaUV = DeltaIR1 = DeltaIR2 = 0 '
1604 write (50,
'((a))')
' - by default DeltaIR1 = DeltaIR2 = 0 '
1606 write (50,
'((a))')
' - suitable DeltaIR2 can be used to adapt the effective normalization'
1608 write (50,
'((a))')
''
1609 write (50,
'((a))')
' Results:'
1616 write (50,fmt10) n0,n1,n2,ccoeff(n0,n1,n2)
1621 write (50,
'(/(a))')
' Error estimates:'
1623 write (50,fmt11) r,cerr(r)
1626 write (50,fmt12) ccoeff(0,0,0)
1629 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
1643 integer,
intent(in) :: caseN,casei
1644 double complex,
intent(in) :: C0
1645 double complex,
intent(in) :: MomInv(3), masses2(0:2)
1646 double complex :: Ccoeff(0:0,0:0,0:0)
1647 double complex :: Ccoeffuv(0:0,0:0,0:0)
1650 ccoeff(0:0,0:0,0:0) = c0
1651 ccoeffuv(0:0,0:0,0:0) = 0d0
1652 call writeresultc(casen,casei,ccoeff,ccoeffuv,mominv,masses2,0)
1663 subroutine writeresultcten(caseN,casei,Cten,Ctenuv,MomVec,MomInv,masses2,rank,Cerr)
1666 integer,
intent(in) :: rank,caseN,casei
1667 double complex,
intent(in) :: MomVec(0:3,1:2), MomInv(3), masses2(0:2)
1668 double complex,
intent(in) :: Cten(0:rank,0:rank,0:rank,0:rank)
1669 double complex,
intent(in) :: Ctenuv(0:rank,0:rank,0:rank,0:rank)
1670 double precision,
optional,
intent(in) :: Cerr(0:rank)
1671 integer :: r,n0,n1,n2,n3,mode
1672 integer,
parameter :: rankuv=2
1673 character(len=99) :: fname
1674 character(len=*),
parameter :: fmt1 =
"(A17,' = ',es23.16,' + i*',es23.16)"
1675 character(len=*),
parameter :: fmt2 =
"(A17,' = ',es23.16)"
1676 character(len=*),
parameter :: fmt10 =
"(' Cten(',i1,3(',',i1),') = ',es23.16,' + i*',es23.16)"
1677 character(len=*),
parameter :: fmt11 =
"(' Cerr(',i1,') = ',es23.16)"
1678 character(len=*),
parameter :: fmt12 =
"(' C0 = ',es23.16,' + i*',es23.16)"
1681 call getmode_cll(mode)
1684 fname =
'demo_3point_example00_coli.dat'
1686 fname =
'demo_3point_example00_dd.dat'
1688 fname =
'demo_3point_example00_comp.dat'
1690 write(fname(20:21),
'(i2.2)') casei
1694 open(unit=50,file=trim(fname),status=
'unknown')
1696 call getmuuv2_cll(muuv2)
1697 call getmuir2_cll(muir2)
1698 call getdeltauv_cll(deltauv)
1699 call getdeltair_cll(deltair1,deltair2)
1701 write (50,
'(a37,i2,i3/)')
' Result for 3-point function, example',casen,casei
1702 write (50,
'(a63,i2,i3,a)')
' The corresponding code can be found in demo.f90 under ''example',casen,casei,
''''
1704 write (50,
'((a))')
' p21 '
1705 write (50,
'((a))')
' | '
1706 write (50,
'((a))')
' | '
1707 write (50,
'((a))')
' / \ '
1708 write (50,
'((a))')
' / \ '
1709 write (50,
'((a))')
' m12,p1vec /1 2\ m22,p2vec '
1710 write (50,
'((a))')
' / \ '
1711 write (50,
'((a))')
' / 0 \ '
1712 write (50,
'((a))')
' p10 --------------------- p20 '
1713 write (50,
'((a))')
' m02 '
1714 write (50,
'((a))')
''
1715 write (50,
'((a))')
' Input:'
1716 write (50,fmt1)
' p1vec(0) ',momvec(0,1)
1717 write (50,fmt1)
' p1vec(1) ',momvec(1,1)
1718 write (50,fmt1)
' p1vec(2) ',momvec(2,1)
1719 write (50,fmt1)
' p1vec(3) ',momvec(3,1)
1720 write (50,fmt1)
' p2vec(0) ',momvec(0,2)
1721 write (50,fmt1)
' p2vec(1) ',momvec(1,2)
1722 write (50,fmt1)
' p2vec(2) ',momvec(2,2)
1723 write (50,fmt1)
' p2vec(3) ',momvec(3,2)
1724 write (50,fmt1)
' p10 ',mominv(1)
1725 write (50,fmt1)
' p21 ',mominv(2)
1726 write (50,fmt1)
' p20 ',mominv(3)
1727 write (50,fmt1)
' m02 ',masses2(0)
1728 write (50,fmt1)
' m12 ',masses2(1)
1729 write (50,fmt1)
' m22 ',masses2(2)
1731 write (50,fmt2)
' muUV2 ',muuv2
1733 write (50,fmt2)
' muIR2 ',muir2
1735 write (50,fmt2)
' DeltaUV ',deltauv
1737 write (50,fmt2)
' DeltaIR1 ',deltair2
1738 write (50,fmt2)
' DeltaIR2 ',deltair1
1739 write (50,
'((a))')
''
1740 write (50,
'((a))')
' Conventions:'
1741 write (50,
'((a))')
''
1743 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1744 write (50,
'((a))')
' C0 = --------------- \int d^D q f(q,p_i)'
1745 write (50,
'((a))')
' i*pi^2 '
1748 write (50,
'((a))')
' = C0_fin(muUV2,muIR2) + '// &
1749 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
1750 else if(rank.ge.rankuv)
then
1751 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1752 write (50,
'((a))')
' C = --------------- \int d^D q f(q,p_i)'
1753 write (50,
'((a))')
' i*pi^2 '
1756 write (50,
'((a))')
' = C_fin(muUV2,muIR2) + a_UV*DeltaUV + '// &
1757 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
1759 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1760 write (50,
'((a))')
' C = --------------- \int d^D q f(q,p_i)'
1761 write (50,
'((a))')
' i*pi^2 '
1764 write (50,
'((a))')
' = C_fin(muUV2,muIR2) + '// &
1765 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
1768 write (50,
'((a))')
' where'
1771 write (50,
'((a))') &
1772 ' c(epsUV) c(epsIR) c(epsIR)'
1773 write (50,
'((a))') &
1774 ' DeltaUV = --------, DeltaIR1 = --------, DeltaIR2 = --------'
1775 write (50,
'((a))') &
1776 ' epsUV epsIR epsIR^2'
1778 write (50,
'((a))') &
1779 ' c(epsIR) c(epsIR)'
1780 write (50,
'((a))') &
1781 ' DeltaIR1 = --------, DeltaIR2 = --------'
1782 write (50,
'((a))') &
1786 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
1788 write (50,
'((a))')
' you can freely choose the regularization parameters'
1790 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
1792 write (50,
'((a))')
' of IR origin: muIR2 = mu^2, DeltaIR1, DeltaIR2'
1794 write (50,
'((a))')
' note:'
1795 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
1797 write (50,
'((a))')
' - by default DeltaUV = DeltaIR1 = DeltaIR2 = 0 '
1799 write (50,
'((a))')
' - by default DeltaIR1 = DeltaIR2 = 0 '
1801 write (50,
'((a))')
' - suitable DeltaIR2 can be used to adapt the effective normalization'
1803 write (50,
'((a))')
''
1804 write (50,
'((a))')
' Results:'
1812 write (50,fmt10) n0,n1,n2,n3,cten(n0,n1,n2,n3)
1818 write (50,
'(/(a))')
' Error estimates:'
1820 write (50,fmt11) r,cerr(r)
1823 write (50,fmt12) cten(0,0,0,0)
1826 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
1839 subroutine writeresultd(caseN,casei,Dcoeff,Dcoeffuv,MomInv,masses2,rank,Derr)
1842 integer,
intent(in) :: rank,caseN,casei
1843 double complex,
intent(in) :: MomInv(6), masses2(0:3)
1844 double complex,
intent(in) :: Dcoeff(0:rank/2,0:rank,0:rank,0:rank)
1845 double complex,
intent(in) :: Dcoeffuv(0:rank/2,0:rank,0:rank,0:rank)
1846 double precision,
optional,
intent(in) :: Derr(0:rank)
1847 integer :: r,n0,n1,n2,n3,mode
1848 integer,
parameter :: rankuv=4
1849 character(len=99) :: fname
1850 character(len=*),
parameter :: fmt1 =
"(A9,' = ',es23.16,' + i*',es23.16)"
1851 character(len=*),
parameter :: fmt2 =
"(A9,' = ',es23.16)"
1852 character(len=*),
parameter :: fmt10 =
"(' Dcoeff(',i1,3(',',i1),') = ',es23.16,' + i*',es23.16)"
1853 character(len=*),
parameter :: fmt11 =
"(' Derr(',i1,') = ',es23.16)"
1854 character(len=*),
parameter :: fmt12 =
"(' D0 = ',es23.16,' + i*',es23.16)"
1857 call getmode_cll(mode)
1860 fname =
'demo_4point_example00_coli.dat'
1862 fname =
'demo_4point_example00_dd.dat'
1864 fname =
'demo_4point_example00_comp.dat'
1866 write(fname(20:21),
'(i2.2)') casei
1870 open(unit=50,file=trim(fname),status=
'unknown')
1872 call getmuuv2_cll(muuv2)
1873 call getmuir2_cll(muir2)
1874 call getdeltauv_cll(deltauv)
1875 call getdeltair_cll(deltair1,deltair2)
1877 write (50,
'(a37,i2,i3/)')
' Result for 4-point function, example',casen,casei
1878 write (50,
'(a63,i2,i3,a)')
' The corresponding code can be found in demo.f90 under ''example',casen,casei,
''''
1880 write (50,
'((a))')
' p31 '
1881 write (50,
'((a))')
' ------------------ '
1882 write (50,
'((a))')
' / \ '
1883 write (50,
'((a))')
' m22 '
1884 write (50,
'((a))')
' p21 --------------------- p32 \ '
1885 write (50,
'((a))')
' | 2 | \ '
1886 write (50,
'((a))')
' | | |'
1887 write (50,
'((a))')
' m12 |1 3| m32 | p20'
1888 write (50,
'((a))')
' | | |'
1889 write (50,
'((a))')
' | 0 | / '
1890 write (50,
'((a))')
' p10 --------------------- p30 / '
1891 write (50,
'((a))')
' m02 '
1892 write (50,
'((a))')
''
1893 write (50,
'((a))')
' Input:'
1894 write (50,fmt1)
' p10 ',mominv(1)
1895 write (50,fmt1)
' p21 ',mominv(2)
1896 write (50,fmt1)
' p32 ',mominv(3)
1897 write (50,fmt1)
' p30 ',mominv(4)
1898 write (50,fmt1)
' p20 ',mominv(5)
1899 write (50,fmt1)
' p31 ',mominv(6)
1900 write (50,fmt1)
' m02 ',masses2(0)
1901 write (50,fmt1)
' m12 ',masses2(1)
1902 write (50,fmt1)
' m22 ',masses2(2)
1903 write (50,fmt1)
' m32 ',masses2(3)
1904 if (rank.ge.rankuv)
then
1905 write (50,fmt2)
' muUV2 ',muuv2
1907 write (50,fmt2)
' muIR2 ',muir2
1908 if (rank.ge.rankuv)
then
1909 write (50,fmt2)
' DeltaUV ',deltauv
1911 write (50,fmt2)
' DeltaIR1',deltair2
1912 write (50,fmt2)
' DeltaIR2',deltair1
1913 write (50,
'((a))')
''
1914 write (50,
'((a))')
' Conventions:'
1915 write (50,
'((a))')
''
1917 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1918 write (50,
'((a))')
' D0 = --------------- \int d^D q f(q,p_i)'
1919 write (50,
'((a))')
' i*pi^2 '
1922 write (50,
'((a))')
' = D0_fin(muUV2,muIR2) + '// &
1923 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
1924 else if(rank.ge.rankuv)
then
1925 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1926 write (50,
'((a))')
' D = --------------- \int d^D q f(q,p_i)'
1927 write (50,
'((a))')
' i*pi^2 '
1930 write (50,
'((a))')
' = D_fin(muUV2,muIR2) + a_UV*DeltaUV + '// &
1931 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
1933 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
1934 write (50,
'((a))')
' D = --------------- \int d^D q f(q,p_i)'
1935 write (50,
'((a))')
' i*pi^2 '
1938 write (50,
'((a))')
' = D_fin(muUV2,muIR2) + '// &
1939 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
1942 write (50,
'((a))')
' where'
1944 if (rank.gt.rankuv)
then
1945 write (50,
'((a))') &
1946 ' c(epsUV) c(epsIR) c(epsIR)'
1947 write (50,
'((a))') &
1948 ' DeltaUV = --------, DeltaIR1 = --------, DeltaIR2 = --------'
1949 write (50,
'((a))') &
1950 ' epsUV epsIR epsIR^2'
1952 write (50,
'((a))') &
1953 ' c(epsIR) c(epsIR)'
1954 write (50,
'((a))') &
1955 ' DeltaIR1 = --------, DeltaIR2 = --------'
1956 write (50,
'((a))') &
1960 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
1962 write (50,
'((a))')
' you can freely choose the regularization parameters'
1964 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
1966 write (50,
'((a))')
' of IR origin: muIR2 = mu^2, DeltaIR1, DeltaIR2'
1968 write (50,
'((a))')
' note:'
1969 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
1971 write (50,
'((a))')
' - by default DeltaUV = DeltaIR1 = DeltaIR2 = 0 '
1973 write (50,
'((a))')
' - by default DeltaIR1 = DeltaIR2 = 0 '
1975 write (50,
'((a))')
' - suitable DeltaIR2 can be used to adapt the effective normalization'
1977 write (50,
'((a))')
''
1978 write (50,
'((a))')
' Results:'
1986 write (50,fmt10) n0,n1,n2,n3,dcoeff(n0,n1,n2,n3)
1992 write (50,
'(/(a))')
' Error estimates:'
1994 write (50,fmt11) r,derr(r)
1997 write (50,fmt12) dcoeff(0,0,0,0)
2000 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
2014 integer,
intent(in) :: caseN,casei
2015 double complex,
intent(in) :: D0
2016 double complex,
intent(in) :: MomInv(6), masses2(0:3)
2017 double complex :: Dcoeff(0:0,0:0,0:0,0:0)
2018 double complex :: Dcoeffuv(0:0,0:0,0:0,0:0)
2021 dcoeff(0,0,0,0) = d0
2022 dcoeffuv(0,0,0,0) = 0d0
2023 call writeresultd(casen,casei,dcoeff,dcoeffuv,mominv,masses2,0)
2035 subroutine writeresultdten(caseN,casei,Dten,Dtenuv,MomVec,MomInv,masses2,rank,Derr)
2038 integer,
intent(in) :: rank,caseN,casei
2039 double complex,
intent(in) :: MomVec(0:3,3), MomInv(6), masses2(0:3)
2040 double complex,
intent(in) :: Dten(0:rank,0:rank,0:rank,0:rank)
2041 double complex,
intent(in) :: Dtenuv(0:rank,0:rank,0:rank,0:rank)
2042 double precision,
optional,
intent(in) :: Derr(0:rank)
2043 integer :: r,n0,n1,n2,n3,mode
2044 integer,
parameter :: rankuv=4
2045 character(len=99) :: fname
2046 character(len=*),
parameter :: fmt1 =
"(A17,' = ',es23.16,' + i*',es23.16)"
2047 character(len=*),
parameter :: fmt2 =
"(A17,' = ',es23.16)"
2048 character(len=*),
parameter :: fmt10 =
"(' Dten(',i1,3(',',i1),') = ',es23.16,' + i*',es23.16)"
2049 character(len=*),
parameter :: fmt11 =
"(' Derr(',i1,') = ',es23.16)"
2050 character(len=*),
parameter :: fmt12 =
"(' D0 = ',es23.16,' + i*',es23.16)"
2053 call getmode_cll(mode)
2056 fname =
'demo_4point_example00_coli.dat'
2058 fname =
'demo_4point_example00_dd.dat'
2060 fname =
'demo_4point_example00_comp.dat'
2062 write(fname(20:21),
'(i2.2)') casei
2066 open(unit=50,file=trim(fname),status=
'unknown')
2068 call getmuuv2_cll(muuv2)
2069 call getmuir2_cll(muir2)
2070 call getdeltauv_cll(deltauv)
2071 call getdeltair_cll(deltair1,deltair2)
2073 write (50,
'(a37,i2,i3/)')
' Result for 4-point function, example',casen,casei
2074 write (50,
'(a63,i2,i3,a)')
' The corresponding code can be found in demo.f90 under ''example',casen,casei,
''''
2076 write (50,
'((a))')
' p31 '
2077 write (50,
'((a))')
' ------------------ '
2078 write (50,
'((a))')
' / \ '
2079 write (50,
'((a))')
' m22,p2vec '
2080 write (50,
'((a))')
' p21 --------------------- p32 \ '
2081 write (50,
'((a))')
' | 2 | \ '
2082 write (50,
'((a))')
' | | |'
2083 write (50,
'((a))')
' m12,p1vec |1 3| m32,p3vec | p20'
2084 write (50,
'((a))')
' | | |'
2085 write (50,
'((a))')
' | 0 | / '
2086 write (50,
'((a))')
' p10 --------------------- p30 / '
2087 write (50,
'((a))')
' m02 '
2088 write (50,
'((a))')
''
2089 write (50,
'((a))')
' Input:'
2090 write (50,fmt1)
' p1vec(0) ',momvec(0,1)
2091 write (50,fmt1)
' p1vec(1) ',momvec(1,1)
2092 write (50,fmt1)
' p1vec(2) ',momvec(2,1)
2093 write (50,fmt1)
' p1vec(3) ',momvec(3,1)
2094 write (50,fmt1)
' p2vec(0) ',momvec(0,2)
2095 write (50,fmt1)
' p2vec(1) ',momvec(1,2)
2096 write (50,fmt1)
' p2vec(2) ',momvec(2,2)
2097 write (50,fmt1)
' p2vec(3) ',momvec(3,2)
2098 write (50,fmt1)
' p3vec(0) ',momvec(0,3)
2099 write (50,fmt1)
' p3vec(1) ',momvec(1,3)
2100 write (50,fmt1)
' p3vec(2) ',momvec(2,3)
2101 write (50,fmt1)
' p3vec(3) ',momvec(3,3)
2102 write (50,fmt1)
' p10 ',mominv(1)
2103 write (50,fmt1)
' p21 ',mominv(2)
2104 write (50,fmt1)
' p32 ',mominv(3)
2105 write (50,fmt1)
' p30 ',mominv(4)
2106 write (50,fmt1)
' p20 ',mominv(5)
2107 write (50,fmt1)
' p31 ',mominv(6)
2108 write (50,fmt1)
' m02 ',masses2(0)
2109 write (50,fmt1)
' m12 ',masses2(1)
2110 write (50,fmt1)
' m22 ',masses2(2)
2111 write (50,fmt1)
' m32 ',masses2(3)
2112 if (rank.ge.rankuv)
then
2113 write (50,fmt2)
' muUV2 ',muuv2
2115 write (50,fmt2)
' muIR2 ',muir2
2116 if (rank.ge.rankuv)
then
2117 write (50,fmt2)
' DeltaUV ',deltauv
2119 write (50,fmt2)
' DeltaIR1 ',deltair2
2120 write (50,fmt2)
' DeltaIR2 ',deltair1
2121 write (50,
'((a))')
''
2122 write (50,
'((a))')
' Conventions:'
2123 write (50,
'((a))')
''
2125 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2126 write (50,
'((a))')
' D0 = --------------- \int d^D q f(q,p_i)'
2127 write (50,
'((a))')
' i*pi^2 '
2130 write (50,
'((a))')
' = D0_fin(muUV2,muIR2) + '// &
2131 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2132 else if(rank.ge.rankuv)
then
2133 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2134 write (50,
'((a))')
' D = --------------- \int d^D q f(q,p_i)'
2135 write (50,
'((a))')
' i*pi^2 '
2138 write (50,
'((a))')
' = D_fin(muUV2,muIR2) + a_UV*DeltaUV + '// &
2139 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2141 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2142 write (50,
'((a))')
' D = --------------- \int d^D q f(q,p_i)'
2143 write (50,
'((a))')
' i*pi^2 '
2146 write (50,
'((a))')
' = D_fin(muUV2,muIR2) + '// &
2147 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2150 write (50,
'((a))')
' where'
2152 if (rank.gt.rankuv)
then
2153 write (50,
'((a))') &
2154 ' c(epsUV) c(epsIR) c(epsIR)'
2155 write (50,
'((a))') &
2156 ' DeltaUV = --------, DeltaIR1 = --------, DeltaIR2 = --------'
2157 write (50,
'((a))') &
2158 ' epsUV epsIR epsIR^2'
2160 write (50,
'((a))') &
2161 ' c(epsIR) c(epsIR)'
2162 write (50,
'((a))') &
2163 ' DeltaIR1 = --------, DeltaIR2 = --------'
2164 write (50,
'((a))') &
2168 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
2170 write (50,
'((a))')
' you can freely choose the regularization parameters'
2172 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
2174 write (50,
'((a))')
' of IR origin: muIR2 = mu^2, DeltaIR1, DeltaIR2'
2176 write (50,
'((a))')
' note:'
2177 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
2179 write (50,
'((a))')
' - by default DeltaUV = DeltaIR1 = DeltaIR2 = 0 '
2181 write (50,
'((a))')
' - by default DeltaIR1 = DeltaIR2 = 0 '
2183 write (50,
'((a))')
' - suitable DeltaIR2 can be used to adapt the effective normalization'
2185 write (50,
'((a))')
''
2186 write (50,
'((a))')
' Results:'
2194 write (50,fmt10) n0,n1,n2,n3,dten(n0,n1,n2,n3)
2200 write (50,
'(/(a))')
' Error estimates:'
2202 write (50,fmt11) r,derr(r)
2205 write (50,fmt12) dten(0,0,0,0)
2208 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
2221 subroutine writeresulte(caseN,casei,Ecoeff,Ecoeffuv,MomInv,masses2,rank,Eerr)
2224 integer,
intent(in) :: rank,caseN,casei
2225 double complex,
intent(in) :: MomInv(10), masses2(0:4)
2226 double complex,
intent(in) :: Ecoeff(0:rank/2,0:rank,0:rank,0:rank,0:rank)
2227 double complex,
intent(in) :: Ecoeffuv(0:rank/2,0:rank,0:rank,0:rank,0:rank)
2228 double precision,
optional,
intent(in) :: Eerr(0:rank)
2229 integer :: r,n0,n1,n2,n3,n4,mode
2230 integer,
parameter :: rankuv=6
2231 character(len=99) :: fname
2232 character(len=*),
parameter :: fmt1 =
"(A9,' = ',es23.16,' + i*',es23.16)"
2233 character(len=*),
parameter :: fmt2 =
"(A9,' = ',es23.16)"
2234 character(len=*),
parameter :: fmt10 =
"(' Ecoeff(',i1,4(',',i1),') = ',es23.16,' + i*',es23.16)"
2235 character(len=*),
parameter :: fmt11 =
"(' Eerr(',i1,') = ',es23.16)"
2236 character(len=*),
parameter :: fmt12 =
"(' E0 = ',es23.16,' + i*',es23.16)"
2239 call getmode_cll(mode)
2242 fname =
'demo_5point_example00_coli.dat'
2244 fname =
'demo_5point_example00_dd.dat'
2246 fname =
'demo_5point_example00_comp.dat'
2248 write(fname(20:21),
'(i2.2)') casei
2252 open(unit=50,file=trim(fname),status=
'unknown')
2254 call getmuuv2_cll(muuv2)
2255 call getmuir2_cll(muir2)
2256 call getdeltauv_cll(deltauv)
2257 call getdeltair_cll(deltair1,deltair2)
2259 write (50,
'(a37,i2,i3/)')
' Result for 5-point function, example',casen,casei
2260 write (50,
'(a63,i2,i3,a)')
' The corresponding code can be found in demo.f90 under ''example',casen,casei,
''''
2262 write (50,
'((a))')
' p31 '
2263 write (50,
'((a))')
' ---------^--------- '
2264 write (50,
'((a))')
' / \ '
2265 write (50,
'((a))')
' m22 '
2266 write (50,
'((a))')
' / p21 --------------------- p32 \ '
2267 write (50,
'((a))')
' / | 2 \ \ '
2268 write (50,
'((a))')
' / | 3\ m32 | p42'
2269 write (50,
'((a))')
' | |1 \ / '
2270 write (50,
'((a))')
' p20 | m12 | >---- p43 < '
2271 write (50,
'((a))')
' | | / \ '
2272 write (50,
'((a))')
' \ | 4/ m42 | p30'
2273 write (50,
'((a))')
' \ | 0 / / '
2274 write (50,
'((a))')
' \ p10 --------------------- p40 / '
2275 write (50,
'((a))')
' m02 '
2276 write (50,
'((a))')
' \ / '
2277 write (50,
'((a))')
' ---------v--------- '
2278 write (50,
'((a))')
' p41 '
2279 write (50,
'((a))')
''
2280 write (50,
'((a))')
' Input:'
2281 write (50,fmt1)
' p10 ',mominv(1)
2282 write (50,fmt1)
' p21 ',mominv(2)
2283 write (50,fmt1)
' p32 ',mominv(3)
2284 write (50,fmt1)
' p43 ',mominv(4)
2285 write (50,fmt1)
' p40 ',mominv(5)
2286 write (50,fmt1)
' p20 ',mominv(6)
2287 write (50,fmt1)
' p31 ',mominv(7)
2288 write (50,fmt1)
' p42 ',mominv(8)
2289 write (50,fmt1)
' p30 ',mominv(9)
2290 write (50,fmt1)
' p41 ',mominv(10)
2291 write (50,fmt1)
' m02 ',masses2(0)
2292 write (50,fmt1)
' m12 ',masses2(1)
2293 write (50,fmt1)
' m22 ',masses2(2)
2294 write (50,fmt1)
' m32 ',masses2(3)
2295 write (50,fmt1)
' m42 ',masses2(4)
2296 if (rank.ge.rankuv)
then
2297 write (50,fmt2)
' muUV2 ',muuv2
2299 write (50,fmt2)
' muIR2 ',muir2
2300 if (rank.ge.rankuv)
then
2301 write (50,fmt2)
' deltaUV ',deltauv
2303 write (50,fmt2)
' DeltaIR1',deltair2
2304 write (50,fmt2)
' DeltaIR2',deltair1
2305 write (50,
'((a))')
''
2306 write (50,
'((a))')
' Conventions:'
2307 write (50,
'((a))')
''
2309 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2310 write (50,
'((a))')
' E0 = --------------- \int d^D q f(q,p_i)'
2311 write (50,
'((a))')
' i*pi^2 '
2314 write (50,
'((a))')
' = E0_fin(muUV2,muIR2) + '// &
2315 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2316 elseif(rank.ge.rankuv)
then
2317 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2318 write (50,
'((a))')
' E = --------------- \int d^D q f(q,p_i)'
2319 write (50,
'((a))')
' i*pi^2 '
2322 write (50,
'((a))')
' = E_fin(muUV2,muIR2) + a_UV*DeltaUV + '// &
2323 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2325 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2326 write (50,
'((a))')
' E = --------------- \int d^D q f(q,p_i)'
2327 write (50,
'((a))')
' i*pi^2 '
2330 write (50,
'((a))')
' = E_fin(muUV2,muIR2) + '// &
2331 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2334 write (50,
'((a))')
' where'
2336 if (rank.ge.rankuv)
then
2337 write (50,
'((a))') &
2338 ' c(epsUV) c(epsIR) c(epsIR)'
2339 write (50,
'((a))') &
2340 ' DeltaUV = --------, DeltaIR1 = --------, DeltaIR2 = --------'
2341 write (50,
'((a))') &
2342 ' epsUV epsIR epsIR^2'
2344 write (50,
'((a))') &
2345 ' c(epsIR) c(epsIR)'
2346 write (50,
'((a))') &
2347 ' DeltaIR1 = --------, DeltaIR2 = --------'
2348 write (50,
'((a))') &
2352 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
2354 write (50,
'((a))')
' you can freely choose the regularization parameters'
2355 if (rank.ge.rankuv)
then
2356 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
2358 write (50,
'((a))')
' of IR origin: muIR2 = mu^2, DeltaIR1, DeltaIR2'
2360 write (50,
'((a))')
' note:'
2361 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
2362 if (rank.ge.rankuv)
then
2363 write (50,
'((a))')
' - by default DeltaUV = DeltaIR1 = DeltaIR2 = 0 '
2365 write (50,
'((a))')
' - by default DeltaIR1 = DeltaIR2 = 0 '
2367 write (50,
'((a))')
' - suitable DeltaIR2 can be used to adapt the effective normalization'
2369 write (50,
'((a))')
''
2370 write (50,
'((a))')
' Results:'
2377 do n3=0,r-2*n0-n1-n2
2378 n4 = r-2*n0-n1-n2-n3
2379 write (50,fmt10) n0,n1,n2,n3,n4,ecoeff(n0,n1,n2,n3,n4)
2386 write (50,
'(/(a))')
' Error estimates:'
2388 write (50,fmt11) r,eerr(r)
2391 write (50,fmt12) ecoeff(0,0,0,0,0)
2394 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
2408 integer,
intent(in) :: caseN,casei
2409 double complex,
intent(in) :: E0
2410 double complex,
intent(in) :: MomInv(10), masses2(0:4)
2411 double complex :: Ecoeff(0:0,0:0,0:0,0:0,0:0)
2412 double complex :: Ecoeffuv(0:0,0:0,0:0,0:0,0:0)
2415 ecoeff(0,0,0,0,0) = e0
2416 ecoeffuv(0,0,0,0,0) = 0d0
2417 call writeresulte(casen,casei,ecoeff,ecoeffuv,mominv,masses2,0)
2429 subroutine writeresulteten(caseN,casei,Eten,Etenuv,MomVec,MomInv,masses2,rank,Eerr)
2432 integer,
intent(in) :: rank,caseN,casei
2433 double complex,
intent(in) :: MomVec(0:3,4), MomInv(10), masses2(0:4)
2434 double complex,
intent(in) :: Eten(0:rank,0:rank,0:rank,0:rank)
2435 double complex,
intent(in) :: Etenuv(0:rank,0:rank,0:rank,0:rank)
2436 double precision,
optional,
intent(in) :: Eerr(0:rank)
2437 integer :: r,n0,n1,n2,n3,mode
2438 integer,
parameter :: rankuv=6
2439 character(len=99) :: fname
2440 character(len=*),
parameter :: fmt1 =
"(A17,' = ',es23.16,' + i*',es23.16)"
2441 character(len=*),
parameter :: fmt2 =
"(A17,' = ',es23.16)"
2442 character(len=*),
parameter :: fmt10 =
"(' Eten(',i1,3(',',i1),') = ',es23.16,' + i*',es23.16)"
2443 character(len=*),
parameter :: fmt11 =
"(' Eerr(',i1,') = ',es23.16)"
2444 character(len=*),
parameter :: fmt12 =
"(' E0 = ',es23.16,' + i*',es23.16)"
2447 call getmode_cll(mode)
2450 fname =
'demo_5point_example00_coli.dat'
2452 fname =
'demo_5point_example00_dd.dat'
2454 fname =
'demo_5point_example00_comp.dat'
2456 write(fname(20:21),
'(i2.2)') casei
2460 open(unit=50,file=trim(fname),status=
'unknown')
2462 call getmuuv2_cll(muuv2)
2463 call getmuir2_cll(muir2)
2464 call getdeltauv_cll(deltauv)
2465 call getdeltair_cll(deltair1,deltair2)
2467 write (50,
'(a37,i2,i3/)')
' Result for 5-point function, example',casen,casei
2468 write (50,
'(a63,i2,i3,a)')
' The corresponding code can be found in demo.f90 under ''example',casen,casei,
''''
2470 write (50,
'((a))')
' p31 '
2471 write (50,
'((a))')
' ---------^--------- '
2472 write (50,
'((a))')
' / \ '
2473 write (50,
'((a))')
' m22,p2vec '
2474 write (50,
'((a))')
' / p21 --------------------- p32 \ '
2475 write (50,
'((a))')
' / | 2 \ \ '
2476 write (50,
'((a))')
' / | 3\ m32,p3vec | p42'
2477 write (50,
'((a))')
' | |1 \ / '
2478 write (50,
'((a))')
' p20 | m12,p1vec| >---- p43 < '
2479 write (50,
'((a))')
' | | / \ '
2480 write (50,
'((a))')
' \ | 4/ m42,p4vec | p30'
2481 write (50,
'((a))')
' \ | 0 / / '
2482 write (50,
'((a))')
' \ p10 --------------------- p40 / '
2483 write (50,
'((a))')
' m02 '
2484 write (50,
'((a))')
' \ / '
2485 write (50,
'((a))')
' ---------v--------- '
2486 write (50,
'((a))')
' p41 '
2487 write (50,
'((a))')
''
2488 write (50,
'((a))')
' Input:'
2489 write (50,fmt1)
' p1vec(0) ',momvec(0,1)
2490 write (50,fmt1)
' p1vec(1) ',momvec(1,1)
2491 write (50,fmt1)
' p1vec(2) ',momvec(2,1)
2492 write (50,fmt1)
' p1vec(3) ',momvec(3,1)
2493 write (50,fmt1)
' p2vec(0) ',momvec(0,2)
2494 write (50,fmt1)
' p2vec(1) ',momvec(1,2)
2495 write (50,fmt1)
' p2vec(2) ',momvec(2,2)
2496 write (50,fmt1)
' p2vec(3) ',momvec(3,2)
2497 write (50,fmt1)
' p3vec(0) ',momvec(0,3)
2498 write (50,fmt1)
' p3vec(1) ',momvec(1,3)
2499 write (50,fmt1)
' p3vec(2) ',momvec(2,3)
2500 write (50,fmt1)
' p3vec(3) ',momvec(3,3)
2501 write (50,fmt1)
' p4vec(0) ',momvec(0,4)
2502 write (50,fmt1)
' p4vec(1) ',momvec(1,4)
2503 write (50,fmt1)
' p4vec(2) ',momvec(2,4)
2504 write (50,fmt1)
' p4vec(3) ',momvec(3,4)
2505 write (50,fmt1)
' p10 ',mominv(1)
2506 write (50,fmt1)
' p21 ',mominv(2)
2507 write (50,fmt1)
' p32 ',mominv(3)
2508 write (50,fmt1)
' p43 ',mominv(4)
2509 write (50,fmt1)
' p40 ',mominv(5)
2510 write (50,fmt1)
' p20 ',mominv(6)
2511 write (50,fmt1)
' p31 ',mominv(7)
2512 write (50,fmt1)
' p42 ',mominv(8)
2513 write (50,fmt1)
' p30 ',mominv(9)
2514 write (50,fmt1)
' p41 ',mominv(10)
2515 write (50,fmt1)
' m02 ',masses2(0)
2516 write (50,fmt1)
' m12 ',masses2(1)
2517 write (50,fmt1)
' m22 ',masses2(2)
2518 write (50,fmt1)
' m32 ',masses2(3)
2519 write (50,fmt1)
' m42 ',masses2(4)
2520 if (rank.ge.rankuv)
then
2521 write (50,fmt2)
' muUV2 ',muuv2
2523 write (50,fmt2)
' muIR2 ',muir2
2524 if (rank.ge.rankuv)
then
2525 write (50,fmt2)
' deltaUV ',deltauv
2527 write (50,fmt2)
' DeltaIR1 ',deltair2
2528 write (50,fmt2)
' DeltaIR2 ',deltair1
2529 write (50,
'((a))')
''
2530 write (50,
'((a))')
' Conventions:'
2531 write (50,
'((a))')
''
2533 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2534 write (50,
'((a))')
' E0 = --------------- \int d^D q f(q,p_i)'
2535 write (50,
'((a))')
' i*pi^2 '
2538 write (50,
'((a))')
' = E0_fin(muUV2,muIR2) + '// &
2539 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2540 elseif(rank.ge.rankuv)
then
2541 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2542 write (50,
'((a))')
' E = --------------- \int d^D q f(q,p_i)'
2543 write (50,
'((a))')
' i*pi^2 '
2546 write (50,
'((a))')
' = E_fin(muUV2,muIR2) + a_UV*DeltaUV + '// &
2547 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2549 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2550 write (50,
'((a))')
' E = --------------- \int d^D q f(q,p_i)'
2551 write (50,
'((a))')
' i*pi^2 '
2554 write (50,
'((a))')
' = E_fin(muUV2,muIR2) + '// &
2555 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2558 write (50,
'((a))')
' where'
2560 if (rank.ge.rankuv)
then
2561 write (50,
'((a))') &
2562 ' c(epsUV) c(epsIR) c(epsIR)'
2563 write (50,
'((a))') &
2564 ' DeltaUV = --------, DeltaIR1 = --------, DeltaIR2 = --------'
2565 write (50,
'((a))') &
2566 ' epsUV epsIR epsIR^2'
2568 write (50,
'((a))') &
2569 ' c(epsIR) c(epsIR)'
2570 write (50,
'((a))') &
2571 ' DeltaIR1 = --------, DeltaIR2 = --------'
2572 write (50,
'((a))') &
2576 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
2578 write (50,
'((a))')
' you can freely choose the regularization parameters'
2579 if (rank.ge.rankuv)
then
2580 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
2582 write (50,
'((a))')
' of IR origin: muIR2 = mu^2, DeltaIR1, DeltaIR2'
2584 write (50,
'((a))')
' note:'
2585 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
2586 if (rank.ge.rankuv)
then
2587 write (50,
'((a))')
' - by default DeltaUV = DeltaIR1 = DeltaIR2 = 0 '
2589 write (50,
'((a))')
' - by default DeltaIR1 = DeltaIR2 = 0 '
2591 write (50,
'((a))')
' - suitable DeltaIR2 can be used to adapt the effective normalization'
2593 write (50,
'((a))')
''
2594 write (50,
'((a))')
' Results:'
2602 write (50,fmt10) n0,n1,n2,n3,eten(n0,n1,n2,n3)
2608 write (50,
'(/(a))')
' Error estimates:'
2610 write (50,fmt11) r,eerr(r)
2613 write (50,fmt12) eten(0,0,0,0)
2616 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
2631 subroutine writeresultf(caseN,casei,Fcoeff,Fcoeffuv,MomInv,masses2,rank,Ferr)
2634 integer,
intent(in) :: rank,caseN,casei
2635 double complex,
intent(in) :: MomInv(15), masses2(0:5)
2636 double complex,
intent(in) :: Fcoeff(0:rank/2,0:rank,0:rank,0:rank,0:rank,0:rank)
2637 double complex,
intent(in) :: Fcoeffuv(0:rank/2,0:rank,0:rank,0:rank,0:rank,0:rank)
2638 double precision,
optional,
intent(in) :: Ferr(0:rank)
2639 integer :: r,n0,n1,n2,n3,n4,n5,mode
2640 integer,
parameter :: rankuv=8
2641 character(len=99) :: fname
2642 character(len=*),
parameter :: fmt1 =
"(A9,' = ',es23.16,' + i*',es23.16)"
2643 character(len=*),
parameter :: fmt2 =
"(A9,' = ',es23.16)"
2644 character(len=*),
parameter :: fmt10 =
"(' Fcoeff(',i1,5(',',i1),') = ',es23.16,' + i*',es23.16)"
2645 character(len=*),
parameter :: fmt11 =
"(' Ferr(',i1,') = ',es23.16)"
2646 character(len=*),
parameter :: fmt12 =
"(' F0 = ',es23.16,' + i*',es23.16)"
2649 call getmode_cll(mode)
2652 fname =
'demo_6point_example00_coli.dat'
2654 fname =
'demo_6point_example00_dd.dat'
2656 fname =
'demo_6point_example00_comp.dat'
2658 write(fname(20:21),
'(i2.2)') casei
2662 open(unit=50,file=trim(fname),status=
'unknown')
2664 call getmuuv2_cll(muuv2)
2665 call getmuir2_cll(muir2)
2666 call getdeltauv_cll(deltauv)
2667 call getdeltair_cll(deltair1,deltair2)
2669 write (50,
'(a37,i2,i3/)')
' Result for 6-point function, example',casen,casei
2670 write (50,
'(a63,i2,i3,a)')
' The corresponding code can be found in demo.f90 under ''example',casen,casei,
''''
2672 write (50,
'((a))')
' p42 '
2673 write (50,
'((a))')
' ---------^--------- '
2674 write (50,
'((a))')
' / \ '
2675 write (50,
'((a))')
' m32 '
2676 write (50,
'((a))')
' / p32 --------------------- p43 \ '
2677 write (50,
'((a))')
' / / 3 \ \ '
2678 write (50,
'((a))')
' p31 | m22 /2 4\ m42 | p53'
2679 write (50,
'((a))')
' \ / \ / '
2680 write (50,
'((a))')
' > p21 ----< >---- p54 < '
2681 write (50,
'((a))')
' / \ / \ '
2682 write (50,
'((a))')
' p20 | m12 \1 5/ m52 | p40'
2683 write (50,
'((a))')
' \ \ 0 / / '
2684 write (50,
'((a))')
' \ p10 --------------------- p50 / '
2685 write (50,
'((a))')
' m02 '
2686 write (50,
'((a))')
' \ / '
2687 write (50,
'((a))')
' ---------v--------- '
2688 write (50,
'((a))')
' p51 '
2689 write (50,
'((a))')
''
2690 write (50,
'((a))')
' Input:'
2691 write (50,fmt1)
' p10 ',mominv(1)
2692 write (50,fmt1)
' p21 ',mominv(2)
2693 write (50,fmt1)
' p32 ',mominv(3)
2694 write (50,fmt1)
' p43 ',mominv(4)
2695 write (50,fmt1)
' p54 ',mominv(5)
2696 write (50,fmt1)
' p50 ',mominv(6)
2697 write (50,fmt1)
' p20 ',mominv(7)
2698 write (50,fmt1)
' p31 ',mominv(8)
2699 write (50,fmt1)
' p42 ',mominv(9)
2700 write (50,fmt1)
' p53 ',mominv(10)
2701 write (50,fmt1)
' p40 ',mominv(11)
2702 write (50,fmt1)
' p51 ',mominv(12)
2703 write (50,fmt1)
' p30 ',mominv(13)
2704 write (50,fmt1)
' p41 ',mominv(14)
2705 write (50,fmt1)
' p52 ',mominv(15)
2706 write (50,fmt1)
' m02 ',masses2(0)
2707 write (50,fmt1)
' m12 ',masses2(1)
2708 write (50,fmt1)
' m22 ',masses2(2)
2709 write (50,fmt1)
' m32 ',masses2(3)
2710 write (50,fmt1)
' m42 ',masses2(4)
2711 write (50,fmt1)
' m52 ',masses2(5)
2712 if (rank.ge.rankuv)
then
2713 write (50,fmt2)
' muUV2 ',muuv2
2715 write (50,fmt2)
' muIR2 ',muir2
2716 if (rank.ge.rankuv)
then
2717 write (50,fmt2)
' deltaUV ',deltauv
2719 write (50,fmt2)
' DeltaIR1',deltair2
2720 write (50,fmt2)
' DeltaIR2',deltair1
2721 write (50,
'((a))')
''
2722 write (50,
'((a))')
' Conventions:'
2723 write (50,
'((a))')
''
2725 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2726 write (50,
'((a))')
' F0 = --------------- \int d^D q f(q,p_i)'
2727 write (50,
'((a))')
' i*pi^2 '
2730 write (50,
'((a))')
' = F0_fin(muUV2,muIR2) + '// &
2731 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2732 elseif(rank.ge.rankuv)
then
2733 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2734 write (50,
'((a))')
' F = --------------- \int d^D q f(q,p_i)'
2735 write (50,
'((a))')
' i*pi^2 '
2738 write (50,
'((a))')
' = F_fin(muUV2,muIR2) + a_UV*DeltaUV + '// &
2739 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2741 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2742 write (50,
'((a))')
' F = --------------- \int d^D q f(q,p_i)'
2743 write (50,
'((a))')
' i*pi^2 '
2746 write (50,
'((a))')
' = F_fin(muUV2,muIR2) + '// &
2747 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2750 write (50,
'((a))')
' where'
2752 if (rank.ge.rankuv)
then
2753 write (50,
'((a))') &
2754 ' c(epsUV) c(epsIR) c(epsIR)'
2755 write (50,
'((a))') &
2756 ' DeltaUV = --------, DeltaIR1 = --------, DeltaIR2 = --------'
2757 write (50,
'((a))') &
2758 ' epsUV epsIR epsIR^2'
2760 write (50,
'((a))') &
2761 ' c(epsIR) c(epsIR)'
2762 write (50,
'((a))') &
2763 ' DeltaIR1 = --------, DeltaIR2 = --------'
2764 write (50,
'((a))') &
2768 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
2770 write (50,
'((a))')
' you can freely choose the regularization parameters'
2771 if (rank.ge.rankuv)
then
2772 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
2774 write (50,
'((a))')
' of IR origin: muIR2 = mu^2, DeltaIR1, DeltaIR2'
2776 write (50,
'((a))')
' note:'
2777 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
2778 if (rank.ge.rankuv)
then
2779 write (50,
'((a))')
' - by default DeltaUV = DeltaIR1 = DeltaIR2 = 0 '
2781 write (50,
'((a))')
' - by default DeltaIR1 = DeltaIR2 = 0 '
2783 write (50,
'((a))')
' - suitable DeltaIR2 can be used to adapt the effective normalization'
2785 write (50,
'((a))')
''
2786 write (50,
'((a))')
' Results:'
2793 do n3=0,r-2*n0-n1-n2
2794 do n4=0,r-2*n0-n1-n2-n3
2795 n5 = r-2*n0-n1-n2-n3-n4
2796 write (50,fmt10) n0,n1,n2,n3,n4,n5,fcoeff(n0,n1,n2,n3,n4,n5)
2804 write (50,
'(/(a))')
' Error estimates:'
2806 write (50,fmt11) r,ferr(r)
2809 write (50,fmt12) fcoeff(0,0,0,0,0,0)
2812 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
2826 integer,
intent(in) :: caseN,casei
2827 double complex,
intent(in) :: F0
2828 double complex,
intent(in) :: MomInv(15), masses2(0:5)
2829 double complex :: Fcoeff(0:0,0:0,0:0,0:0,0:0,0:0)
2830 double complex :: Fcoeffuv(0:0,0:0,0:0,0:0,0:0,0:0)
2833 fcoeff(0,0,0,0,0,0) = f0
2834 fcoeffuv(0,0,0,0,0,0) = 0d0
2835 call writeresultf(casen,casei,fcoeff,fcoeffuv,mominv,masses2,0)
2849 subroutine writeresultften(caseN,casei,Ften,Ftenuv,MomVec,MomInv,masses2,rank,Ferr)
2852 integer,
intent(in) :: rank,caseN,casei
2853 double precision,
optional,
intent(in) :: Ferr(0:rank)
2854 double complex,
intent(in) :: MomVec(0:3,1:5), MomInv(15), masses2(0:5)
2855 double complex,
intent(in) :: Ften(0:rank,0:rank,0:rank,0:rank)
2856 double complex,
intent(in) :: Ftenuv(0:rank,0:rank,0:rank,0:rank)
2857 integer :: r,n0,n1,n2,n3,mode
2858 integer,
parameter :: rankuv=8
2859 character(len=99) :: fname
2860 character(len=*),
parameter :: fmt1 =
"(A17,' = ',es23.16,' + i*',es23.16)"
2861 character(len=*),
parameter :: fmt2 =
"(A17,' = ',es23.16)"
2862 character(len=*),
parameter :: fmt10 =
"(' Ften(',i1,3(',',i1),') = ',es23.16,' + i*',es23.16)"
2863 character(len=*),
parameter :: fmt11 =
"(' Ferr(',i1,') = ',es23.16)"
2864 character(len=*),
parameter :: fmt12 =
"(' F0 = ',es23.16,' + i*',es23.16)"
2867 call getmode_cll(mode)
2870 fname =
'demo_6point_example00_coli.dat'
2872 fname =
'demo_6point_example00_dd.dat'
2874 fname =
'demo_6point_example00_comp.dat'
2876 write(fname(20:21),
'(i2.2)') casei
2880 open(unit=50,file=trim(fname),status=
'unknown')
2882 call getmuuv2_cll(muuv2)
2883 call getmuir2_cll(muir2)
2884 call getdeltauv_cll(deltauv)
2885 call getdeltair_cll(deltair1,deltair2)
2887 write (50,
'(a37,i2,i3/)')
' Result for 6-point function, example',casen,casei
2888 write (50,
'(a63,i2,i3,a)')
' The corresponding code can be found in demo.f90 under ''example',casen,casei,
''''
2890 write (50,
'((a))')
' p42 '
2891 write (50,
'((a))')
' ---------^--------- '
2892 write (50,
'((a))')
' / \ '
2893 write (50,
'((a))')
' m32,p3vec '
2894 write (50,
'((a))')
' / p32 --------------------- p43 \ '
2895 write (50,
'((a))')
' / / 3 \ \ '
2896 write (50,
'((a))')
' p31 | m22,p2vec/2 4\ m42,p4vec | p53'
2897 write (50,
'((a))')
' \ / \ / '
2898 write (50,
'((a))')
' > p21 ----< >---- p54 < '
2899 write (50,
'((a))')
' / \ / \ '
2900 write (50,
'((a))')
' p20 | m12,p1vec\1 5/ m52,p5vec | p40'
2901 write (50,
'((a))')
' \ \ 0 / / '
2902 write (50,
'((a))')
' \ p10 --------------------- p50 / '
2903 write (50,
'((a))')
' m02 '
2904 write (50,
'((a))')
' \ / '
2905 write (50,
'((a))')
' ---------v--------- '
2906 write (50,
'((a))')
' p51 '
2907 write (50,
'((a))')
''
2908 write (50,
'((a))')
' Input:'
2909 write (50,fmt1)
' p1vec(0) ',momvec(0,1)
2910 write (50,fmt1)
' p1vec(1) ',momvec(1,1)
2911 write (50,fmt1)
' p1vec(2) ',momvec(2,1)
2912 write (50,fmt1)
' p1vec(3) ',momvec(3,1)
2913 write (50,fmt1)
' p2vec(0) ',momvec(0,2)
2914 write (50,fmt1)
' p2vec(1) ',momvec(1,2)
2915 write (50,fmt1)
' p2vec(2) ',momvec(2,2)
2916 write (50,fmt1)
' p2vec(3) ',momvec(3,2)
2917 write (50,fmt1)
' p3vec(0) ',momvec(0,3)
2918 write (50,fmt1)
' p3vec(1) ',momvec(1,3)
2919 write (50,fmt1)
' p3vec(2) ',momvec(2,3)
2920 write (50,fmt1)
' p3vec(3) ',momvec(3,3)
2921 write (50,fmt1)
' p4vec(0) ',momvec(0,4)
2922 write (50,fmt1)
' p4vec(1) ',momvec(1,4)
2923 write (50,fmt1)
' p4vec(2) ',momvec(2,4)
2924 write (50,fmt1)
' p4vec(3) ',momvec(3,4)
2925 write (50,fmt1)
' p5vec(0) ',momvec(0,5)
2926 write (50,fmt1)
' p5vec(1) ',momvec(1,5)
2927 write (50,fmt1)
' p5vec(2) ',momvec(2,5)
2928 write (50,fmt1)
' p5vec(3) ',momvec(3,5)
2929 write (50,fmt1)
' p10 ',mominv(1)
2930 write (50,fmt1)
' p21 ',mominv(2)
2931 write (50,fmt1)
' p32 ',mominv(3)
2932 write (50,fmt1)
' p43 ',mominv(4)
2933 write (50,fmt1)
' p54 ',mominv(5)
2934 write (50,fmt1)
' p50 ',mominv(6)
2935 write (50,fmt1)
' p20 ',mominv(7)
2936 write (50,fmt1)
' p31 ',mominv(8)
2937 write (50,fmt1)
' p42 ',mominv(9)
2938 write (50,fmt1)
' p53 ',mominv(10)
2939 write (50,fmt1)
' p40 ',mominv(11)
2940 write (50,fmt1)
' p51 ',mominv(12)
2941 write (50,fmt1)
' p30 ',mominv(13)
2942 write (50,fmt1)
' p41 ',mominv(14)
2943 write (50,fmt1)
' p52 ',mominv(15)
2944 write (50,fmt1)
' m02 ',masses2(0)
2945 write (50,fmt1)
' m12 ',masses2(1)
2946 write (50,fmt1)
' m22 ',masses2(2)
2947 write (50,fmt1)
' m32 ',masses2(3)
2948 write (50,fmt1)
' m42 ',masses2(4)
2949 write (50,fmt1)
' m52 ',masses2(5)
2950 if (rank.ge.rankuv)
then
2951 write (50,fmt2)
' muUV2 ',muuv2
2953 write (50,fmt2)
' muIR2 ',muir2
2954 if (rank.ge.rankuv)
then
2955 write (50,fmt2)
' deltaUV ',deltauv
2957 write (50,fmt2)
' DeltaIR1',deltair2
2958 write (50,fmt2)
' DeltaIR2',deltair1
2959 write (50,
'((a))')
''
2960 write (50,
'((a))')
' Conventions:'
2961 write (50,
'((a))')
''
2963 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2964 write (50,
'((a))')
' F0 = --------------- \int d^D q f(q,p_i)'
2965 write (50,
'((a))')
' i*pi^2 '
2968 write (50,
'((a))')
' = F0_fin(muUV2,muIR2) + '// &
2969 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2970 elseif(rank.ge.rankuv)
then
2971 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2972 write (50,
'((a))')
' F = --------------- \int d^D q f(q,p_i)'
2973 write (50,
'((a))')
' i*pi^2 '
2976 write (50,
'((a))')
' = F_fin(muUV2,muIR2) + a_UV*DeltaUV + '// &
2977 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2979 write (50,
'((a))')
' (2*pi*mu)^(4-D) '
2980 write (50,
'((a))')
' F = --------------- \int d^D q f(q,p_i)'
2981 write (50,
'((a))')
' i*pi^2 '
2984 write (50,
'((a))')
' = F_fin(muUV2,muIR2) + '// &
2985 ' a_IR2*[DeltaIR2 + DeltaIR1*ln(muIR2)] + a_IR1*DeltaIR1'
2988 write (50,
'((a))')
' where'
2990 if (rank.ge.rankuv)
then
2991 write (50,
'((a))') &
2992 ' c(epsUV) c(epsIR) c(epsIR)'
2993 write (50,
'((a))') &
2994 ' DeltaUV = --------, DeltaIR1 = --------, DeltaIR2 = --------'
2995 write (50,
'((a))') &
2996 ' epsUV epsIR epsIR^2'
2998 write (50,
'((a))') &
2999 ' c(epsIR) c(epsIR)'
3000 write (50,
'((a))') &
3001 ' DeltaIR1 = --------, DeltaIR2 = --------'
3002 write (50,
'((a))') &
3006 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
3008 write (50,
'((a))')
' you can freely choose the regularization parameters'
3009 if (rank.ge.rankuv)
then
3010 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
3012 write (50,
'((a))')
' of IR origin: muIR2 = mu^2, DeltaIR1, DeltaIR2'
3014 write (50,
'((a))')
' note:'
3015 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
3016 if (rank.ge.rankuv)
then
3017 write (50,
'((a))')
' - by default DeltaUV = DeltaIR1 = DeltaIR2 = 0 '
3019 write (50,
'((a))')
' - by default DeltaIR1 = DeltaIR2 = 0 '
3021 write (50,
'((a))')
' - suitable DeltaIR2 can be used to adapt the effective normalization'
3023 write (50,
'((a))')
''
3024 write (50,
'((a))')
' Results:'
3032 write (50,fmt10) n0,n1,n2,n3,ften(n0,n1,n2,n3)
3038 write (50,
'(/(a))')
' Error estimates:'
3040 write (50,fmt11) r,ferr(r)
3043 write (50,fmt12) ften(0,0,0,0)
3046 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
3061 subroutine writeresultdb(caseN,casei,DBcoeff,DBcoeffuv,MomInv,masses2,rankm,rank,DBerr)
3064 integer,
intent(in) :: rank,rankm,caseN,casei
3065 double complex,
intent(in) :: MomInv(1), masses2(0:1)
3066 double complex,
intent(in) :: DBcoeff(0:rank/2,0:rank)
3067 double complex,
intent(in) :: DBcoeffuv(0:rank/2,0:rank)
3068 double precision,
optional,
intent(in) :: DBerr(0:rank)
3069 integer :: r,n0,n1,mode
3070 integer,
parameter :: rankuv=0
3071 character(len=99) :: fname
3072 character(len=*),
parameter :: fmt1 =
"(A9,' = ',es23.16,' + i*',es23.16)"
3073 character(len=*),
parameter :: fmt2 =
"(A9,' = ',es23.16)"
3074 character(len=*),
parameter :: fmt10 =
"(' DBcoeff(',i1,1(',',i1),') = ',es23.16,' + i*',es23.16)"
3075 character(len=*),
parameter :: fmt11 =
"(' DBerr(',i1,') = ',es23.16)"
3076 character(len=*),
parameter :: fmt12 =
"(' DB0 = ',es23.16,' + i*',es23.16)"
3077 character(len=*),
parameter :: fmt13 =
"(' DB1 = ',es23.16,' + i*',es23.16)"
3078 character(len=*),
parameter :: fmt14 =
"(' DB00 = ',es23.16,' + i*',es23.16)"
3079 character(len=*),
parameter :: fmt20 =
"(' DBcoeffuv(',i1,1(',',i1),') = ',es23.16,' + i*',es23.16)"
3082 call getmode_cll(mode)
3085 fname =
'demo_2point_derivative_example00_coli.dat'
3087 fname =
'demo_2point_derivative_example00_dd.dat'
3089 fname =
'demo_2point_derivative_example00_comp.dat'
3091 write(fname(31:32),
'(i2.2)') casei
3093 open(unit=50,file=trim(fname),status=
'unknown')
3095 call getmuuv2_cll(muuv2)
3096 call getmuir2_cll(muir2)
3097 call getdeltauv_cll(deltauv)
3098 call getdeltair_cll(deltair1,deltair2)
3100 write (50,
'(a49,i2,i3/)')
' Result for 2-point function derivative, example ',casen,casei
3101 write (50,
'((a))')
' m12 '
3102 write (50,
'((a))')
' ------- '
3103 write (50,
'((a))')
' / 1 \ '
3104 write (50,
'((a))')
' / \ '
3105 write (50,
'((a))')
' p10 ----- ----- p10 '
3106 write (50,
'((a))')
' \ / '
3107 write (50,
'((a))')
' \ 0 / '
3108 write (50,
'((a))')
' ------- '
3109 write (50,
'((a))')
' m02 '
3110 write (50,
'((a))')
''
3111 write (50,
'((a))')
' Input:'
3112 write (50,fmt1)
' p10 ',p10
3113 write (50,fmt1)
' m02 ',masses2(0)
3114 write (50,fmt1)
' m12 ',masses2(1)
3115 if (rank.ge.rankuv)
then
3116 write (50,fmt2)
' muUV2 ',muuv2
3119 if (rank.ge.rankuv)
then
3120 write (50,fmt2)
' deltaUV ',deltauv
3124 write (50,
'((a))')
''
3125 write (50,
'((a))')
' Conventions:'
3126 write (50,
'((a))')
''
3127 if(rankm.eq.0.and.rank.gt.0)
then
3128 write (50,
'((a))')
' d (2*pi*mu)^(4-D) '
3129 write (50,
'((a))')
' DB = ----- --------------- \int d^D q f(q,p_i)'
3130 write (50,
'((a))')
' d p^2 i*pi^2 '
3133 write (50,
'((a))')
' = DB_fin(muUV2,muIR2) + a_UV*DeltaUV + a_IR1*DeltaIR1 '
3134 else if (rank.eq.0)
then
3135 write (50,
'((a))')
' d (2*pi*mu)^(4-D) '
3136 write (50,
'((a))')
' DB0 = ----- --------------- \int d^D q f(q,p_i)'
3137 write (50,
'((a))')
' d p^2 i*pi^2 '
3140 write (50,
'((a))')
' = DB0_fin(muIR2) + a_IR1*DeltaIR1 '
3141 else if (rank.eq.1.and.rankm.eq.1)
then
3142 write (50,
'((a))')
' d (2*pi*mu)^(4-D) '
3143 write (50,
'((a))')
' DB1 = ----- --------------- \int d^D q f(q,p_i)'
3144 write (50,
'((a))')
' d p^2 i*pi^2 '
3147 write (50,
'((a))')
' = DB1_fin(muIR2) + a_IR1*DeltaIR1 '
3148 else if (rank.eq.2.and.rankm.eq.2)
then
3149 write (50,
'((a))')
' d (2*pi*mu)^(4-D) '
3150 write (50,
'((a))')
' DB00 = ----- --------------- \int d^D q f(q,p_i)'
3151 write (50,
'((a))')
' d p^2 i*pi^2 '
3154 write (50,
'((a))')
' = DB0_fin(muUV2,muIR2)) + a_UV*DeltaUV + a_IR1*DeltaIR1 '
3157 write (50,
'((a))')
' where'
3160 write (50,
'((a))') &
3161 ' c(epsUV) c(epsIR) '
3162 write (50,
'((a))') &
3163 ' DeltaUV = --------, DeltaIR1 = -------- '
3164 write (50,
'((a))') &
3167 write (50,
'((a))') &
3169 write (50,
'((a))') &
3170 ' DeltaIR1 = -------- '
3171 write (50,
'((a))') &
3175 write (50,
'((a))')
' c(eps) = (4*pi)^eps\Gamma(1+eps), D = 4 -2*eps '
3177 write (50,
'((a))')
' you can freely choose the regularization parameters'
3179 write (50,
'((a))')
' of UV origin: muUV2 = mu^2, DeltaUV '
3181 write (50,
'((a))')
' of IR origin: muIR2 = mu^2, DeltaIR1'
3183 write (50,
'((a))')
' note:'
3184 write (50,
'((a))')
' - we effectively factor out a factor c(eps) '
3185 write (50,
'((a))')
' - by default DeltaUV = 0 '
3187 write (50,
'((a))')
''
3188 write (50,
'((a))')
' Results:'
3195 write (50,fmt10) n0,n1,dbcoeff(n0,n1)
3198 else if(rankm.eq.1.and.rank.eq.1)
then
3199 write (50,fmt12) dbcoeff(0,1)
3200 else if(rankm.eq.2.and.rank.eq.2)
then
3201 write (50,fmt13) dbcoeff(1,0)
3203 write (*,*)
'writeresultDB: case not supported'
3214 if(
present(dberr))
then
3215 write (50,
'(/(a))')
' Error estimates:'
3217 write (50,fmt11) r,dberr(r)
3221 write (50,fmt12) dbcoeff(0,0)
3224 write(*,
'(/(a),(a)/)')
' The result has been written to the file ' &
3238 integer,
intent(in) :: caseN,casei
3239 double complex,
intent(in) :: DB0
3240 double complex,
intent(in) :: MomInv(1), masses2(0:1)
3241 double complex :: DBcoeff(0:0,0:0)
3242 double complex :: DBcoeffuv(0:0,0:0)
3245 dbcoeff(0:0,0:0) = db0
3246 dbcoeffuv(0:0,0:0) = 0d0
3247 call writeresultdb(casen,casei,dbcoeff,dbcoeffuv,mominv,masses2,0,0)
3265 integer,
intent(in) :: N
3266 double complex,
intent(out) :: MomInv(N*(N-1)/2)
3267 double complex,
intent(out),
optional :: MomVec(0:3,N-1)
3268 double precision :: p(1:6,0:3)
3270 double precision :: s(0:5,0:5)
3273 if (n.gt.6.or.n.lt.3)
then
3274 write(*,*)
' getinvariants: N>6 of N<3 not supported '
3277 p(1,0) = -0.9500000000000000d+02
3278 p(1,1) = 0.0000000000000000d+00
3279 p(1,2) = 0.0000000000000000d+00
3280 p(1,3) = 0.9500000000000000d+02
3282 p(2,0) = -0.9500000000000000d+02
3283 p(2,1) = 0.0000000000000000d+00
3284 p(2,2) = 0.0000000000000000d+00
3285 p(2,3) = -0.9500000000000000d+02
3287 p(3,0) = 0.2046111001757171d+02
3288 p(3,1) = 0.1057734233089455d+02
3289 p(3,2) = -0.2324961261504543d+01
3290 p(3,3) = 0.1736005205921753d+02
3292 p(4,0) = 0.3558305163378869d+01
3293 p(4,1) = 0.1436222934374051d+01
3294 p(4,2) = -0.2174258125294355d+01
3295 p(4,3) = -0.2423097382091398d+01
3297 p(5,0) = 0.8154540918019539d+02
3298 p(5,1) = -0.5230395944682889d+02
3299 p(5,2) = 0.3083642435466509d+02
3300 p(5,3) = 0.5443403822581044d+02
3302 p(6,0) = 0.8443517563885433d+02
3303 p(6,1) = 0.4029039418156027d+02
3304 p(6,2) = -0.2633720496786619d+02
3305 p(6,3) = -0.6937099290293661d+02
3309 p(n,0) = p(n,0) + p(i,0)
3310 p(n,1) = p(n,1) + p(i,1)
3311 p(n,2) = p(n,2) + p(i,2)
3312 p(n,3) = p(n,3) + p(i,3)
3315 if (
present(momvec))
then
3316 momvec(0:3,1) = p(1,0:3)
3318 momvec(0:3,i) = momvec(0:3,i-1)+p(i,0:3)
3324 s(modulo(k+1,n),k) = p(k+1,0)**2
3326 s(modulo(k+1,n),k) = s(modulo(k+1,n),k) - p(k+1,i)**2
3328 if(abs(s(modulo(k+1,n),k)).lt.1d-14* abs(p(k+1,0))**2) s(modulo(k+1,n),k) = 0d0
3330 s(k,modulo(k+1,n)) = s(modulo(k+1,n),k)
3333 s(modulo(k+2,n),k) = (p(modulo(k+1,n)+1,0) + p(k+1,0))**2
3335 s(modulo(k+2,n),k) = s(modulo(k+2,n),k) &
3336 - (p(modulo(k+1,n)+1,i) + p(k+1,i))**2
3338 s(k,modulo(k+2,n)) = s(modulo(k+2,n),k)
3341 s(modulo(k+3,n),k) = (p(modulo(k+2,n)+1,0) + p(modulo(k+1,n)+1,0) + p(k+1,0))**2
3343 s(modulo(k+3,n),k) = s(modulo(k+3,n),k) &
3344 - (p(modulo(k+2,n)+1,i) + p(modulo(k+1,n)+1,i) + p(k+1,i))**2
3346 s(k,modulo(k+3,n)) = s(modulo(k+3,n),k)
3351 mominv(k+n*i) = s(modulo(k+i,n),k-1)
3356 if(modulo(n,2).eq.0)
then
3358 mominv(k+n*(n/2-1)) = s(modulo(k+n/2-1,n),k-1)