105 integer,
intent(in) :: rmax
106 double complex,
intent(in) :: masses2(0:0)
107 double complex,
intent(out) :: TA(0:rmax,0:rmax,0:rmax,0:rmax)
108 double complex,
intent(out) :: TAuv(0:rmax,0:rmax,0:rmax,0:rmax)
109 double precision,
intent(out),
optional :: TAerr(0:rmax)
110 double complex :: TA2(0:rmax,0:rmax,0:rmax,0:rmax), TAuv2(0:rmax,0:rmax,0:rmax,0:rmax)
111 double complex :: CA(0:rmax/2), CAuv(0:rmax/2)
112 double precision :: CAerr(0:rmax),TAerr_aux(0:rmax),TAerr_aux2(0:rmax)
113 double complex :: args(1)
114 double precision :: TAdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TAacc(0:rmax)
115 integer :: r,n0,n1,n2,n3
120 call errout_cll(
'Aten_cll',
'Nmax_cll smaller 1',eflag,.true.)
122 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 1'
128 call errout_cll(
'Aten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
131 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
137 call setmasterfname_cll(
'Aten_cll')
138 call setmastern_cll(1)
139 call setmasterr_cll(rmax)
140 call setmasterargs_cll(1,args)
147 call a_cll(ca,cauv,masses2(0),rmax,caerr,0)
148 call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
152 call a_cll(ca,cauv,masses2(0),rmax,caerr,0)
153 call calctensora(ta2,tauv2,taerr_aux2,ca,cauv,caerr,rmax)
164 norm_coli = max(norm_coli,abs(ta(n0,n1,n2,n3)))
165 norm_dd = max(norm_dd,abs(ta2(n0,n1,n2,n3)))
169 if (norm_coli.eq.0d0)
then
170 norm_coli = abs(masses2(0))
171 if(norm_coli.ne.0d0)
then
172 norm_coli=norm_coli**(1+real(r)/2)
177 if (norm_dd.eq.0d0)
then
178 norm_dd = abs(masses2(0))
179 if(norm_dd.ne.0d0)
then
180 norm_dd=norm_dd**(1+real(r)/2)
185 norm(r) = min(norm_coli,norm_dd)
188 call checktena_cll(ta,ta2,masses2,norm,rmax,tadiff)
190 if (taerr_aux(rmax).lt.taerr_aux2(rmax))
then
191 if (
present(taerr)) taerr = max(taerr_aux,tadiff*norm)
193 taacc(r) = max(taerr_aux(r)/norm(r),tadiff(r))
199 if (
present(taerr)) taerr = max(taerr_aux2,tadiff*norm)
201 taacc(r) = max(taerr_aux2(r)/norm(r),tadiff(r))
207 call a_cll(ca,cauv,masses2(0),rmax,caerr,0)
208 call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
209 if (
present(taerr)) taerr = taerr_aux
216 norm(r) = max(norm(r),abs(ta(n0,n1,n2,n3)))
220 if (norm(r).eq.0d0)
then
221 norm(r) = abs(masses2(0))
222 if(norm(r).ne.0d0)
then
223 norm(r)=norm(r)**(1+real(r)/2)
230 taacc(r) = taerr_aux(r)/norm(r)
248 write(
ncpout_cll,*)
' Further output of Critical Points for TAten_cll suppressed'
254 write(
ncpout2_cll,*)
' Further output of Critical Points for TAten_cll suppressed'
275 integer,
intent(in) :: rmax
276 double complex,
intent(in) :: masses2(0:0)
277 double complex,
intent(out) :: TA(:),TAuv(:)
278 double precision,
intent(out),
optional :: TAerr(0:rmax)
284 call errout_cll(
'Aten_cll',
'Nmax_cll smaller 1',eflag,.true.)
286 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 1'
292 call errout_cll(
'Aten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
295 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
307 integer,
intent(in) :: rmax
308 double complex,
intent(in) :: masses2(0:0)
309 double complex,
intent(out) :: TA(RtS(rmax)),TAuv(RtS(rmax))
310 double precision,
intent(out),
optional :: TAerr(0:rmax)
311 double complex :: TA2(RtS(rmax)),TAuv2(RtS(rmax))
312 double complex :: CA(0:rmax/2), CAuv(0:rmax/2)
313 double precision :: CAerr(0:rmax), TAerr_aux(0:rmax), TAerr_aux2(0:rmax)
314 double complex :: args(1)
315 double precision :: TAdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TAacc(0:rmax)
319 call setmasterfname_cll(
'Aten_cll')
320 call setmastern_cll(1)
321 call setmasterr_cll(rmax)
322 call setmasterargs_cll(1,args)
329 call a_cll(ca,cauv,masses2(0),rmax,caerr,0)
334 call a_cll(ca,cauv,masses2(0),rmax,caerr,0)
342 do i=rts(r-1)+1,rts(r)
343 norm_coli = max(norm_coli,abs(ta(i)))
344 norm_dd = max(norm_dd,abs(ta2(i)))
346 if (norm_coli.eq.0d0)
then
347 norm_coli = abs(masses2(0))
348 if(norm_coli.ne.0d0)
then
349 norm_coli=norm_coli**(1+real(r)/2)
354 if (norm_dd.eq.0d0)
then
355 norm_dd = abs(masses2(0))
356 if(norm_dd.ne.0d0)
then
357 norm_dd=norm_dd**(1+real(r)/2)
362 norm(r) = min(norm_coli,norm_dd)
365 call checktenalist_cll(ta,ta2,masses2,norm,rmax,tadiff)
367 if (taerr_aux(rmax).lt.taerr_aux2(rmax))
then
368 if (
present(taerr)) taerr = max(taerr_aux,tadiff*norm)
370 taacc(r) = max(taerr_aux(r)/norm(r),tadiff(r))
376 if (
present(taerr)) taerr = max(taerr_aux2,tadiff*norm)
378 taacc(r) = max(taerr_aux2(r)/norm(r),tadiff(r))
384 call a_cll(ca,cauv,masses2(0),rmax,caerr,0)
386 if (
present(taerr)) taerr = taerr_aux
389 do i=rts(r-1)+1,rts(r)
390 norm(r) = max(norm(r),abs(ta(i)))
392 if (norm(r).eq.0d0)
then
393 norm(r) = abs(masses2(0))
394 if(norm(r).ne.0d0)
then
395 norm(r)=norm(r)**(1+real(r)/2)
402 taacc(r) = taerr_aux(r)/norm(r)
420 write(
ncpout_cll,*)
' Further output of Critical Points for TAten_cll suppressed'
426 write(
ncpout2_cll,*)
' Further output of Critical Points for TAten_cll suppressed'
447 integer,
intent(in) :: rmax
448 double complex,
intent(in) :: m02
449 double complex,
intent(out) :: TA(0:rmax,0:rmax,0:rmax,0:rmax)
450 double complex,
intent(out) :: TAuv(0:rmax,0:rmax,0:rmax,0:rmax)
451 double precision,
intent(out),
optional :: TAerr(0:rmax)
452 double complex :: TA2(0:rmax,0:rmax,0:rmax,0:rmax), TAuv2(0:rmax,0:rmax,0:rmax,0:rmax)
453 double complex :: CA(0:rmax/2), CAuv(0:rmax/2)
454 double precision :: CAerr(0:rmax),TAerr_aux(0:rmax),TAerr_aux2(0:rmax)
455 double complex :: args(1),masses2(0:0)
456 double precision :: TAdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TAacc(0:rmax)
457 integer :: r,n0,n1,n2,n3
462 call errout_cll(
'Aten_cll',
'Nmax_cll smaller 1',eflag,.true.)
464 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 1'
470 call errout_cll(
'Aten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
473 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
480 call setmasterfname_cll(
'Aten_cll')
481 call setmastern_cll(1)
482 call setmasterr_cll(rmax)
483 call setmasterargs_cll(1,args)
490 call a_cll(ca,cauv,m02,rmax,caerr,0)
491 call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
495 call a_cll(ca,cauv,m02,rmax,caerr,0)
496 call calctensora(ta2,tauv2,taerr_aux2,ca,cauv,caerr,rmax)
507 norm_coli = max(norm_coli,abs(ta(n0,n1,n2,n3)))
508 norm_dd = max(norm_dd,abs(ta2(n0,n1,n2,n3)))
512 if (norm_coli.eq.0d0)
then
513 norm_coli = abs(masses2(0))
514 if(norm_coli.ne.0d0)
then
515 norm_coli=norm_coli**(1+real(r)/2)
520 if (norm_dd.eq.0d0)
then
521 norm_dd = abs(masses2(0))
522 if(norm_dd.ne.0d0)
then
523 norm_dd=norm_dd**(1+real(r)/2)
528 norm(r) = min(norm_coli,norm_dd)
531 call checktena_cll(ta,ta2,masses2,norm,rmax,tadiff)
533 if (taerr_aux(rmax).lt.taerr_aux2(rmax))
then
534 if (
present(taerr)) taerr = max(taerr_aux,tadiff*norm)
536 taacc(r) = max(taerr_aux(r)/norm(r),tadiff(r))
542 if (
present(taerr)) taerr = max(taerr_aux2,tadiff*norm)
544 taacc(r) = max(taerr_aux2(r)/norm(r),tadiff(r))
550 call a_cll(ca,cauv,m02,rmax,caerr,0)
551 call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
552 if (
present(taerr)) taerr = taerr_aux
559 norm(r) = max(norm(r),abs(ta(n0,n1,n2,n3)))
563 if (norm(r).eq.0d0)
then
564 norm(r) = abs(masses2(0))
565 if(norm(r).ne.0d0)
then
566 norm(r)=norm(r)**(1+real(r)/2)
573 taacc(r) = taerr_aux(r)/norm(r)
591 write(
ncpout_cll,*)
' Further output of Critical Points for TAten_cll suppressed'
597 write(
ncpout2_cll,*)
' Further output of Critical Points for TAten_cll suppressed'
618 integer,
intent(in) :: rmax
619 double complex,
intent(in) :: m02
620 double complex,
intent(out) :: TA(:),TAuv(:)
621 double precision,
intent(out),
optional :: TAerr(0:)
627 call errout_cll(
'Aten_cll',
'Nmax_cll smaller 1',eflag,.true.)
629 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 1'
635 call errout_cll(
'Aten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
638 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
650 integer,
intent(in) :: rmax
651 double complex,
intent(in) :: m02
652 double complex,
intent(out) :: TA(RtS(rmax)),TAuv(RtS(rmax))
653 double precision,
intent(out),
optional :: TAerr(0:rmax)
654 double complex :: TA2(RtS(rmax)),TAuv2(RtS(rmax))
655 double complex :: CA(0:rmax/2), CAuv(0:rmax/2)
656 double precision :: CAerr(0:rmax), TAerr_aux(0:rmax), TAerr_aux2(0:rmax)
657 double complex :: args(1),masses2(0:0)
658 double precision :: TAdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TAacc(0:rmax)
664 call setmasterfname_cll(
'Aten_cll')
665 call setmastern_cll(1)
666 call setmasterr_cll(rmax)
667 call setmasterargs_cll(1,args)
674 call a_cll(ca,cauv,m02,rmax,caerr,0)
679 call a_cll(ca,cauv,m02,rmax,caerr,0)
687 do i=rts(r-1)+1,rts(r)
688 norm_coli = max(norm_coli,abs(ta(i)))
689 norm_dd = max(norm_dd,abs(ta2(i)))
691 if (norm_coli.eq.0d0)
then
692 norm_coli = abs(masses2(0))
693 if(norm_coli.ne.0d0)
then
694 norm_coli=norm_coli**(1+real(r)/2)
699 if (norm_dd.eq.0d0)
then
700 norm_dd = abs(masses2(0))
701 if(norm_dd.ne.0d0)
then
702 norm_dd=norm_dd**(1+real(r)/2)
707 norm(r) = min(norm_coli,norm_dd)
710 call checktenalist_cll(ta,ta2,masses2,norm,rmax,tadiff)
712 if (taerr_aux(rmax).lt.taerr_aux2(rmax))
then
713 if (
present(taerr)) taerr = max(taerr_aux,tadiff*norm)
715 taacc(r) = max(taerr_aux(r)/norm(r),tadiff(r))
721 if (
present(taerr)) taerr = max(taerr_aux2,tadiff*norm)
723 taacc(r) = max(taerr_aux2(r)/norm(r),tadiff(r))
729 call a_cll(ca,cauv,m02,rmax,caerr,0)
731 if (
present(taerr)) taerr = taerr_aux
734 do i=rts(r-1)+1,rts(r)
735 norm(r) = max(norm(r),abs(ta(i)))
737 if (norm(r).eq.0d0)
then
738 norm(r) = abs(masses2(0))
739 if(norm(r).ne.0d0)
then
740 norm(r)=norm(r)**(1+real(r)/2)
747 taacc(r) = taerr_aux(r)/norm(r)
765 write(
ncpout_cll,*)
' Further output of Critical Points for TAten_cll suppressed'
771 write(
ncpout2_cll,*)
' Further output of Critical Points for TAten_cll suppressed'
790 subroutine bten_main_cll(TB,TBuv,MomVec,MomInv,masses2,rmax,TBerr)
792 integer,
intent(in) :: rmax
793 double complex,
intent(in) :: MomVec(0:3,1), MomInv(1), masses2(0:1)
794 double complex,
intent(out) :: TB(0:rmax,0:rmax,0:rmax,0:rmax)
795 double complex,
intent(out) :: TBuv(0:rmax,0:rmax,0:rmax,0:rmax)
796 double precision,
intent(out),
optional :: TBerr(0:rmax)
797 double complex :: TB2(0:rmax,0:rmax,0:rmax,0:rmax), TBuv2(0:rmax,0:rmax,0:rmax,0:rmax)
798 double complex :: CB(0:rmax/2,0:rmax), CBuv(0:rmax/2,0:rmax)
799 double precision :: CBerr(0:rmax), TBerr_aux(0:rmax), TBerr_aux2(0:rmax)
800 double complex :: args(7)
801 double precision :: TBdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TBacc(0:rmax)
802 integer :: r,n0,n1,n2,n3
807 call errout_cll(
'Bten_cll',
'Nmax_cll smaller 2',eflag,.true.)
809 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 2'
815 call errout_cll(
'Bten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
818 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
824 args(1:4) = momvec(0:,1)
826 args(6:7) = masses2(0:)
827 call setmasterfname_cll(
'Bten_cll')
828 call setmastern_cll(2)
829 call setmasterr_cll(rmax)
830 call setmasterargs_cll(7,args)
837 call b_main_cll(cb,cbuv,mominv(1),masses2(0),masses2(1),rmax,cberr,0)
838 call calctensorb(tb,tbuv,tberr_aux,cb,cbuv,cberr,momvec(0:,1),rmax)
842 call b_main_cll(cb,cbuv,mominv(1),masses2(0),masses2(1),rmax,cberr,0)
843 call calctensorb(tb2,tbuv2,tberr_aux2,cb,cbuv,cberr,momvec(0:,1),rmax)
854 norm_coli = max(norm_coli,abs(tb(n0,n1,n2,n3)))
855 norm_dd = max(norm_dd,abs(tb2(n0,n1,n2,n3)))
859 if (norm_coli.eq.0d0)
then
860 norm_coli = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
861 if(norm_coli.ne.0d0)
then
862 norm_coli=norm_coli**(real(r)/2)
867 if (norm_dd.eq.0d0)
then
868 norm_dd = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
869 if(norm_dd.ne.0d0)
then
870 norm_dd=norm_dd**(real(r)/2)
875 norm(r) = min(norm_coli,norm_dd)
878 call checktensors_cll(tb,tb2,momvec,mominv,masses2,norm,2,rmax,tbdiff)
880 if (tberr_aux(rmax).lt.tberr_aux2(rmax))
then
881 if (
present(tberr)) tberr = max(tberr_aux,tbdiff*norm)
883 tbacc(r) = max(tberr_aux(r)/norm(r),tbdiff(r))
889 if (
present(tberr)) tberr = max(tberr_aux2,tbdiff*norm)
891 tbacc(r) = max(tberr_aux2(r)/norm(r),tbdiff(r))
897 call b_main_cll(cb,cbuv,mominv(1),masses2(0),masses2(1),rmax,cberr,0)
898 call calctensorb(tb,tbuv,tberr_aux,cb,cbuv,cberr,momvec(0:,1),rmax)
899 if (
present(tberr)) tberr = tberr_aux
906 norm(r) = max(norm(r),abs(tb(n0,n1,n2,n3)))
910 if (norm(r).eq.0d0)
then
911 norm(r) = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
912 if(norm(r).ne.0d0)
then
913 norm(r)=norm(r)**(real(r)/2)
918 tbacc(r) = tberr_aux(r)/norm(r)
936 write(
ncpout_cll,*)
' Further output of Critical Points for TBten_cll suppressed'
942 write(
ncpout2_cll,*)
' Further output of Critical Points for TBten_cll suppressed'
961 subroutine bten_list_cll(TB,TBuv,MomVec,MomInv,masses2,rmax,TBerr)
963 integer,
intent(in) :: rmax
964 double complex,
intent(in) :: MomVec(0:3,1), MomInv(1), masses2(0:1)
965 double complex,
intent(out) :: TB(:), TBuv(:)
966 double precision,
intent(out),
optional :: TBerr(0:rmax)
972 call errout_cll(
'Bten_cll',
'Nmax_cll smaller 2',eflag,.true.)
974 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 2'
980 call errout_cll(
'Bten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
983 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
995 integer,
intent(in) :: rmax
996 double complex,
intent(in) :: MomVec(0:3,1), MomInv(1), masses2(0:1)
997 double complex,
intent(out) :: TB(RtS(rmax)), TBuv(RtS(rmax))
998 double precision,
intent(out),
optional :: TBerr(0:rmax)
999 double complex :: TB2(RtS(rmax)), TBuv2(RtS(rmax))
1000 double complex :: CB(0:rmax/2,0:rmax), CBuv(0:rmax/2,0:rmax)
1001 double precision :: CBerr(0:rmax), TBerr_aux(0:rmax), TBerr_aux2(0:rmax)
1002 double complex :: args(7)
1003 double precision :: TBdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TBacc(0:rmax)
1008 args(1:4) = momvec(0:,1)
1010 args(6:7) = masses2(0:)
1011 call setmasterfname_cll(
'Bten_cll')
1012 call setmastern_cll(2)
1013 call setmasterr_cll(rmax)
1014 call setmasterargs_cll(7,args)
1021 call b_main_cll(cb,cbuv,mominv(1),masses2(0),masses2(1),rmax,cberr,0)
1026 call b_main_cll(cb,cbuv,mominv(1),masses2(0),masses2(1),rmax,cberr,0)
1027 call calctensorb_list(tb2,tbuv2,tberr_aux2,cb,cbuv,cberr,momvec(0:,1),rmax)
1034 do i=rts(r-1)+1,rts(r)
1035 norm_coli = max(norm_coli,abs(tb(i)))
1036 norm_dd = max(norm_dd,abs(tb2(i)))
1038 if (norm_coli.eq.0d0)
then
1039 norm_coli = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
1040 if(norm_coli.ne.0d0)
then
1041 norm_coli=norm_coli**(real(r)/2)
1046 if (norm_dd.eq.0d0)
then
1047 norm_dd = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
1048 if(norm_dd.ne.0d0)
then
1049 norm_dd=norm_dd**(real(r)/2)
1054 norm(r) = min(norm_coli,norm_dd)
1057 call checktensorslist_cll(tb,tb2,momvec,mominv,masses2,norm,2,rmax,tbdiff)
1059 if (tberr_aux(rmax).lt.tberr_aux2(rmax))
then
1060 if (
present(tberr)) tberr = max(tberr_aux,tbdiff*norm)
1062 tbacc(r) = max(tberr_aux(r)/norm(r),tbdiff(r))
1068 if (
present(tberr)) tberr = max(tberr_aux2,tbdiff*norm)
1070 tbacc(r) = max(tberr_aux2(r)/norm(r),tbdiff(r))
1076 call b_main_cll(cb,cbuv,mominv(1),masses2(0),masses2(1),rmax,cberr,0)
1078 if (
present(tberr)) tberr = tberr_aux
1081 do i=rts(r-1)+1,rts(r)
1082 norm(r) = max(norm(r),abs(tb(i)))
1084 if (norm(r).eq.0d0)
then
1085 norm(r) = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
1086 if(norm(r).ne.0d0)
then
1087 norm(r)=norm(r)**(real(r)/2)
1092 tbacc(r) = tberr_aux(r)/norm(r)
1110 write(
ncpout_cll,*)
' Further output of Critical Points for TBten_cll suppressed'
1116 write(
ncpout2_cll,*)
' Further output of Critical Points for TBten_cll suppressed'
1135 subroutine bten_args_cll(TB,TBuv,p1vec,p10,m02,m12,rmax,TBerr)
1137 integer,
intent(in) :: rmax
1138 double complex,
intent(in) :: p1vec(0:3)
1139 double complex,
intent(in) :: p10,m02,m12
1140 double complex,
intent(out) :: TB(0:rmax,0:rmax,0:rmax,0:rmax)
1141 double complex,
intent(out) :: TBuv(0:rmax,0:rmax,0:rmax,0:rmax)
1142 double precision,
intent(out),
optional :: TBerr(0:rmax)
1143 double complex :: TB2(0:rmax,0:rmax,0:rmax,0:rmax), TBuv2(0:rmax,0:rmax,0:rmax,0:rmax)
1144 double complex :: masses2(0:1),MomInv(1)
1145 double complex :: CB(0:rmax/2,0:rmax), CBuv(0:rmax/2,0:rmax)
1146 double precision :: CBerr(0:rmax),TBerr_aux(0:rmax),TBerr_aux2(0:rmax)
1147 double complex :: args(7)
1148 double precision :: TBdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TBacc(0:rmax)
1149 integer :: r,n0,n1,n2,n3
1154 call errout_cll(
'Bten_cll',
'Nmax_cll smaller 2',eflag,.true.)
1156 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 2'
1162 call errout_cll(
'Bten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
1165 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
1175 args(1:4) = p1vec(0:)
1177 args(6:7) = masses2(0:)
1178 call setmasterfname_cll(
'Bten_cll')
1179 call setmastern_cll(2)
1180 call setmasterr_cll(rmax)
1181 call setmasterargs_cll(7,args)
1188 call b_main_cll(cb,cbuv,p10,m02,m12,rmax,cberr,0)
1189 call calctensorb(tb,tbuv,tberr_aux,cb,cbuv,cberr,p1vec,rmax)
1193 call b_main_cll(cb,cbuv,p10,m02,m12,rmax,cberr,0)
1194 call calctensorb(tb2,tbuv2,tberr_aux2,cb,cbuv,cberr,p1vec,rmax)
1205 norm_coli = max(norm_coli,abs(tb(n0,n1,n2,n3)))
1206 norm_dd = max(norm_dd,abs(tb2(n0,n1,n2,n3)))
1210 if (norm_coli.eq.0d0)
then
1211 norm_coli = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
1212 if(norm_coli.ne.0d0)
then
1213 norm_coli=norm_coli**(real(r)/2)
1218 if (norm_dd.eq.0d0)
then
1219 norm_dd = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
1220 if(norm_dd.ne.0d0)
then
1221 norm_dd=norm_dd**(real(r)/2)
1226 norm(r) = min(norm_coli,norm_dd)
1229 call checktensors_cll(tb,tb2,p1vec,mominv,masses2,norm,2,rmax,tbdiff)
1231 if (tberr_aux(rmax).lt.tberr_aux2(rmax))
then
1232 if (
present(tberr)) tberr = max(tberr_aux,tbdiff*norm)
1234 tbacc(r) = max(tberr_aux(r)/norm(r),tbdiff(r))
1240 if (
present(tberr)) tberr = max(tberr_aux2,tbdiff*norm)
1242 tbacc(r) = max(tberr_aux2(r)/norm(r),tbdiff(r))
1248 call b_main_cll(cb,cbuv,p10,m02,m12,rmax,cberr,0)
1249 call calctensorb(tb,tbuv,tberr_aux,cb,cbuv,cberr,p1vec,rmax)
1250 if (
present(tberr)) tberr = tberr_aux
1257 norm(r) = max(norm(r),abs(tb(n0,n1,n2,n3)))
1261 if (norm(r).eq.0d0)
then
1262 norm(r) = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
1263 if(norm(r).ne.0d0)
then
1264 norm(r)=norm(r)**(real(r)/2)
1269 tbacc(r) = tberr_aux(r)/norm(r)
1287 write(
ncpout_cll,*)
' Further output of Critical Points for TBten_cll suppressed'
1293 write(
ncpout2_cll,*)
' Further output of Critical Points for TBten_cll suppressed'
1314 integer,
intent(in) :: rmax
1315 double complex,
intent(in) :: p1vec(0:3)
1316 double complex,
intent(in) :: p10,m02,m12
1317 double complex,
intent(out) :: TB(:), TBuv(:)
1318 double precision,
intent(out),
optional :: TBerr(0:rmax)
1324 call errout_cll(
'Bten_cll',
'Nmax_cll smaller 2',eflag,.true.)
1326 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 2'
1332 call errout_cll(
'Bten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
1335 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
1347 integer,
intent(in) :: rmax
1348 double complex,
intent(in) :: p1vec(0:3)
1349 double complex,
intent(in) :: p10,m02,m12
1350 double complex,
intent(out) :: TB(RtS(rmax)), TBuv(RtS(rmax))
1351 double precision,
intent(out),
optional :: TBerr(0:rmax)
1352 double complex :: TB2(RtS(rmax)), TBuv2(RtS(rmax))
1353 double complex :: masses2(0:1),MomInv(1)
1354 double complex :: CB(0:rmax/2,0:rmax), CBuv(0:rmax/2,0:rmax)
1355 double precision :: CBerr(0:rmax), TBerr_aux(0:rmax), TBerr_aux2(0:rmax)
1356 double complex :: args(7)
1357 double precision :: TBdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TBacc(0:rmax)
1366 args(1:4) = p1vec(0:)
1368 args(6:7) = masses2(0:)
1369 call setmasterfname_cll(
'Bten_cll')
1370 call setmastern_cll(2)
1371 call setmasterr_cll(rmax)
1372 call setmasterargs_cll(7,args)
1379 call b_main_cll(cb,cbuv,p10,m02,m12,rmax,cberr,0)
1384 call b_main_cll(cb,cbuv,p10,m02,m12,rmax,cberr,0)
1392 do i=rts(r-1)+1,rts(r)
1393 norm_coli = max(norm_coli,abs(tb(i)))
1394 norm_dd = max(norm_dd,abs(tb2(i)))
1396 if (norm_coli.eq.0d0)
then
1397 norm_coli = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
1398 if(norm_coli.ne.0d0)
then
1399 norm_coli=norm_coli**(real(r)/2)
1404 if (norm_dd.eq.0d0)
then
1405 norm_dd = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
1406 if(norm_dd.ne.0d0)
then
1407 norm_dd=norm_dd**(real(r)/2)
1412 norm(r) = min(norm_coli,norm_dd)
1415 call checktensorslist_cll(tb,tb2,p1vec,mominv,masses2,norm,2,rmax,tbdiff)
1417 if (tberr_aux(rmax).lt.tberr_aux2(rmax))
then
1418 if (
present(tberr)) tberr = max(tberr_aux,tbdiff*norm)
1420 tbacc(r) = max(tberr_aux(r)/norm(r),tbdiff(r))
1426 if (
present(tberr)) tberr = max(tberr_aux2,tbdiff*norm)
1428 tbacc(r) = max(tberr_aux2(r)/norm(r),tbdiff(r))
1434 call b_main_cll(cb,cbuv,p10,m02,m12,rmax,cberr,0)
1436 if (
present(tberr)) tberr = tberr_aux
1439 do i=rts(r-1)+1,rts(r)
1440 norm(r) = max(norm(r),abs(tb(i)))
1442 if (norm(r).eq.0d0)
then
1443 norm(r) = max(abs(mominv(1)),maxval(abs(masses2(0:1))))
1444 if(norm(r).ne.0d0)
then
1445 norm(r)=norm(r)**(real(r)/2)
1450 tbacc(r) = tberr_aux(r)/norm(r)
1468 write(
ncpout_cll,*)
' Further output of Critical Points for TBten_cll suppressed'
1474 write(
ncpout2_cll,*)
' Further output of Critical Points for TBten_cll suppressed'
1493 subroutine cten_main_cll(TC,TCuv,MomVec,MomInv,masses2,rmax,TCerr)
1495 integer,
intent(in) :: rmax
1496 double complex,
intent(in) :: MomVec(0:3,2), MomInv(3), masses2(0:2)
1497 double complex,
intent(out) :: TC(0:rmax,0:rmax,0:rmax,0:rmax)
1498 double complex,
intent(out) :: TCuv(0:rmax,0:rmax,0:rmax,0:rmax)
1499 double precision,
intent(out),
optional :: TCerr(0:rmax)
1500 double complex :: TC2(0:rmax,0:rmax,0:rmax,0:rmax), TCuv2(0:rmax,0:rmax,0:rmax,0:rmax)
1501 double complex :: CC(0:rmax/2,0:rmax,0:rmax), CCuv(0:rmax/2,0:rmax,0:rmax)
1502 double precision :: CCerr(0:rmax), TCerr_aux(0:rmax), TCerr_aux2(0:rmax), TCacc(0:rmax)
1503 double complex args(14)
1504 double precision :: TCdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd
1505 integer :: r,n0,n1,n2,n3
1510 call errout_cll(
'Cten_cll',
'Nmax_cll smaller 3',eflag,.true.)
1512 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 3'
1518 call errout_cll(
'Cten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
1521 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
1527 args(1:4) = momvec(0:,1)
1528 args(5:8) = momvec(0:,2)
1530 args(12:14) = masses2(0:)
1531 call setmasterfname_cll(
'Cten_cll')
1532 call setmastern_cll(3)
1533 call setmasterr_cll(rmax)
1534 call setmasterargs_cll(14,args)
1541 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
1542 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
1543 call calctensorc(tc,tcuv,tcerr_aux,cc,ccuv,ccerr,momvec,rmax)
1547 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
1548 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
1549 call calctensorc(tc2,tcuv2,tcerr_aux2,cc,ccuv,ccerr,momvec,rmax)
1560 norm_coli = max(norm_coli,abs(tc(n0,n1,n2,n3)))
1561 norm_dd = max(norm_dd,abs(tc2(n0,n1,n2,n3)))
1565 if (norm_coli.eq.0d0)
then
1566 norm_coli = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
1567 if(norm_coli.ne.0d0)
then
1568 norm_coli=1d0/norm_coli**(1-real(r)/2)
1573 if (norm_dd.eq.0d0)
then
1574 norm_dd = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
1575 if(norm_dd.ne.0d0)
then
1576 norm_dd=1d0/norm_dd**(1-real(r)/2)
1581 norm(r) = min(norm_coli,norm_dd)
1584 call checktensors_cll(tc,tc2,momvec,mominv,masses2,norm,3,rmax,tcdiff)
1586 if (tcerr_aux(rmax).lt.tcerr_aux2(rmax))
then
1587 if (
present(tcerr)) tcerr = max(tcerr_aux,tcdiff*norm)
1589 tcacc(r) = max(tcerr_aux(r)/norm(r),tcdiff(r))
1595 if (
present(tcerr)) tcerr = max(tcerr_aux2,tcdiff*norm)
1597 tcacc(r) = max(tcerr_aux2(r)/norm(r),tcdiff(r))
1603 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
1604 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
1605 call calctensorc(tc,tcuv,tcerr_aux,cc,ccuv,ccerr,momvec,rmax)
1606 if (
present(tcerr)) tcerr = tcerr_aux
1613 norm(r) = max(norm(r),abs(tc(n0,n1,n2,n3)))
1617 if (norm(r).eq.0d0)
then
1618 norm(r) = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
1619 if(norm(r).ne.0d0)
then
1620 norm(r)=1d0/norm(r)**(1-real(r)/2)
1625 tcacc(r) = tcerr_aux(r)/norm(r)
1643 write(
ncpout_cll,*)
' Further output of Critical Points for TCten_cll suppressed'
1649 write(
ncpout2_cll,*)
' Further output of Critical Points for TCten_cll suppressed'
1668 subroutine cten_list_cll(TC,TCuv,MomVec,MomInv,masses2,rmax,TCerr)
1670 integer,
intent(in) :: rmax
1671 double complex,
intent(in) :: MomVec(0:3,2), MomInv(3), masses2(0:2)
1672 double complex,
intent(out) :: TC(:), TCuv(:)
1673 double precision,
intent(out),
optional :: TCerr(0:rmax)
1678 call errout_cll(
'Cten_cll',
'Nmax_cll smaller 3',eflag,.true.)
1680 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 3'
1686 call errout_cll(
'Cten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
1689 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
1701 integer,
intent(in) :: rmax
1702 double complex,
intent(in) :: MomVec(0:3,2), MomInv(3), masses2(0:2)
1703 double complex,
intent(out) :: TC(RtS(rmax)), TCuv(RtS(rmax))
1704 double precision,
intent(out),
optional :: TCerr(0:rmax)
1705 double complex :: TC2(RtS(rmax)), TCuv2(RtS(rmax))
1706 double complex :: CC(0:rmax/2,0:rmax,0:rmax), CCuv(0:rmax/2,0:rmax,0:rmax)
1707 double precision :: CCerr(0:rmax), TCerr_aux(0:rmax), TCerr_aux2(0:rmax)
1708 double complex :: args(14)
1709 double precision :: TCdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TCacc(0:rmax)
1714 args(1:4) = momvec(0:,1)
1715 args(5:8) = momvec(0:,2)
1717 args(12:14) = masses2(0:)
1718 call setmasterfname_cll(
'Cten_cll')
1719 call setmastern_cll(3)
1720 call setmasterr_cll(rmax)
1721 call setmasterargs_cll(14,args)
1728 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
1729 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
1734 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
1735 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
1743 do i=rts(r-1)+1,rts(r)
1744 norm_coli = max(norm_coli,abs(tc(i)))
1745 norm_dd = max(norm_dd,abs(tc2(i)))
1747 if (norm_coli.eq.0d0)
then
1748 norm_coli = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
1749 if(norm_coli.ne.0d0)
then
1750 norm_coli=1d0/norm_coli**(1-real(r)/2)
1755 if (norm_dd.eq.0d0)
then
1756 norm_dd = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
1757 if(norm_dd.ne.0d0)
then
1758 norm_dd=1d0/norm_dd**(1-real(r)/2)
1763 norm(r) = min(norm_coli,norm_dd)
1766 call checktensorslist_cll(tc,tc2,momvec,mominv,masses2,norm,3,rmax,tcdiff)
1768 if (tcerr_aux(rmax).lt.tcerr_aux2(rmax))
then
1769 if (
present(tcerr)) tcerr = max(tcerr_aux,tcdiff*norm)
1771 tcacc(r) = max(tcerr_aux(r)/norm(r),tcdiff(r))
1777 if (
present(tcerr)) tcerr = max(tcerr_aux2,tcdiff*norm)
1779 tcacc(r) = max(tcerr_aux2(r)/norm(r),tcdiff(r))
1785 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
1786 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
1788 if (
present(tcerr)) tcerr = tcerr_aux
1791 do i=rts(r-1)+1,rts(r)
1792 norm(r) = max(norm(r),abs(tc(i)))
1794 if (norm(r).eq.0d0)
then
1795 norm(r) = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
1796 if(norm(r).ne.0d0)
then
1797 norm(r)=1d0/norm(r)**(1-real(r)/2)
1802 tcacc(r) = tcerr_aux(r)/norm(r)
1820 write(
ncpout_cll,*)
' Further output of Critical Points for TCten_cll suppressed'
1826 write(
ncpout2_cll,*)
' Further output of Critical Points for TCten_cll suppressed'
1845 subroutine cten_args_cll(TC,TCuv,p1vec,p2vec,p10,p21,p20,m02,m12,m22,rmax,TCerr)
1847 integer,
intent(in) :: rmax
1848 double complex,
intent(in) :: p1vec(0:3), p2vec(0:3)
1849 double complex,
intent(in) :: p10,p21,p20,m02,m12,m22
1850 double complex,
intent(out) :: TC(0:rmax,0:rmax,0:rmax,0:rmax)
1851 double complex,
intent(out) :: TCuv(0:rmax,0:rmax,0:rmax,0:rmax)
1852 double precision,
intent(out),
optional :: TCerr(0:rmax)
1853 double complex :: TC2(0:rmax,0:rmax,0:rmax,0:rmax), TCuv2(0:rmax,0:rmax,0:rmax,0:rmax)
1854 double complex :: MomVec(0:3,2), MomInv(3), masses2(0:2)
1855 double complex :: CC(0:rmax/2,0:rmax,0:rmax), CCuv(0:rmax/2,0:rmax,0:rmax)
1856 double precision :: CCerr(0:rmax), TCerr_aux(0:rmax), TCerr_aux2(0:rmax)
1857 double complex :: args(14)
1858 double precision :: TCdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TCacc(0:rmax)
1859 integer :: r,n0,n1,n2,n3
1864 call errout_cll(
'Cten_cll',
'Nmax_cll smaller 3',eflag,.true.)
1866 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 3'
1872 call errout_cll(
'Cten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
1875 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
1880 momvec(0:,1) = p1vec
1881 momvec(0:,2) = p2vec
1890 args(1:4) = momvec(0:,1)
1891 args(5:8) = momvec(0:,2)
1893 args(12:14) = masses2(0:)
1894 call setmasterfname_cll(
'Cten_cll')
1895 call setmastern_cll(3)
1896 call setmasterr_cll(rmax)
1897 call setmasterargs_cll(14,args)
1905 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
1906 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
1907 call calctensorc(tc,tcuv,tcerr_aux,cc,ccuv,ccerr,momvec,rmax)
1911 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
1912 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
1913 call calctensorc(tc2,tcuv2,tcerr_aux2,cc,ccuv,ccerr,momvec,rmax)
1924 norm_coli = max(norm_coli,abs(tc(n0,n1,n2,n3)))
1925 norm_dd = max(norm_dd,abs(tc2(n0,n1,n2,n3)))
1929 if (norm_coli.eq.0d0)
then
1930 norm_coli = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
1931 if(norm_coli.ne.0d0)
then
1932 norm_coli=1d0/norm_coli**(1-real(r)/2)
1937 if (norm_dd.eq.0d0)
then
1938 norm_dd = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
1939 if(norm_dd.ne.0d0)
then
1940 norm_dd=1d0/norm_dd**(1-real(r)/2)
1945 norm(r) = min(norm_coli,norm_dd)
1948 call checktensors_cll(tc,tc2,momvec,mominv,masses2,norm,3,rmax,tcdiff)
1950 if (tcerr_aux(rmax).lt.tcerr_aux2(rmax))
then
1951 if (
present(tcerr)) tcerr = max(tcerr_aux,tcdiff*norm)
1953 tcacc(r) = max(tcerr_aux(r)/norm(r),tcdiff(r))
1959 if (
present(tcerr)) tcerr = max(tcerr_aux2,tcdiff*norm)
1961 tcacc(r) = max(tcerr_aux2(r)/norm(r),tcdiff(r))
1967 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
1968 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
1969 call calctensorc(tc,tcuv,tcerr_aux,cc,ccuv,ccerr,momvec,rmax)
1970 if (
present(tcerr)) tcerr = tcerr_aux
1977 norm(r) = max(norm(r),abs(tc(n0,n1,n2,n3)))
1981 if (norm(r).eq.0d0)
then
1982 norm(r) = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
1983 if(norm(r).ne.0d0)
then
1984 norm(r)=1d0/norm(r)**(1-real(r)/2)
1989 tcacc(r) = tcerr_aux(r)/norm(r)
2007 write(
ncpout_cll,*)
' Further output of Critical Points for TCten_cll suppressed'
2013 write(
ncpout2_cll,*)
' Further output of Critical Points for TCten_cll suppressed'
2032 subroutine cten_args_list_cll(TC,TCuv,p1vec,p2vec,p10,p21,p20,m02,m12,m22,rmax,TCerr)
2033 integer,
intent(in) :: rmax
2034 double complex,
intent(in) :: p1vec(0:3), p2vec(0:3)
2035 double complex,
intent(in) :: p10,p21,p20,m02,m12,m22
2036 double complex,
intent(out) :: TC(:), TCuv(:)
2037 double precision,
intent(out),
optional :: TCerr(0:rmax)
2042 call errout_cll(
'Cten_cll',
'Nmax_cll smaller 3',eflag,.true.)
2044 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 3'
2050 call errout_cll(
'Cten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
2053 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
2058 call cten_args_list_checked_cll(tc,tcuv,p1vec,p2vec,p10,p21,p20,m02,m12,m22,rmax,tcerr)
2063 subroutine cten_args_list_checked_cll(TC,TCuv,p1vec,p2vec,p10,p21,p20,m02,m12,m22,rmax,TCerr)
2065 integer,
intent(in) :: rmax
2066 double complex,
intent(in) :: p1vec(0:3), p2vec(0:3)
2067 double complex,
intent(in) :: p10,p21,p20,m02,m12,m22
2068 double complex,
intent(out) :: TC(RtS(rmax)), TCuv(RtS(rmax))
2069 double precision,
intent(out),
optional :: TCerr(0:rmax)
2070 double complex :: TC2(RtS(rmax)), TCuv2(RtS(rmax))
2071 double complex :: MomVec(0:3,2), MomInv(3), masses2(0:2)
2072 double complex :: CC(0:rmax/2,0:rmax,0:rmax), CCuv(0:rmax/2,0:rmax,0:rmax)
2073 double precision :: CCerr(0:rmax), TCerr_aux(0:rmax), TCerr_aux2(0:rmax)
2074 double complex :: args(14)
2075 double precision :: TCdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TCacc(0:rmax)
2079 momvec(0:,1) = p1vec
2080 momvec(0:,2) = p2vec
2089 args(1:4) = momvec(0:,1)
2090 args(5:8) = momvec(0:,2)
2092 args(12:14) = masses2(0:)
2093 call setmasterfname_cll(
'Cten_cll')
2094 call setmastern_cll(3)
2095 call setmasterr_cll(rmax)
2096 call setmasterargs_cll(14,args)
2104 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
2105 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
2110 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
2111 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
2119 do i=rts(r-1)+1,rts(r)
2120 norm_coli = max(norm_coli,abs(tc(i)))
2121 norm_dd = max(norm_dd,abs(tc2(i)))
2123 if (norm_coli.eq.0d0)
then
2124 norm_coli = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
2125 if(norm_coli.ne.0d0)
then
2126 norm_coli=1d0/norm_coli**(1-real(r)/2)
2131 if (norm_dd.eq.0d0)
then
2132 norm_dd = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
2133 if(norm_dd.ne.0d0)
then
2134 norm_dd=1d0/norm_dd**(1-real(r)/2)
2139 norm(r) = min(norm_coli,norm_dd)
2142 call checktensorslist_cll(tc,tc2,momvec,mominv,masses2,norm,3,rmax,tcdiff)
2144 if (tcerr_aux(rmax).lt.tcerr_aux2(rmax))
then
2145 if (
present(tcerr)) tcerr = max(tcerr_aux,tcdiff*norm)
2147 tcacc(r) = max(tcerr_aux(r)/norm(r),tcdiff(r))
2153 if (
present(tcerr)) tcerr = max(tcerr_aux2,tcdiff*norm)
2155 tcacc(r) = max(tcerr_aux2(r)/norm(r),tcdiff(r))
2161 call c_main_cll(cc,ccuv,mominv(1),mominv(2),mominv(3), &
2162 masses2(0),masses2(1),masses2(2),rmax,cerr2=ccerr,id_in=0)
2164 if (
present(tcerr)) tcerr = tcerr_aux
2167 do i=rts(r-1)+1,rts(r)
2168 norm(r) = max(norm(r),abs(tc(i)))
2170 if (norm(r).eq.0d0)
then
2171 norm(r) = max(maxval(abs(mominv(1:3))),maxval(abs(masses2(0:2))))
2172 if(norm(r).ne.0d0)
then
2173 norm(r)=1d0/norm(r)**(1-real(r)/2)
2178 tcacc(r) = tcerr_aux(r)/norm(r)
2196 write(
ncpout_cll,*)
' Further output of Critical Points for TCten_cll suppressed'
2202 write(
ncpout2_cll,*)
' Further output of Critical Points for TCten_cll suppressed'
2221 subroutine dten_main_cll(TD,TDuv,MomVec,MomInv,masses2,rmax,TDerr)
2223 integer,
intent(in) :: rmax
2224 double complex,
intent(in) :: MomVec(0:3,3), MomInv(6), masses2(0:3)
2225 double complex,
intent(out) :: TD(0:rmax,0:rmax,0:rmax,0:rmax)
2226 double complex,
intent(out) :: TDuv(0:rmax,0:rmax,0:rmax,0:rmax)
2227 double precision,
intent(out),
optional :: TDerr(0:rmax)
2228 double complex :: CD(0:rmax/2,0:rmax,0:rmax,0:rmax)
2229 double complex :: TD2(0:rmax,0:rmax,0:rmax,0:rmax), TDuv2(0:rmax,0:rmax,0:rmax,0:rmax)
2230 double complex :: CDuv(0:rmax/2,0:rmax,0:rmax,0:rmax)
2231 double precision :: CDerr(0:rmax), TDerr_aux(0:rmax), TDerr_aux2(0:rmax)
2232 double complex :: args(22)
2233 double precision :: TDdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TDacc(0:rmax)
2234 integer :: r,n0,n1,n2,n3
2239 call errout_cll(
'Dten_cll',
'Nmax_cll smaller 4',eflag,.true.)
2241 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 4'
2247 call errout_cll(
'Dten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
2250 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
2256 args(1:4) = momvec(0:,1)
2257 args(5:8) = momvec(0:,2)
2258 args(9:12) = momvec(0:,3)
2259 args(13:18) = mominv
2260 args(19:22) = masses2(0:)
2261 call setmasterfname_cll(
'Dten_cll')
2262 call setmastern_cll(4)
2263 call setmasterr_cll(rmax)
2264 call setmasterargs_cll(22,args)
2271 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2272 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2273 call calctensord(td,tduv,tderr_aux,cd,cduv,cderr,momvec,rmax)
2277 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2278 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2279 call calctensord(td2,tduv2,tderr_aux2,cd,cduv,cderr,momvec,rmax)
2290 norm_coli = max(norm_coli,abs(td(n0,n1,n2,n3)))
2291 norm_dd = max(norm_dd,abs(td2(n0,n1,n2,n3)))
2295 if (norm_coli.eq.0d0)
then
2296 norm_coli = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2297 if(norm_coli.ne.0d0)
then
2298 norm_coli=1d0/norm_coli**(2-real(r)/2)
2303 if (norm_dd.eq.0d0)
then
2304 norm_dd = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2305 if(norm_dd.ne.0d0)
then
2306 norm_dd=1d0/norm_dd**(2-real(r)/2)
2311 norm(r) = min(norm_coli,norm_dd)
2314 call checktensors_cll(td,td2,momvec,mominv,masses2,norm,4,rmax,tddiff)
2316 if (tderr_aux(rmax).lt.tderr_aux2(rmax))
then
2317 if (
present(tderr)) tderr = max(tderr_aux,tddiff*norm)
2319 tdacc(r) = max(tderr_aux(r)/norm(r),tddiff(r))
2325 if (
present(tderr)) tderr = max(tderr_aux2,tddiff*norm)
2327 tdacc(r) = max(tderr_aux2(r)/norm(r),tddiff(r))
2333 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2334 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2335 call calctensord(td,tduv,tderr_aux,cd,cduv,cderr,momvec,rmax)
2336 if (
present(tderr)) tderr = tderr_aux
2343 norm(r) = max(norm(r),abs(td(n0,n1,n2,n3)))
2347 if (norm(r).eq.0d0)
then
2348 norm(r) = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2349 if(norm(r).ne.0d0)
then
2350 norm(r)=1d0/norm(r)**(2-real(r)/2)
2355 tdacc(r) = tderr_aux(r)/norm(r)
2373 write(
ncpout_cll,*)
' Further output of Critical Points for TDten_cll suppressed'
2379 write(
ncpout2_cll,*)
' Further output of Critical Points for TDten_cll suppressed'
2399 subroutine dten_list_cll(TD,TDuv,MomVec,MomInv,masses2,rmax,TDerr)
2401 integer,
intent(in) :: rmax
2402 double complex,
intent(in) :: MomVec(0:3,3), MomInv(6), masses2(0:3)
2403 double complex,
intent(out) :: TD(:), TDuv(:)
2404 double precision,
intent(out),
optional :: TDerr(0:rmax)
2409 call errout_cll(
'Dten_cll',
'Nmax_cll smaller 4',eflag,.true.)
2411 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 4'
2417 call errout_cll(
'Dten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
2420 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
2432 integer,
intent(in) :: rmax
2433 double complex,
intent(in) :: MomVec(0:3,3), MomInv(6), masses2(0:3)
2434 double complex,
intent(out) :: TD(RtS(rmax)), TDuv(RtS(rmax))
2435 double precision,
intent(out),
optional :: TDerr(0:rmax)
2436 double complex :: TD2(RtS(rmax)), TDuv2(RtS(rmax))
2437 double complex :: CD(0:rmax/2,0:rmax,0:rmax,0:rmax)
2438 double complex :: CDuv(0:rmax/2,0:rmax,0:rmax,0:rmax)
2439 double precision :: CDerr(0:rmax), TDerr_aux(0:rmax), TDerr_aux2(0:rmax)
2440 double complex :: args(22)
2441 double precision :: TDdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TDacc(0:rmax)
2445 args(1:4) = momvec(0:,1)
2446 args(5:8) = momvec(0:,2)
2447 args(9:12) = momvec(0:,3)
2448 args(13:18) = mominv
2449 args(19:22) = masses2(0:)
2450 call setmasterfname_cll(
'Dten_cll')
2451 call setmastern_cll(4)
2452 call setmasterr_cll(rmax)
2453 call setmasterargs_cll(22,args)
2461 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2462 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2467 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2468 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2476 do i=rts(r-1)+1,rts(r)
2477 norm_coli = max(norm_coli,abs(td(i)))
2478 norm_dd = max(norm_dd,abs(td2(i)))
2480 if (norm_coli.eq.0d0)
then
2481 norm_coli = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2482 if(norm_coli.ne.0d0)
then
2483 norm_coli=1d0/norm_coli**(2-real(r)/2)
2488 if (norm_dd.eq.0d0)
then
2489 norm_dd = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2490 if(norm_dd.ne.0d0)
then
2491 norm_dd=1d0/norm_dd**(2-real(r)/2)
2496 norm(r) = min(norm_coli,norm_dd)
2499 call checktensorslist_cll(td,td2,momvec,mominv,masses2,norm,4,rmax,tddiff)
2501 if (tderr_aux(rmax).lt.tderr_aux2(rmax))
then
2502 if (
present(tderr)) tderr = max(tderr_aux,tddiff*norm)
2504 tdacc(r) = max(tderr_aux(r)/norm(r),tddiff(r))
2510 if (
present(tderr)) tderr = max(tderr_aux2,tddiff*norm)
2512 tdacc(r) = max(tderr_aux2(r)/norm(r),tddiff(r))
2518 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2519 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2521 if (
present(tderr)) tderr = tderr_aux
2524 do i=rts(r-1)+1,rts(r)
2525 norm(r) = max(norm(r),abs(td(i)))
2527 if (norm(r).eq.0d0)
then
2528 norm(r) = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2529 if(norm(r).ne.0d0)
then
2530 norm(r)=1d0/norm(r)**(2-real(r)/2)
2535 tdacc(r) = tderr_aux(r)/norm(r)
2553 write(
ncpout_cll,*)
' Further output of Critical Points for TDten_cll suppressed'
2559 write(
ncpout2_cll,*)
' Further output of Critical Points for TDten_cll suppressed'
2578 subroutine dten_args_cll(TD,TDuv,p1vec,p2vec,p3vec,p10,p21,p32,p30,p20,p31, &
2579 m02,m12,m22,m32,rmax,TDerr)
2581 integer,
intent(in) :: rmax
2582 double complex,
intent(in) :: p1vec(0:3), p2vec(0:3), p3vec(0:3)
2583 double complex,
intent(in) :: p10,p21,p32,p30,p20,p31,m02,m12,m22,m32
2584 double complex,
intent(out) :: TD(0:rmax,0:rmax,0:rmax,0:rmax)
2585 double complex,
intent(out) :: TDuv(0:rmax,0:rmax,0:rmax,0:rmax)
2586 double precision,
intent(out),
optional :: TDerr(0:rmax)
2587 double complex TD2(0:rmax,0:rmax,0:rmax,0:rmax), TDuv2(0:rmax,0:rmax,0:rmax,0:rmax)
2588 double complex :: MomVec(0:3,3), MomInv(6), masses2(0:3)
2589 double complex :: CD(0:rmax/2,0:rmax,0:rmax,0:rmax)
2590 double complex :: CDuv(0:rmax/2,0:rmax,0:rmax,0:rmax)
2591 double precision :: CDerr(0:rmax), TDerr_aux(0:rmax), TDerr_aux2(0:rmax)
2592 double complex :: args(22)
2593 double precision :: TDdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TDacc(0:rmax)
2594 integer :: r,n0,n1,n2,n3
2599 call errout_cll(
'Dten_cll',
'Nmax_cll smaller 4',eflag,.true.)
2601 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 4'
2607 call errout_cll(
'Dten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
2610 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
2615 momvec(0:,1) = p1vec
2616 momvec(0:,2) = p2vec
2617 momvec(0:,3) = p3vec
2630 args(1:4) = momvec(0:,1)
2631 args(5:8) = momvec(0:,2)
2632 args(9:12) = momvec(0:,3)
2633 args(13:18) = mominv
2634 args(19:22) = masses2(0:)
2635 call setmasterfname_cll(
'Dten_cll')
2636 call setmastern_cll(4)
2637 call setmasterr_cll(rmax)
2638 call setmasterargs_cll(22,args)
2646 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2647 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2648 call calctensord(td,tduv,tderr_aux,cd,cduv,cderr,momvec,rmax)
2652 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2653 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2654 call calctensord(td2,tduv2,tderr_aux2,cd,cduv,cderr,momvec,rmax)
2665 norm_coli = max(norm_coli,abs(td(n0,n1,n2,n3)))
2666 norm_dd = max(norm_dd,abs(td2(n0,n1,n2,n3)))
2670 if (norm_coli.eq.0d0)
then
2671 norm_coli = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2672 if(norm_coli.ne.0d0)
then
2673 norm_coli=1d0/norm_coli**(2-real(r)/2)
2678 if (norm_dd.eq.0d0)
then
2679 norm_dd = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2680 if(norm_dd.ne.0d0)
then
2681 norm_dd=1d0/norm_dd**(2-real(r)/2)
2686 norm(r) = min(norm_coli,norm_dd)
2689 call checktensors_cll(td,td2,momvec,mominv,masses2,norm,4,rmax,tddiff)
2691 if (tderr_aux(rmax).lt.tderr_aux2(rmax))
then
2692 if (
present(tderr)) tderr = max(tderr_aux,tddiff*norm)
2694 tdacc(r) = max(tderr_aux(r)/norm(r),tddiff(r))
2700 if (
present(tderr)) tderr = max(tderr_aux2,tddiff*norm)
2702 tdacc(r) = max(tderr_aux2(r)/norm(r),tddiff(r))
2708 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2709 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2711 call calctensord(td,tduv,tderr_aux,cd,cduv,cderr,momvec,rmax)
2712 if (
present(tderr)) tderr = tderr_aux
2719 norm(r) = max(norm(r),abs(td(n0,n1,n2,n3)))
2723 if (norm(r).eq.0d0)
then
2724 norm(r) = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2725 if(norm(r).ne.0d0)
then
2726 norm(r)=1d0/norm(r)**(2-real(r)/2)
2731 tdacc(r) = tderr_aux(r)/norm(r)
2749 write(
ncpout_cll,*)
' Further output of Critical Points for TDten_cll suppressed'
2755 write(
ncpout2_cll,*)
' Further output of Critical Points for TDten_cll suppressed'
2775 subroutine dten_args_list_cll(TD,TDuv,p1vec,p2vec,p3vec,p10,p21,p32,p30,p20,p31, &
2776 m02,m12,m22,m32,rmax,TDerr)
2777 integer,
intent(in) :: rmax
2778 double complex,
intent(in) :: p1vec(0:3), p2vec(0:3), p3vec(0:3)
2779 double complex,
intent(in) :: p10,p21,p32,p30,p20,p31,m02,m12,m22,m32
2780 double complex,
intent(out) :: TD(:), TDuv(:)
2781 double precision,
intent(out),
optional :: TDerr(0:rmax)
2786 call errout_cll(
'Dten_cll',
'Nmax_cll smaller 4',eflag,.true.)
2788 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 4'
2794 call errout_cll(
'Dten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
2797 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
2802 call dten_args_list_checked_cll(td,tduv,p1vec,p2vec,p3vec,p10,p21,p32,p30,p20,p31, &
2803 m02,m12,m22,m32,rmax,tderr)
2808 subroutine dten_args_list_checked_cll(TD,TDuv,p1vec,p2vec,p3vec,p10,p21,p32,p30,p20,p31, &
2809 m02,m12,m22,m32,rmax,TDerr)
2810 integer,
intent(in) :: rmax
2811 double complex,
intent(in) :: p1vec(0:3), p2vec(0:3), p3vec(0:3)
2812 double complex,
intent(in) :: p10,p21,p32,p30,p20,p31,m02,m12,m22,m32
2813 double complex,
intent(out) :: TD(RtS(rmax)), TDuv(RtS(rmax))
2814 double precision,
intent(out),
optional :: TDerr(0:rmax)
2815 double complex :: TD2(RtS(rmax)), TDuv2(RtS(rmax))
2816 double complex :: MomVec(0:3,3), MomInv(6), masses2(0:3)
2817 double complex :: CD(0:rmax/2,0:rmax,0:rmax,0:rmax)
2818 double complex :: CDuv(0:rmax/2,0:rmax,0:rmax,0:rmax)
2819 double precision :: CDerr(0:rmax), TDerr_aux(0:rmax), TDerr_aux2(0:rmax)
2820 double complex :: args(22)
2821 double precision :: TDdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TDacc(0:rmax)
2824 momvec(0:,1) = p1vec
2825 momvec(0:,2) = p2vec
2826 momvec(0:,3) = p3vec
2839 args(1:4) = momvec(0:,1)
2840 args(5:8) = momvec(0:,2)
2841 args(9:12) = momvec(0:,3)
2842 args(13:18) = mominv
2843 args(19:22) = masses2(0:)
2844 call setmasterfname_cll(
'Dten_cll')
2845 call setmastern_cll(4)
2846 call setmasterr_cll(rmax)
2847 call setmasterargs_cll(22,args)
2855 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2856 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2861 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2862 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2870 do i=rts(r-1)+1,rts(r)
2871 norm_coli = max(norm_coli,abs(td(i)))
2872 norm_dd = max(norm_dd,abs(td2(i)))
2874 if (norm_coli.eq.0d0)
then
2875 norm_coli = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2876 if(norm_coli.ne.0d0)
then
2877 norm_coli=1d0/norm_coli**(2-real(r)/2)
2882 if (norm_dd.eq.0d0)
then
2883 norm_dd = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2884 if(norm_dd.ne.0d0)
then
2885 norm_dd=1d0/norm_dd**(2-real(r)/2)
2890 norm(r) = min(norm_coli,norm_dd)
2893 call checktensorslist_cll(td,td2,momvec,mominv,masses2,norm,4,rmax,tddiff)
2895 if (tderr_aux(rmax).lt.tderr_aux2(rmax))
then
2896 if (
present(tderr)) tderr = max(tderr_aux,tddiff*norm)
2898 tdacc(r) = max(tderr_aux(r)/norm(r),tddiff(r))
2904 if (
present(tderr)) tderr = max(tderr_aux2,tddiff*norm)
2906 tdacc(r) = max(tderr_aux2(r)/norm(r),tddiff(r))
2912 call d_main_cll(cd,cduv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
2913 masses2(0),masses2(1),masses2(2),masses2(3),rmax,derr2=cderr,id_in=0)
2916 if (
present(tderr)) tderr = tderr_aux
2919 do i=rts(r-1)+1,rts(r)
2920 norm(r) = max(norm(r),abs(td(i)))
2922 if (norm(r).eq.0d0)
then
2923 norm(r) = max(maxval(abs(mominv(1:6))),maxval(abs(masses2(0:3))))
2924 if(norm(r).ne.0d0)
then
2925 norm(r)=1d0/norm(r)**(2-real(r)/2)
2930 tdacc(r) = tderr_aux(r)/norm(r)
2948 write(
ncpout_cll,*)
' Further output of Critical Points for TDten_cll suppressed'
2954 write(
ncpout2_cll,*)
' Further output of Critical Points for TDten_cll suppressed'
2973 subroutine eten_main_cll(TE,TEuv,MomVec,MomInv,masses2,rmax,TEerr)
2975 integer,
intent(in) :: rmax
2976 double complex,
intent(in) :: MomVec(0:3,4), MomInv(10), masses2(0:4)
2977 double complex,
intent(out) :: TE(0:rmax,0:rmax,0:rmax,0:rmax)
2978 double complex,
intent(out) :: TEuv(0:rmax,0:rmax,0:rmax,0:rmax)
2979 double precision,
intent(out),
optional :: TEerr(0:rmax)
2980 double complex :: TE2(0:rmax,0:rmax,0:rmax,0:rmax), TEuv2(0:rmax,0:rmax,0:rmax,0:rmax)
2981 double complex :: CE(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
2982 double complex :: CEuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
2983 double precision :: CEerr(0:rmax), TEerr_aux(0:rmax), TEerr_aux2(0:rmax)
2984 double complex :: args(31)
2985 double precision :: TEdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TEacc(0:rmax)
2986 integer :: r,n0,n1,n2,n3
2991 call errout_cll(
'Eten_cll',
'Nmax_cll smaller 5',eflag,.true.)
2993 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 5'
2999 call errout_cll(
'Eten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
3002 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
3008 args(1:4) = momvec(0:,1)
3009 args(5:8) = momvec(0:,2)
3010 args(9:12) = momvec(0:,3)
3011 args(13:16) = momvec(0:,4)
3012 args(17:26) = mominv
3013 args(27:31) = masses2
3014 call setmasterfname_cll(
'Eten_cll')
3015 call setmastern_cll(5)
3016 call setmasterr_cll(rmax)
3017 call setmasterargs_cll(31,args)
3024 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3025 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3026 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3027 call calctensore(te,teuv,teerr_aux,ce,ceuv,ceerr,momvec,rmax)
3031 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3032 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3033 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3034 call calctensore(te2,teuv2,teerr_aux2,ce,ceuv,ceerr,momvec,rmax)
3045 norm_coli = max(norm_coli,abs(te(n0,n1,n2,n3)))
3046 norm_dd = max(norm_dd,abs(te2(n0,n1,n2,n3)))
3050 if (norm_coli.eq.0d0)
then
3051 norm_coli = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3052 if(norm_coli.ne.0d0)
then
3053 norm_coli=1d0/norm_coli**(3-real(r)/2)
3058 if (norm_dd.eq.0d0)
then
3059 norm_dd = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3060 if(norm_dd.ne.0d0)
then
3061 norm_dd=1d0/norm_dd**(3-real(r)/2)
3066 norm(r) = min(norm_coli,norm_dd)
3069 call checktensors_cll(te,te2,momvec,mominv,masses2,norm,5,rmax,tediff)
3071 if (teerr_aux(rmax).lt.teerr_aux2(rmax))
then
3072 if (
present(teerr)) teerr = max(teerr_aux,tediff*norm)
3074 teacc(r) = max(teerr_aux(r)/norm(r),tediff(r))
3080 if (
present(teerr)) teerr = max(teerr_aux2,tediff*norm)
3082 teacc(r) = max(teerr_aux2(r)/norm(r),tediff(r))
3088 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3089 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3090 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3091 call calctensore(te,teuv,teerr_aux,ce,ceuv,ceerr,momvec,rmax)
3092 if (
present(teerr)) teerr = teerr_aux
3099 norm(r) = max(norm(r),abs(te(n0,n1,n2,n3)))
3103 if (norm(r).eq.0d0)
then
3104 norm(r) = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3105 if(norm(r).ne.0d0)
then
3106 norm(r)=1d0/norm(r)**(3-real(r)/2)
3111 teacc(r) = teerr_aux(r)/norm(r)
3129 write(
ncpout_cll,*)
' Further output of Critical Points for TEten_cll suppressed'
3135 write(
ncpout2_cll,*)
' Further output of Critical Points for TEten_cll suppressed'
3154 subroutine eten_list_cll(TE,TEuv,MomVec,MomInv,masses2,rmax,TEerr)
3156 integer,
intent(in) :: rmax
3157 double complex,
intent(in) :: MomVec(0:3,4), MomInv(10), masses2(0:4)
3158 double complex,
intent(out) :: TE(:), TEuv(:)
3159 double precision,
intent(out),
optional :: TEerr(0:rmax)
3165 call errout_cll(
'Eten_cll',
'Nmax_cll smaller 5',eflag,.true.)
3167 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 5'
3173 call errout_cll(
'Eten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
3176 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
3188 integer,
intent(in) :: rmax
3189 double complex,
intent(in) :: MomVec(0:3,4), MomInv(10), masses2(0:4)
3190 double complex,
intent(out) :: TE(RtS(rmax)), TEuv(RtS(rmax))
3191 double precision,
intent(out),
optional :: TEerr(0:rmax)
3192 double complex :: TE2(RtS(rmax)), TEuv2(RtS(rmax))
3193 double complex :: CE(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
3194 double complex :: CEuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
3195 double precision :: CEerr(0:rmax), TEerr_aux(0:rmax), TEerr_aux2(0:rmax)
3196 double complex :: args(31)
3197 double precision :: TEdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TEacc(0:rmax)
3202 args(1:4) = momvec(0:,1)
3203 args(5:8) = momvec(0:,2)
3204 args(9:12) = momvec(0:,3)
3205 args(13:16) = momvec(0:,4)
3206 args(17:26) = mominv
3207 args(27:31) = masses2
3208 call setmasterfname_cll(
'Eten_cll')
3209 call setmastern_cll(5)
3210 call setmasterr_cll(rmax)
3211 call setmasterargs_cll(31,args)
3218 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3219 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3220 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3225 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3226 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3227 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3235 do i=rts(r-1)+1,rts(r)
3236 norm_coli = max(norm_coli,abs(te(i)))
3237 norm_dd = max(norm_dd,abs(te2(i)))
3239 if (norm_coli.eq.0d0)
then
3240 norm_coli = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3241 if(norm_coli.ne.0d0)
then
3242 norm_coli=1d0/norm_coli**(3-real(r)/2)
3247 if (norm_dd.eq.0d0)
then
3248 norm_dd = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3249 if(norm_dd.ne.0d0)
then
3250 norm_dd=1d0/norm_dd**(3-real(r)/2)
3255 norm(r) = min(norm_coli,norm_dd)
3258 call checktensorslist_cll(te,te2,momvec,mominv,masses2,norm,5,rmax,tediff)
3260 if (teerr_aux(rmax).lt.teerr_aux2(rmax))
then
3261 if (
present(teerr)) teerr = max(teerr_aux,tediff*norm)
3263 teacc(r) = max(teerr_aux(r)/norm(r),tediff(r))
3269 if (
present(teerr)) teerr = max(teerr_aux2,tediff*norm)
3271 teacc(r) = max(teerr_aux2(r)/norm(r),tediff(r))
3277 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3278 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3279 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3281 if (
present(teerr)) teerr = teerr_aux
3284 do i=rts(r-1)+1,rts(r)
3285 norm(r) = max(norm(r),abs(te(i)))
3287 if (norm(r).eq.0d0)
then
3288 norm(r) = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3289 if(norm(r).ne.0d0)
then
3290 norm(r)=1d0/norm(r)**(3-real(r)/2)
3295 teacc(r) = teerr_aux(r)/norm(r)
3313 write(
ncpout_cll,*)
' Further output of Critical Points for TEten_cll suppressed'
3319 write(
ncpout2_cll,*)
' Further output of Critical Points for TEten_cll suppressed'
3339 subroutine eten_args_cll(TE,TEuv,p1vec,p2vec,p3vec,p4vec,p10,p21,p32,p43, &
3340 p40,p20,p31,p42,p30,p41,m02,m12,m22,m32,m42,rmax,TEerr)
3342 integer,
intent(in) :: rmax
3343 double complex,
intent(in) :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3)
3344 double complex,
intent(in) :: p10,p21,p32,p43,p40,p20,p31,p42,p30,p41
3345 double complex,
intent(in) :: m02,m12,m22,m32,m42
3346 double complex,
intent(out) :: TE(0:rmax,0:rmax,0:rmax,0:rmax)
3347 double complex,
intent(out) :: TEuv(0:rmax,0:rmax,0:rmax,0:rmax)
3348 double precision,
intent(out),
optional :: TEerr(0:rmax)
3349 double complex :: TE2(0:rmax,0:rmax,0:rmax,0:rmax), TEuv2(0:rmax,0:rmax,0:rmax,0:rmax)
3350 double complex :: MomVec(0:3,4), MomInv(10), masses2(0:4)
3351 double complex :: CE(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
3352 double complex :: CEuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
3353 double precision :: CEerr(0:rmax), TEerr_aux(0:rmax), TEerr_aux2(0:rmax)
3354 double complex :: args(31)
3355 double precision :: TEdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TEacc(0:rmax)
3356 integer :: r,n0,n1,n2,n3
3361 call errout_cll(
'Eten_cll',
'Nmax_cll smaller 5',eflag,.true.)
3363 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 5'
3369 call errout_cll(
'Eten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
3372 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
3377 momvec(0:,1) = p1vec
3378 momvec(0:,2) = p2vec
3379 momvec(0:,3) = p3vec
3380 momvec(0:,4) = p4vec
3398 args(1:4) = momvec(0:,1)
3399 args(5:8) = momvec(0:,2)
3400 args(9:12) = momvec(0:,3)
3401 args(13:16) = momvec(0:,4)
3402 args(17:26) = mominv
3403 args(27:31) = masses2
3404 call setmasterfname_cll(
'Eten_cll')
3405 call setmastern_cll(5)
3406 call setmasterr_cll(rmax)
3407 call setmasterargs_cll(31,args)
3415 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3416 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3417 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3418 call calctensore(te,teuv,teerr_aux,ce,ceuv,ceerr,momvec,rmax)
3422 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3423 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3424 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3425 call calctensore(te2,teuv2,teerr_aux2,ce,ceuv,ceerr,momvec,rmax)
3436 norm_coli = max(norm_coli,abs(te(n0,n1,n2,n3)))
3437 norm_dd = max(norm_dd,abs(te2(n0,n1,n2,n3)))
3441 if (norm_coli.eq.0d0)
then
3442 norm_coli = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3443 if(norm_coli.ne.0d0)
then
3444 norm_coli=1d0/norm_coli**(3-real(r)/2)
3449 if (norm_dd.eq.0d0)
then
3450 norm_dd = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3451 if(norm_dd.ne.0d0)
then
3452 norm_dd=1d0/norm_dd**(3-real(r)/2)
3457 norm(r) = min(norm_coli,norm_dd)
3460 call checktensors_cll(te,te2,momvec,mominv,masses2,norm,5,rmax,tediff)
3462 if (teerr_aux(rmax).lt.teerr_aux2(rmax))
then
3463 if (
present(teerr)) teerr = max(teerr_aux,tediff*norm)
3465 teacc(r) = max(teerr_aux(r)/norm(r),tediff(r))
3471 if (
present(teerr)) teerr = max(teerr_aux2,tediff*norm)
3473 teacc(r) = max(teerr_aux2(r)/norm(r),tediff(r))
3479 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3480 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3481 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3482 call calctensore(te,teuv,teerr_aux,ce,ceuv,ceerr,momvec,rmax)
3483 if (
present(teerr)) teerr = teerr_aux
3490 norm(r) = max(norm(r),abs(te(n0,n1,n2,n3)))
3494 if (norm(r).eq.0d0)
then
3495 norm(r) = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3496 if(norm(r).ne.0d0)
then
3497 norm(r)=1d0/norm(r)**(3-real(r)/2)
3502 teacc(r) = teerr_aux(r)/norm(r)
3520 write(
ncpout_cll,*)
' Further output of Critical Points for TEten_cll suppressed'
3526 write(
ncpout2_cll,*)
' Further output of Critical Points for TEten_cll suppressed'
3546 subroutine eten_args_list_cll(TE,TEuv,p1vec,p2vec,p3vec,p4vec,p10,p21,p32,p43, &
3547 p40,p20,p31,p42,p30,p41,m02,m12,m22,m32,m42,rmax,TEerr)
3549 integer,
intent(in) :: rmax
3550 double complex,
intent(in) :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3)
3551 double complex,
intent(in) :: p10,p21,p32,p43,p40,p20,p31,p42,p30,p41
3552 double complex,
intent(in) :: m02,m12,m22,m32,m42
3553 double complex,
intent(out) :: TE(RtS(rmax)), TEuv(RtS(rmax))
3554 double precision,
intent(out),
optional :: TEerr(0:rmax)
3555 double complex :: TE2(RtS(rmax)), TEuv2(RtS(rmax))
3556 double complex :: MomVec(0:3,4), MomInv(10), masses2(0:4)
3557 double complex :: CE(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
3558 double complex :: CEuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
3559 double precision :: CEerr(0:rmax), TEerr_aux(0:rmax), TEerr_aux2(0:rmax)
3560 double complex :: args(31)
3561 double precision :: TEdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TEacc(0:rmax)
3567 call errout_cll(
'Eten_cll',
'Nmax_cll smaller 5',eflag,.true.)
3569 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 5'
3575 call errout_cll(
'Eten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
3578 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
3584 p10,p21,p32,p43,p40,p20,p31,p42,p30,p41, &
3585 m02,m12,m22,m32,m42,rmax,teerr)
3590 subroutine eten_args_list_checked_cll(TE,TEuv,p1vec,p2vec,p3vec,p4vec,p10,p21,p32,p43, &
3591 p40,p20,p31,p42,p30,p41,m02,m12,m22,m32,m42,rmax,TEerr)
3593 integer,
intent(in) :: rmax
3594 double complex,
intent(in) :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3)
3595 double complex,
intent(in) :: p10,p21,p32,p43,p40,p20,p31,p42,p30,p41
3596 double complex,
intent(in) :: m02,m12,m22,m32,m42
3597 double complex,
intent(out) :: TE(RtS(rmax)), TEuv(RtS(rmax))
3598 double precision,
intent(out),
optional :: TEerr(0:rmax)
3599 double complex :: TE2(RtS(rmax)), TEuv2(RtS(rmax))
3600 double complex :: MomVec(0:3,4), MomInv(10), masses2(0:4)
3601 double complex :: CE(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
3602 double complex :: CEuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax)
3603 double precision :: CEerr(0:rmax), TEerr_aux(0:rmax), TEerr_aux2(0:rmax)
3604 double complex :: args(31)
3605 double precision :: TEdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TEacc(0:rmax)
3609 momvec(0:,1) = p1vec
3610 momvec(0:,2) = p2vec
3611 momvec(0:,3) = p3vec
3612 momvec(0:,4) = p4vec
3630 args(1:4) = momvec(0:,1)
3631 args(5:8) = momvec(0:,2)
3632 args(9:12) = momvec(0:,3)
3633 args(13:16) = momvec(0:,4)
3634 args(17:26) = mominv
3635 args(27:31) = masses2
3636 call setmasterfname_cll(
'Eten_cll')
3637 call setmastern_cll(5)
3638 call setmasterr_cll(rmax)
3639 call setmasterargs_cll(31,args)
3647 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3648 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3649 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3650 call calctensore(te,teuv,teerr_aux,ce,ceuv,ceerr,momvec,rmax)
3654 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3655 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3656 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3657 call calctensore(te2,teuv2,teerr_aux2,ce,ceuv,ceerr,momvec,rmax)
3664 do i=rts(r-1)+1,rts(r)
3665 norm_coli = max(norm_coli,abs(te(i)))
3666 norm_dd = max(norm_dd,abs(te2(i)))
3668 if (norm_coli.eq.0d0)
then
3669 norm_coli = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3670 if(norm_coli.ne.0d0)
then
3671 norm_coli=1d0/norm_coli**(3-real(r)/2)
3676 if (norm_dd.eq.0d0)
then
3677 norm_dd = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3678 if(norm_dd.ne.0d0)
then
3679 norm_dd=1d0/norm_dd**(3-real(r)/2)
3684 norm(r) = min(norm_coli,norm_dd)
3687 call checktensorslist_cll(te,te2,momvec,mominv,masses2,norm,5,rmax,tediff)
3689 if (teerr_aux(rmax).lt.teerr_aux2(rmax))
then
3690 if (
present(teerr)) teerr = max(teerr_aux,tediff*norm)
3692 teacc(r) = max(teerr_aux(r)/norm(r),tediff(r))
3698 if (
present(teerr)) teerr = max(teerr_aux2,tediff*norm)
3700 teacc(r) = max(teerr_aux2(r)/norm(r),tediff(r))
3706 call e_main_cll(ce,ceuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3707 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),masses2(0), &
3708 masses2(1),masses2(2),masses2(3),masses2(4),rmax,eerr2=ceerr,id_in=0)
3710 if (
present(teerr)) teerr = teerr_aux
3713 do i=rts(r-1)+1,rts(r)
3714 norm(r) = max(norm(r),abs(te(i)))
3716 if (norm(r).eq.0d0)
then
3717 norm(r) = max(maxval(abs(mominv(1:10))),maxval(abs(masses2(0:4))))
3718 if(norm(r).ne.0d0)
then
3719 norm(r)=1d0/norm(r)**(3-real(r)/2)
3724 teacc(r) = teerr_aux(r)/norm(r)
3742 write(
ncpout_cll,*)
' Further output of Critical Points for TEten_cll suppressed'
3748 write(
ncpout2_cll,*)
' Further output of Critical Points for TEten_cll suppressed'
3767 subroutine ften_main_cll(TF,TFuv,MomVec,MomInv,masses2,rmax,TFerr)
3769 integer,
intent(in) :: rmax
3770 double complex,
intent(in) :: MomVec(0:3,5), MomInv(15), masses2(0:5)
3771 double complex,
intent(out) :: TF(0:rmax,0:rmax,0:rmax,0:rmax)
3772 double complex,
intent(out) :: TFuv(0:rmax,0:rmax,0:rmax,0:rmax)
3773 double precision,
intent(out),
optional :: TFerr(0:rmax)
3774 double complex :: TF2(0:rmax,0:rmax,0:rmax,0:rmax), TFuv2(0:rmax,0:rmax,0:rmax,0:rmax)
3775 double complex :: CF(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
3776 double complex :: CFuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
3777 double precision :: CFerr(0:rmax), TFerr_aux(0:rmax), TFerr_aux2(0:rmax)
3778 double complex :: args(41)
3779 double precision :: TFdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TFacc(0:rmax)
3780 integer :: r,n0,n1,n2,n3
3785 call errout_cll(
'Ften_cll',
'Nmax_cll smaller 6',eflag,.true.)
3787 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 6'
3793 call errout_cll(
'Ften_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
3796 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
3802 args(1:4) = momvec(0:,1)
3803 args(5:8) = momvec(0:,2)
3804 args(9:12) = momvec(0:,3)
3805 args(13:16) = momvec(0:,4)
3806 args(17:20) = momvec(0:,5)
3807 args(21:35) = mominv
3808 args(36:41) = masses2(0:)
3809 call setmasterfname_cll(
'Ften_cll')
3810 call setmastern_cll(6)
3811 call setmasterr_cll(rmax)
3812 call setmasterargs_cll(41,args)
3819 if (
mode_cll.gt.1)
call f_dd_dummy(rmax)
3824 call calctensorfr(tf,tfuv,tferr_aux,momvec,mominv,masses2,rmax)
3828 call calctensorfr(tf2,tfuv2,tferr_aux2,momvec,mominv,masses2,rmax)
3839 norm_coli = max(norm_coli,abs(tf(n0,n1,n2,n3)))
3840 norm_dd = max(norm_dd,abs(tf2(n0,n1,n2,n3)))
3844 if (norm_coli.eq.0d0)
then
3845 norm_coli = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
3846 if(norm_coli.ne.0d0)
then
3847 norm_coli=1d0/norm_coli**(4-real(r)/2)
3852 if (norm_dd.eq.0d0)
then
3853 norm_dd = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
3854 if(norm_dd.ne.0d0)
then
3855 norm_dd=1d0/norm_dd**(4-real(r)/2)
3860 norm(r) = min(norm_coli,norm_dd)
3863 call checktensors_cll(tf,tf2,momvec,mominv,masses2,norm,6,rmax,tfdiff)
3865 if (tferr_aux(rmax).lt.tferr_aux2(rmax))
then
3866 if (
present(tferr)) tferr = max(tferr_aux,tfdiff*norm)
3868 tfacc(r) = max(tferr_aux(r)/norm(r),tfdiff(r))
3874 if (
present(tferr)) tferr = max(tferr_aux2,tfdiff*norm)
3876 tfacc(r) = max(tferr_aux2(r)/norm(r),tfdiff(r))
3882 call calctensorfr(tf,tfuv,tferr_aux,momvec,mominv,masses2,rmax)
3883 if (
present(tferr)) tferr = tferr_aux
3890 norm(r) = max(norm(r),abs(tf(n0,n1,n2,n3)))
3894 if (norm(r).eq.0d0)
then
3895 norm(r) = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
3896 if(norm(r).ne.0d0)
then
3897 norm(r)=1d0/norm(r)**(4-real(r)/2)
3902 tfacc(r) = tferr_aux(r)/norm(r)
3913 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3914 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
3915 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
3916 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
3917 call calctensorf(tf,tfuv,tferr_aux,cf,cfuv,cferr,momvec,rmax)
3921 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3922 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
3923 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
3924 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
3925 call calctensorf(tf2,tfuv2,tferr_aux2,cf,cfuv,cferr,momvec,rmax)
3936 norm_coli = max(norm_coli,abs(tf(n0,n1,n2,n3)))
3937 norm_dd = max(norm_dd,abs(tf2(n0,n1,n2,n3)))
3941 if (norm_coli.eq.0d0)
then
3942 norm_coli = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
3943 if(norm_coli.ne.0d0)
then
3944 norm_coli=1d0/norm_coli**(4-real(r)/2)
3949 if (norm_dd.eq.0d0)
then
3950 norm_dd = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
3951 if(norm_dd.ne.0d0)
then
3952 norm_dd=1d0/norm_dd**(4-real(r)/2)
3957 norm(r) = min(norm_coli,norm_dd)
3960 call checktensors_cll(tf,tf2,momvec,mominv,masses2,norm,6,rmax,tfdiff)
3962 if (tferr_aux(rmax).lt.tferr_aux2(rmax))
then
3963 if (
present(tferr)) tferr = max(tferr_aux,tfdiff*norm)
3965 tfacc(r) = max(tferr_aux(r)/norm(r),tfdiff(r))
3971 if (
present(tferr)) tferr = max(tferr_aux2,tfdiff*norm)
3973 tfacc(r) = max(tferr_aux2(r)/norm(r),tfdiff(r))
3979 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
3980 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
3981 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
3982 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
3983 call calctensorf(tf,tfuv,tferr_aux,cf,cfuv,cferr,momvec,rmax)
3984 if (
present(tferr)) tferr = tferr_aux
3991 norm(r) = max(norm(r),abs(tf(n0,n1,n2,n3)))
3995 if (norm(r).eq.0d0)
then
3996 norm(r) = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
3997 if(norm(r).ne.0d0)
then
3998 norm(r)=1d0/norm(r)**(4-real(r)/2)
4003 tfacc(r) = tferr_aux(r)/norm(r)
4023 write(
ncpout_cll,*)
' Further output of Critical Points for TFten_cll suppressed'
4029 write(
ncpout2_cll,*)
' Further output of Critical Points for TFten_cll suppressed'
4048 subroutine ften_list_cll(TF,TFuv,MomVec,MomInv,masses2,rmax,TFerr)
4050 integer,
intent(in) :: rmax
4051 double complex,
intent(in) :: MomVec(0:3,5), MomInv(15), masses2(0:5)
4052 double complex,
intent(out) :: TF(:), TFuv(:)
4053 double precision,
intent(out),
optional :: TFerr(0:rmax)
4058 call errout_cll(
'Ften_cll',
'Nmax_cll smaller 6',eflag,.true.)
4060 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 6'
4066 call errout_cll(
'Ften_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
4069 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
4081 integer,
intent(in) :: rmax
4082 double complex,
intent(in) :: MomVec(0:3,5), MomInv(15), masses2(0:5)
4083 double complex,
intent(out) :: TF(RtS(rmax)), TFuv(RtS(rmax))
4084 double precision,
intent(out),
optional :: TFerr(0:rmax)
4085 double complex :: TF2(RtS(rmax)), TFuv2(RtS(rmax))
4086 double complex :: CF(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
4087 double complex :: CFuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
4088 double precision :: CFerr(0:rmax), TFerr_aux(0:rmax), TFerr_aux2(0:rmax)
4089 double complex :: args(41)
4090 double precision :: TFdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TFacc(0:rmax)
4095 args(1:4) = momvec(0:,1)
4096 args(5:8) = momvec(0:,2)
4097 args(9:12) = momvec(0:,3)
4098 args(13:16) = momvec(0:,4)
4099 args(17:20) = momvec(0:,5)
4100 args(21:35) = mominv
4101 args(36:41) = masses2(0:)
4102 call setmasterfname_cll(
'Ften_cll')
4103 call setmastern_cll(6)
4104 call setmasterr_cll(rmax)
4105 call setmasterargs_cll(41,args)
4111 if (
mode_cll.gt.1)
call f_dd_dummy(rmax)
4127 do i=rts(r-1)+1,rts(r)
4128 norm_coli = max(norm_coli,abs(tf(i)))
4129 norm_dd = max(norm_dd,abs(tf2(i)))
4131 if (norm_coli.eq.0d0)
then
4132 norm_coli = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4133 if(norm_coli.ne.0d0)
then
4134 norm_coli=1d0/norm_coli**(4-real(r)/2)
4139 if (norm_dd.eq.0d0)
then
4140 norm_dd = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4141 if(norm_dd.ne.0d0)
then
4142 norm_dd=1d0/norm_dd**(4-real(r)/2)
4147 norm(r) = min(norm_coli,norm_dd)
4150 call checktensorslist_cll(tf,tf2,momvec,mominv,masses2,norm,6,rmax,tfdiff)
4152 if (tferr_aux(rmax).lt.tferr_aux2(rmax))
then
4153 if (
present(tferr)) tferr = max(tferr_aux,tfdiff*norm)
4155 tfacc(r) = max(tferr_aux(r)/norm(r),tfdiff(r))
4161 if (
present(tferr)) tferr = max(tferr_aux2,tfdiff*norm)
4163 tfacc(r) = max(tferr_aux2(r)/norm(r),tfdiff(r))
4170 if (
present(tferr)) tferr = tferr_aux
4173 do i=rts(r-1)+1,rts(r)
4174 norm(r) = max(norm(r),abs(tf(i)))
4176 if (norm(r).eq.0d0)
then
4177 norm(r) = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4178 if(norm(r).ne.0d0)
then
4179 norm(r)=1d0/norm(r)**(4-real(r)/2)
4184 tfacc(r) = tferr_aux(r)/norm(r)
4195 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
4196 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
4197 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
4198 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
4203 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
4204 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
4205 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
4206 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
4214 do i=rts(r-1)+1,rts(r)
4215 norm_coli = max(norm_coli,abs(tf(i)))
4216 norm_dd = max(norm_dd,abs(tf2(i)))
4218 if (norm_coli.eq.0d0)
then
4219 norm_coli = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4220 if(norm_coli.ne.0d0)
then
4221 norm_coli=1d0/norm_coli**(4-real(r)/2)
4226 if (norm_dd.eq.0d0)
then
4227 norm_dd = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4228 if(norm_dd.ne.0d0)
then
4229 norm_dd=1d0/norm_dd**(4-real(r)/2)
4234 norm(r) = min(norm_coli,norm_dd)
4237 call checktensorslist_cll(tf,tf2,momvec,mominv,masses2,norm,6,rmax,tfdiff)
4239 if (tferr_aux(rmax).lt.tferr_aux2(rmax))
then
4240 if (
present(tferr)) tferr = max(tferr_aux,tfdiff*norm)
4242 tfacc(r) = max(tferr_aux(r)/norm(r),tfdiff(r))
4248 if (
present(tferr)) tferr = max(tferr_aux2,tfdiff*norm)
4250 tfacc(r) = max(tferr_aux2(r)/norm(r),tfdiff(r))
4256 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
4257 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
4258 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
4259 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
4261 if (
present(tferr)) tferr = tferr_aux
4264 do i=rts(r-1)+1,rts(r)
4265 norm(r) = max(norm(r),abs(tf(i)))
4267 if (norm(r).eq.0d0)
then
4268 norm(r) = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4269 if(norm(r).ne.0d0)
then
4270 norm(r)=1d0/norm(r)**(4-real(r)/2)
4275 tfacc(r) = tferr_aux(r)/norm(r)
4295 write(
ncpout_cll,*)
' Further output of Critical Points for TFten_cll suppressed'
4301 write(
ncpout2_cll,*)
' Further output of Critical Points for TFten_cll suppressed'
4322 subroutine ften_args_cll(TF,TFuv,p1vec,p2vec,p3vec,p4vec,p5vec, &
4323 p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40, &
4324 p51,p30,p41,p52,m02,m12,m22,m32,m42,m52,rmax,TFerr)
4325 integer,
intent(in) :: rmax
4326 double complex,
intent(in) :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3)
4327 double complex,
intent(in) :: p5vec(0:3)
4328 double complex,
intent(in) :: p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40
4329 double complex,
intent(in) :: p51,p30,p41,p52,m02,m12,m22,m32,m42,m52
4330 double complex,
intent(out) :: TF(0:rmax,0:rmax,0:rmax,0:rmax)
4331 double complex,
intent(out) :: TFuv(0:rmax,0:rmax,0:rmax,0:rmax)
4332 double precision,
intent(out),
optional :: TFerr(0:rmax)
4333 double complex :: TF2(0:rmax,0:rmax,0:rmax,0:rmax), TFuv2(0:rmax,0:rmax,0:rmax,0:rmax)
4334 double complex :: MomVec(0:3,5), MomInv(15), masses2(0:5)
4335 double complex :: CF(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
4336 double complex :: CFuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
4337 double precision :: CFerr(0:rmax), TFerr_aux(0:rmax), TFerr_aux2(0:rmax)
4338 double complex :: args(41)
4339 double precision :: TFdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TFacc(0:rmax)
4340 integer :: r,n0,n1,n2,n3
4345 call errout_cll(
'Ften_cll',
'Nmax_cll smaller 6',eflag,.true.)
4347 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 6'
4353 call errout_cll(
'Ften_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
4356 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
4361 momvec(0:,1) = p1vec
4362 momvec(0:,2) = p2vec
4363 momvec(0:,3) = p3vec
4364 momvec(0:,4) = p4vec
4365 momvec(0:,5) = p5vec
4389 args(1:4) = momvec(0:,1)
4390 args(5:8) = momvec(0:,2)
4391 args(9:12) = momvec(0:,3)
4392 args(13:16) = momvec(0:,4)
4393 args(17:20) = momvec(0:,5)
4394 args(21:35) = mominv
4395 args(36:41) = masses2(0:)
4396 call setmasterfname_cll(
'Ften_cll')
4397 call setmastern_cll(6)
4398 call setmasterr_cll(rmax)
4399 call setmasterargs_cll(41,args)
4405 if (
mode_cll.gt.1)
call f_dd_dummy(rmax)
4410 call calctensorfr(tf,tfuv,tferr_aux,momvec,mominv,masses2,rmax)
4414 call calctensorfr(tf2,tfuv2,tferr_aux2,momvec,mominv,masses2,rmax)
4425 norm_coli = max(norm_coli,abs(tf(n0,n1,n2,n3)))
4426 norm_dd = max(norm_dd,abs(tf2(n0,n1,n2,n3)))
4430 if (norm_coli.eq.0d0)
then
4431 norm_coli = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4432 if(norm_coli.ne.0d0)
then
4433 norm_coli=1d0/norm_coli**(4-real(r)/2)
4438 if (norm_dd.eq.0d0)
then
4439 norm_dd = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4440 if(norm_dd.ne.0d0)
then
4441 norm_dd=1d0/norm_dd**(4-real(r)/2)
4446 norm(r) = min(norm_coli,norm_dd)
4449 call checktensors_cll(tf,tf2,momvec,mominv,masses2,norm,6,rmax,tfdiff)
4451 if (tferr_aux(rmax).lt.tferr_aux2(rmax))
then
4452 if (
present(tferr)) tferr = max(tferr_aux,tfdiff*norm)
4454 tfacc(r) = max(tferr_aux(r)/norm(r),tfdiff(r))
4460 if (
present(tferr)) tferr = max(tferr_aux2,tfdiff*norm)
4462 tfacc(r) = max(tferr_aux2(r)/norm(r),tfdiff(r))
4468 call calctensorfr(tf,tfuv,tferr_aux,momvec,mominv,masses2,rmax)
4469 if (
present(tferr)) tferr = tferr_aux
4476 norm(r) = max(norm(r),abs(tf(n0,n1,n2,n3)))
4480 if (norm(r).eq.0d0)
then
4481 norm(r) = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4482 if(norm(r).ne.0d0)
then
4483 norm(r)=1d0/norm(r)**(4-real(r)/2)
4488 tfacc(r) = tferr_aux(r)/norm(r)
4498 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
4499 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
4500 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
4501 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
4502 call calctensorf(tf,tfuv,tferr_aux,cf,cfuv,cferr,momvec,rmax)
4506 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
4507 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
4508 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
4509 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
4510 call calctensorf(tf2,tfuv2,tferr_aux2,cf,cfuv,cferr,momvec,rmax)
4521 norm_coli = max(norm_coli,abs(tf(n0,n1,n2,n3)))
4522 norm_dd = max(norm_dd,abs(tf2(n0,n1,n2,n3)))
4526 if (norm_coli.eq.0d0)
then
4527 norm_coli = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4528 if(norm_coli.ne.0d0)
then
4529 norm_coli=1d0/norm_coli**(4-real(r)/2)
4534 if (norm_dd.eq.0d0)
then
4535 norm_dd = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4536 if(norm_dd.ne.0d0)
then
4537 norm_dd=1d0/norm_dd**(4-real(r)/2)
4542 norm(r) = min(norm_coli,norm_dd)
4545 call checktensors_cll(tf,tf2,momvec,mominv,masses2,norm,6,rmax,tfdiff)
4547 if (tferr_aux(rmax).lt.tferr_aux2(rmax))
then
4548 if (
present(tferr)) tferr = max(tferr_aux,tfdiff*norm)
4550 tfacc(r) = max(tferr_aux(r)/norm(r),tfdiff(r))
4556 if (
present(tferr)) tferr = max(tferr_aux2,tfdiff*norm)
4558 tfacc(r) = max(tferr_aux2(r)/norm(r),tfdiff(r))
4564 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
4565 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
4566 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
4567 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
4568 call calctensorf(tf,tfuv,tferr_aux,cf,cfuv,cferr,momvec,rmax)
4569 if (
present(tferr)) tferr = tferr_aux
4576 norm(r) = max(norm(r),abs(tf(n0,n1,n2,n3)))
4580 if (norm(r).eq.0d0)
then
4581 norm(r) = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4582 if(norm(r).ne.0d0)
then
4583 norm(r)=1d0/norm(r)**(4-real(r)/2)
4588 tfacc(r) = tferr_aux(r)/norm(r)
4608 write(
ncpout_cll,*)
' Further output of Critical Points for TFten_cll suppressed'
4614 write(
ncpout2_cll,*)
' Further output of Critical Points for TFten_cll suppressed'
4636 p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40, &
4637 p51,p30,p41,p52,m02,m12,m22,m32,m42,m52,rmax,TFerr)
4638 integer,
intent(in) :: rmax
4639 double complex,
intent(in) :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3)
4640 double complex,
intent(in) :: p5vec(0:3)
4641 double complex,
intent(in) :: p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40
4642 double complex,
intent(in) :: p51,p30,p41,p52,m02,m12,m22,m32,m42,m52
4643 double complex,
intent(out) :: TF(:),TFuv(:)
4644 double precision,
intent(out),
optional :: TFerr(0:rmax)
4649 call errout_cll(
'Ften_cll',
'Nmax_cll smaller 6',eflag,.true.)
4651 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 6'
4657 call errout_cll(
'Ften_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
4660 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
4666 p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40, &
4667 p51,p30,p41,p52,m02,m12,m22,m32,m42,m52,rmax,tferr)
4673 p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40, &
4674 p51,p30,p41,p52,m02,m12,m22,m32,m42,m52,rmax,TFerr)
4676 integer,
intent(in) :: rmax
4677 double complex,
intent(in) :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3)
4678 double complex,
intent(in) :: p5vec(0:3)
4679 double complex,
intent(in) :: p10,p21,p32,p43,p54,p50,p20,p31,p42,p53,p40
4680 double complex,
intent(in) :: p51,p30,p41,p52,m02,m12,m22,m32,m42,m52
4681 double complex,
intent(out) :: TF(RtS(rmax)),TFuv(RtS(rmax))
4682 double precision,
intent(out),
optional :: TFerr(0:rmax)
4683 double complex :: TF2(RtS(rmax)),TFuv2(RtS(rmax))
4684 double complex :: MomVec(0:3,5), MomInv(15), masses2(0:5)
4685 double complex :: CF(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
4686 double complex :: CFuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
4687 double precision :: CFerr(0:rmax), TFerr_aux(0:rmax), TFerr_aux2(0:rmax)
4688 double complex :: args(41)
4689 double precision :: TFdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TFacc(0:rmax)
4693 momvec(0:,1) = p1vec
4694 momvec(0:,2) = p2vec
4695 momvec(0:,3) = p3vec
4696 momvec(0:,4) = p4vec
4697 momvec(0:,5) = p5vec
4721 args(1:4) = momvec(0:,1)
4722 args(5:8) = momvec(0:,2)
4723 args(9:12) = momvec(0:,3)
4724 args(13:16) = momvec(0:,4)
4725 args(17:20) = momvec(0:,5)
4726 args(21:35) = mominv
4727 args(36:41) = masses2(0:)
4728 call setmasterfname_cll(
'Ften_cll')
4729 call setmastern_cll(6)
4730 call setmasterr_cll(rmax)
4731 call setmasterargs_cll(41,args)
4737 if (
mode_cll.gt.1)
call f_dd_dummy(rmax)
4753 do i=rts(r-1)+1,rts(r)
4754 norm_coli = max(norm_coli,abs(tf(i)))
4755 norm_dd = max(norm_dd,abs(tf2(i)))
4757 if (norm_coli.eq.0d0)
then
4758 norm_coli = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4759 if(norm_coli.ne.0d0)
then
4760 norm_coli=1d0/norm_coli**(4-real(r)/2)
4765 if (norm_dd.eq.0d0)
then
4766 norm_dd = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4767 if(norm_dd.ne.0d0)
then
4768 norm_dd=1d0/norm_dd**(4-real(r)/2)
4773 norm(r) = min(norm_coli,norm_dd)
4776 call checktensorslist_cll(tf,tf2,momvec,mominv,masses2,norm,6,rmax,tfdiff)
4778 if (tferr_aux(rmax).lt.tferr_aux2(rmax))
then
4779 if (
present(tferr)) tferr = max(tferr_aux,tfdiff*norm)
4781 tfacc(r) = max(tferr_aux(r)/norm(r),tfdiff(r))
4787 if (
present(tferr)) tferr = max(tferr_aux2,tfdiff*norm)
4789 tfacc(r) = max(tferr_aux2(r)/norm(r),tfdiff(r))
4796 if (
present(tferr)) tferr = tferr_aux
4799 do i=rts(r-1)+1,rts(r)
4800 norm(r) = max(norm(r),abs(tf(i)))
4802 if (norm(r).eq.0d0)
then
4803 norm(r) = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4804 if(norm(r).ne.0d0)
then
4805 norm(r)=1d0/norm(r)**(4-real(r)/2)
4810 tfacc(r) = tferr_aux(r)/norm(r)
4819 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
4820 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
4821 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
4822 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
4827 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
4828 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
4829 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
4830 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
4838 do i=rts(r-1)+1,rts(r)
4839 norm_coli = max(norm_coli,abs(tf(i)))
4840 norm_dd = max(norm_dd,abs(tf2(i)))
4842 if (norm_coli.eq.0d0)
then
4843 norm_coli = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4844 if(norm_coli.ne.0d0)
then
4845 norm_coli=1d0/norm_coli**(4-real(r)/2)
4850 if (norm_dd.eq.0d0)
then
4851 norm_dd = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4852 if(norm_dd.ne.0d0)
then
4853 norm_dd=1d0/norm_dd**(4-real(r)/2)
4858 norm(r) = min(norm_coli,norm_dd)
4861 call checktensorslist_cll(tf,tf2,momvec,mominv,masses2,norm,6,rmax,tfdiff)
4863 if (tferr_aux(rmax).lt.tferr_aux2(rmax))
then
4864 if (
present(tferr)) tferr = max(tferr_aux,tfdiff*norm)
4866 tfacc(r) = max(tferr_aux(r)/norm(r),tfdiff(r))
4872 if (
present(tferr)) tferr = max(tferr_aux2,tfdiff*norm)
4874 tfacc(r) = max(tferr_aux2(r)/norm(r),tfdiff(r))
4880 call f_main_cll(cf,cfuv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5), &
4881 mominv(6),mominv(7),mominv(8),mominv(9),mominv(10),mominv(11), &
4882 mominv(12),mominv(13),mominv(14),mominv(15),masses2(0),masses2(1), &
4883 masses2(2),masses2(3),masses2(4),masses2(5),rmax,ferr2=cferr,id_in=0)
4885 if (
present(tferr)) tferr = tferr_aux
4888 do i=rts(r-1)+1,rts(r)
4889 norm(r) = max(norm(r),abs(tf(i)))
4891 if (norm(r).eq.0d0)
then
4892 norm(r) = max(maxval(abs(mominv(1:15))),maxval(abs(masses2(0:5))))
4893 if(norm(r).ne.0d0)
then
4894 norm(r)=1d0/norm(r)**(4-real(r)/2)
4899 tfacc(r) = tferr_aux(r)/norm(r)
4919 write(
ncpout_cll,*)
' Further output of Critical Points for TFten_cll suppressed'
4925 write(
ncpout2_cll,*)
' Further output of Critical Points for TFten_cll suppressed'
4944 subroutine gten_main_cll(TG,TGuv,MomVec,MomInv,masses2,rmax,TGerr)
4946 integer,
intent(in) :: rmax
4947 double complex,
intent(in) :: MomVec(0:3,6), MomInv(21), masses2(0:6)
4948 double complex,
intent(out) :: TG(0:rmax,0:rmax,0:rmax,0:rmax)
4949 double complex,
intent(out) :: TGuv(0:rmax,0:rmax,0:rmax,0:rmax)
4950 double precision,
intent(out),
optional :: TGerr(0:rmax)
4951 double precision :: TGerr_aux(0:rmax), TGerr_aux2(0:rmax)
4952 double complex :: TG2(0:rmax,0:rmax,0:rmax,0:rmax), TGuv2(0:rmax,0:rmax,0:rmax,0:rmax)
4953 double complex :: CG(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
4954 double complex :: CGuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
4955 double precision :: CGerr(0:rmax), TGacc(0:rmax)
4956 double precision :: norm(0:rmax),norm_coli,norm_dd, TGdiff(0:rmax)
4957 double complex :: args(52)
4958 integer :: r,n0,n1,n2,n3
4963 call errout_cll(
'Gten_cll',
'Nmax_cll smaller 7',eflag,.true.)
4965 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 7'
4971 call errout_cll(
'Gten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
4974 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
4980 args(1:4) = momvec(0:,1)
4981 args(5:8) = momvec(0:,2)
4982 args(9:12) = momvec(0:,3)
4983 args(13:16) = momvec(0:,4)
4984 args(17:20) = momvec(0:,5)
4985 args(21:24) = momvec(0:,6)
4986 args(25:45) = mominv
4987 args(46:52) = masses2
4988 call setmasterfname_cll(
'Gten_cll')
4989 call setmastern_cll(7)
4990 call setmasterr_cll(rmax)
4991 call setmasterargs_cll(52,args)
4997 if (
mode_cll.gt.1)
call tn_dd_dummy(7,rmax)
5002 call calctensortnr(tg,tguv,tgerr_aux,momvec,mominv,masses2,7,rmax,0)
5006 call calctensortnr(tg2,tguv2,tgerr_aux2,momvec,mominv,masses2,7,rmax,0)
5017 norm_coli = max(norm_coli,abs(tg(n0,n1,n2,n3)))
5018 norm_dd = max(norm_dd,abs(tg2(n0,n1,n2,n3)))
5022 if (norm_coli.eq.0d0)
then
5023 norm_coli = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5024 if(norm_coli.ne.0d0)
then
5025 norm_coli=1d0/norm_coli**(5-real(r)/2)
5030 if (norm_dd.eq.0d0)
then
5031 norm_dd = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5032 if(norm_dd.ne.0d0)
then
5033 norm_dd=1d0/norm_dd**(5-real(r)/2)
5038 norm(r) = min(norm_coli,norm_dd)
5041 call checktensors_cll(tg,tg2,momvec,mominv,masses2,norm,7,rmax,tgdiff)
5043 if (tgerr_aux(rmax).lt.tgerr_aux2(rmax))
then
5044 if (
present(tgerr)) tgerr = max(tgerr_aux,tgdiff*norm)
5046 tgacc(r) = max(tgerr_aux(r)/norm(r),tgdiff(r))
5052 if (
present(tgerr)) tgerr = max(tgerr_aux2,tgdiff*norm)
5054 tgacc(r) = max(tgerr_aux2(r)/norm(r),tgdiff(r))
5060 call calctensortnr(tg,tguv,tgerr_aux,momvec,mominv,masses2,7,rmax,0)
5061 if (
present(tgerr)) tgerr = tgerr_aux
5068 norm(r) = max(norm(r),abs(tg(n0,n1,n2,n3)))
5072 if (norm(r).eq.0d0)
then
5073 norm(r) = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5074 if(norm(r).ne.0d0)
then
5075 norm(r)=1d0/norm(r)**(5-real(r)/2)
5080 tgacc(r) = tgerr_aux(r)/norm(r)
5086 call g_main_cll(cg,cguv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
5087 mominv(7),mominv(8),mominv(9),mominv(10),mominv(11),mominv(12), &
5088 mominv(13),mominv(14),mominv(15),mominv(16),mominv(17),mominv(18), &
5089 mominv(19),mominv(20),mominv(21),masses2(0),masses2(1),masses2(2), &
5090 masses2(3),masses2(4),masses2(5),masses2(6),rmax,gerr2=cgerr,id_in=0)
5091 call calctensorg(tg,tguv,tgerr_aux,cg,cguv,cgerr,momvec,rmax)
5092 if (
present(tgerr)) tgerr = tgerr_aux
5099 norm(r) = max(norm(r),abs(tg(n0,n1,n2,n3)))
5103 if (norm(r).eq.0d0)
then
5104 norm(r) = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5105 if(norm(r).ne.0d0)
then
5106 norm(r)=1d0/norm(r)**(5-real(r)/2)
5111 tgacc(r) = tgerr_aux(r)/norm(r)
5125 write(
ncpout_cll,*)
' Further output of Critical Points for TGten_cll suppressed'
5142 write(
ncpout_cll,*)
' Further output of Critical Points for TGten_cll suppressed'
5148 write(
ncpout2_cll,*)
' Further output of Critical Points for TGten_cll suppressed'
5167 subroutine gten_list_cll(TG,TGuv,MomVec,MomInv,masses2,rmax,TGerr)
5169 integer,
intent(in) :: rmax
5170 double complex,
intent(in) :: MomVec(0:3,6), MomInv(21), masses2(0:6)
5171 double complex,
intent(out) :: TG(:),TGuv(:)
5172 double precision,
intent(out),
optional :: TGerr(0:rmax)
5177 call errout_cll(
'Gten_cll',
'Nmax_cll smaller 7',eflag,.true.)
5179 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 7'
5185 call errout_cll(
'Gten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
5188 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
5200 integer,
intent(in) :: rmax
5201 double complex,
intent(in) :: MomVec(0:3,6), MomInv(21), masses2(0:6)
5202 double complex,
intent(out) :: TG(RtS(rmax)),TGuv(RtS(rmax))
5203 double precision,
intent(out),
optional :: TGerr(0:rmax)
5204 double complex :: TG2(RtS(rmax)),TGuv2(RtS(rmax))
5205 double precision :: TGerr_aux(0:rmax),TGerr_aux2(0:rmax)
5206 double complex :: CG(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
5207 double complex :: CGuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
5208 double precision :: CGerr(0:rmax), TGacc(0:rmax)
5209 double precision :: norm(0:rmax),norm_coli,norm_dd, TGdiff(0:rmax)
5210 double complex :: args(52)
5215 args(1:4) = momvec(0:,1)
5216 args(5:8) = momvec(0:,2)
5217 args(9:12) = momvec(0:,3)
5218 args(13:16) = momvec(0:,4)
5219 args(17:20) = momvec(0:,5)
5220 args(21:24) = momvec(0:,6)
5221 args(25:45) = mominv
5222 args(46:52) = masses2
5223 call setmasterfname_cll(
'Gten_cll')
5224 call setmastern_cll(7)
5225 call setmasterr_cll(rmax)
5226 call setmasterargs_cll(52,args)
5233 if (
mode_cll.gt.1)
call tn_dd_dummy(7,rmax)
5249 do i=rts(r-1)+1,rts(r)
5250 norm_coli = max(norm_coli,abs(tg(i)))
5251 norm_dd = max(norm_dd,abs(tg2(i)))
5253 if (norm_coli.eq.0d0)
then
5254 norm_coli = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5255 if(norm_coli.ne.0d0)
then
5256 norm_coli=1d0/norm_coli**(5-real(r)/2)
5261 if (norm_dd.eq.0d0)
then
5262 norm_dd = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5263 if(norm_dd.ne.0d0)
then
5264 norm_dd=1d0/norm_dd**(5-real(r)/2)
5269 norm(r) = min(norm_coli,norm_dd)
5272 call checktensorslist_cll(tg,tg2,momvec,mominv,masses2,norm,7,rmax,tgdiff)
5274 if (tgerr_aux(rmax).lt.tgerr_aux2(rmax))
then
5275 if (
present(tgerr)) tgerr = max(tgerr_aux,tgdiff*norm)
5277 tgacc(r) = max(tgerr_aux(r)/norm(r),tgdiff(r))
5283 if (
present(tgerr)) tgerr = max(tgerr_aux2,tgdiff*norm)
5285 tgacc(r) = max(tgerr_aux2(r)/norm(r),tgdiff(r))
5292 if (
present(tgerr)) tgerr = tgerr_aux
5295 do i=rts(r-1)+1,rts(r)
5296 norm(r) = max(norm(r),abs(tg(i)))
5298 if (norm(r).eq.0d0)
then
5299 norm(r) = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5300 if(norm(r).ne.0d0)
then
5301 norm(r)=1d0/norm(r)**(5-real(r)/2)
5306 tgacc(r) = tgerr_aux(r)/norm(r)
5312 call g_main_cll(cg,cguv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
5313 mominv(7),mominv(8),mominv(9),mominv(10),mominv(11),mominv(12), &
5314 mominv(13),mominv(14),mominv(15),mominv(16),mominv(17),mominv(18), &
5315 mominv(19),mominv(20),mominv(21),masses2(0),masses2(1),masses2(2), &
5316 masses2(3),masses2(4),masses2(5),masses2(6),rmax,gerr2=cgerr,id_in=0)
5318 if (
present(tgerr)) tgerr = tgerr_aux
5321 do i=rts(r-1)+1,rts(r)
5322 norm(r) = max(norm(r),abs(tg(i)))
5324 if (norm(r).eq.0d0)
then
5325 norm(r) = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5326 if(norm(r).ne.0d0)
then
5327 norm(r)=1d0/norm(r)**(5-real(r)/2)
5332 tgacc(r) = tgerr_aux(r)/norm(r)
5346 write(
ncpout_cll,*)
' Further output of Critical Points for TGten_cll suppressed'
5367 subroutine gten_args_cll(TG,TGuv,p1vec,p2vec,p3vec,p4vec,p5vec,p6vec, &
5368 p10,p21,p32,p43,p54,p65,p60,p20,p31,p42,p53, &
5369 p64,p50,p61,p30,p41,p52,p63,p40,p51,p62, &
5370 m02,m12,m22,m32,m42,m52,m62,rmax,TGerr)
5371 integer,
intent(in) :: rmax
5372 double complex,
intent(in) :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3)
5373 double complex,
intent(in) :: p5vec(0:3),p6vec(0:3)
5374 double complex,
intent(in) :: p10,p21,p32,p43,p54,p65,p60,p20,p31,p42,p53
5375 double complex,
intent(in) :: p64,p50,p61,p30,p41,p52,p63,p40,p51,p62
5376 double complex,
intent(in) :: m02,m12,m22,m32,m42,m52,m62
5377 double complex,
intent(out) :: TG(0:rmax,0:rmax,0:rmax,0:rmax)
5378 double complex,
intent(out) :: TGuv(0:rmax,0:rmax,0:rmax,0:rmax)
5379 double precision,
intent(out),
optional :: TGerr(0:rmax)
5380 double complex :: TG2(0:rmax,0:rmax,0:rmax,0:rmax), TGuv2(0:rmax,0:rmax,0:rmax,0:rmax)
5381 double precision :: TGerr_aux(0:rmax),TGerr_aux2(0:rmax)
5382 double complex :: MomVec(0:3,6), MomInv(21), masses2(0:6)
5383 double complex :: CG(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
5384 double complex :: CGuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
5385 double precision :: CGerr(0:rmax), TGacc(0:rmax)
5386 double precision :: norm(0:rmax),norm_coli,norm_dd, TGdiff(0:rmax)
5387 double complex :: args(52)
5388 integer :: r,n0,n1,n2,n3
5393 call errout_cll(
'Gten_cll',
'Nmax_cll smaller 7',eflag,.true.)
5395 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 7'
5401 call errout_cll(
'Gten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
5404 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
5409 momvec(0:,1) = p1vec
5410 momvec(0:,2) = p2vec
5411 momvec(0:,3) = p3vec
5412 momvec(0:,4) = p4vec
5413 momvec(0:,5) = p5vec
5414 momvec(0:,6) = p6vec
5445 args(1:4) = momvec(0:,1)
5446 args(5:8) = momvec(0:,2)
5447 args(9:12) = momvec(0:,3)
5448 args(13:16) = momvec(0:,4)
5449 args(17:20) = momvec(0:,5)
5450 args(21:24) = momvec(0:,6)
5451 args(25:45) = mominv
5452 args(46:52) = masses2
5453 call setmasterfname_cll(
'Gten_cll')
5454 call setmastern_cll(7)
5455 call setmasterr_cll(rmax)
5456 call setmasterargs_cll(52,args)
5463 if (
mode_cll.gt.1)
call tn_dd_dummy(7,rmax)
5468 call calctensortnr(tg,tguv,tgerr_aux,momvec,mominv,masses2,7,rmax,0)
5472 call calctensortnr(tg2,tguv2,tgerr_aux2,momvec,mominv,masses2,7,rmax,0)
5483 norm_coli = max(norm_coli,abs(tg(n0,n1,n2,n3)))
5484 norm_dd = max(norm_dd,abs(tg2(n0,n1,n2,n3)))
5488 if (norm_coli.eq.0d0)
then
5489 norm_coli = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5490 if(norm_coli.ne.0d0)
then
5491 norm_coli=1d0/norm_coli**(5-real(r)/2)
5496 if (norm_dd.eq.0d0)
then
5497 norm_dd = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5498 if(norm_dd.ne.0d0)
then
5499 norm_dd=1d0/norm_dd**(5-real(r)/2)
5504 norm(r) = min(norm_coli,norm_dd)
5507 call checktensors_cll(tg,tg2,momvec,mominv,masses2,norm,7,rmax,tgdiff)
5509 if (tgerr_aux(rmax).lt.tgerr_aux2(rmax))
then
5510 if (
present(tgerr)) tgerr = max(tgerr_aux,tgdiff*norm)
5512 tgacc(r) = max(tgerr_aux(r)/norm(r),tgdiff(r))
5518 if (
present(tgerr)) tgerr = max(tgerr_aux2,tgdiff*norm)
5520 tgacc(r) = max(tgerr_aux2(r)/norm(r),tgdiff(r))
5526 call calctensortnr(tg,tguv,tgerr_aux,momvec,mominv,masses2,7,rmax,0)
5527 if (
present(tgerr)) tgerr = tgerr_aux
5534 norm(r) = max(norm(r),abs(tg(n0,n1,n2,n3)))
5538 if (norm(r).eq.0d0)
then
5539 norm(r) = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5540 if(norm(r).ne.0d0)
then
5541 norm(r)=1d0/norm(r)**(5-real(r)/2)
5546 tgacc(r) = tgerr_aux(r)/norm(r)
5552 call g_main_cll(cg,cguv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
5553 mominv(7),mominv(8),mominv(9),mominv(10),mominv(11),mominv(12), &
5554 mominv(13),mominv(14),mominv(15),mominv(16),mominv(17),mominv(18), &
5555 mominv(19),mominv(20),mominv(21),masses2(0),masses2(1),masses2(2), &
5556 masses2(3),masses2(4),masses2(5),masses2(6),rmax,gerr2=cgerr,id_in=0)
5557 call calctensorg(tg,tguv,tgerr_aux,cg,cguv,cgerr,momvec,rmax)
5558 if (
present(tgerr)) tgerr = tgerr_aux
5565 norm(r) = max(norm(r),abs(tg(n0,n1,n2,n3)))
5569 if (norm(r).eq.0d0)
then
5570 norm(r) = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5571 if(norm(r).ne.0d0)
then
5572 norm(r)=1d0/norm(r)**(5-real(r)/2)
5577 tgacc(r) = tgerr_aux(r)/norm(r)
5591 write(
ncpout_cll,*)
' Further output of Critical Points for TGten_cll suppressed'
5613 p10,p21,p32,p43,p54,p65,p60,p20,p31,p42,p53, &
5614 p64,p50,p61,p30,p41,p52,p63,p40,p51,p62, &
5615 m02,m12,m22,m32,m42,m52,m62,rmax,TGerr)
5616 integer,
intent(in) :: rmax
5617 double complex,
intent(in) :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3)
5618 double complex,
intent(in) :: p5vec(0:3),p6vec(0:3)
5619 double complex,
intent(in) :: p10,p21,p32,p43,p54,p65,p60,p20,p31,p42,p53
5620 double complex,
intent(in) :: p64,p50,p61,p30,p41,p52,p63,p40,p51,p62
5621 double complex,
intent(in) :: m02,m12,m22,m32,m42,m52,m62
5622 double complex,
intent(out) :: TG(RtS(rmax)), TGuv(RtS(rmax))
5623 double precision,
intent(out),
optional :: TGerr(0:rmax)
5624 double complex :: TG2(RtS(rmax)), TGuv2(RtS(rmax))
5625 double precision :: TGerr_aux(0:rmax), TGerr_aux2(0:rmax)
5626 double complex :: MomVec(0:3,6), MomInv(21), masses2(0:6)
5627 double complex :: CG(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
5628 double complex :: CGuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
5629 double precision :: CGerr(0:rmax), TGacc(0:rmax)
5630 double precision :: norm(0:rmax), TGdiff(0:rmax), norm_coli, norm_dd
5631 double complex :: args(52)
5637 call errout_cll(
'Gten_cll',
'Nmax_cll smaller 7',eflag,.true.)
5639 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= 7'
5645 call errout_cll(
'Gten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
5648 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
5654 p10,p21,p32,p43,p54,p65,p60,p20,p31,p42,p53, &
5655 p64,p50,p61,p30,p41,p52,p63,p40,p51,p62, &
5656 m02,m12,m22,m32,m42,m52,m62,rmax,tgerr)
5662 p10,p21,p32,p43,p54,p65,p60,p20,p31,p42,p53, &
5663 p64,p50,p61,p30,p41,p52,p63,p40,p51,p62, &
5664 m02,m12,m22,m32,m42,m52,m62,rmax,TGerr)
5665 integer,
intent(in) :: rmax
5666 double complex,
intent(in) :: p1vec(0:3),p2vec(0:3),p3vec(0:3),p4vec(0:3)
5667 double complex,
intent(in) :: p5vec(0:3),p6vec(0:3)
5668 double complex,
intent(in) :: p10,p21,p32,p43,p54,p65,p60,p20,p31,p42,p53
5669 double complex,
intent(in) :: p64,p50,p61,p30,p41,p52,p63,p40,p51,p62
5670 double complex,
intent(in) :: m02,m12,m22,m32,m42,m52,m62
5671 double complex,
intent(out) :: TG(RtS(rmax)), TGuv(RtS(rmax))
5672 double precision,
intent(out),
optional :: TGerr(0:rmax)
5673 double complex :: TG2(RtS(rmax)), TGuv2(RtS(rmax))
5674 double precision :: TGerr_aux(0:rmax), TGerr_aux2(0:rmax)
5675 double complex :: MomVec(0:3,6), MomInv(21), masses2(0:6)
5676 double complex :: CG(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
5677 double complex :: CGuv(0:rmax/2,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax,0:rmax)
5678 double precision :: CGerr(0:rmax), TGacc(0:rmax)
5679 double precision :: norm(0:rmax), TGdiff(0:rmax), norm_coli, norm_dd
5680 double complex :: args(52)
5684 momvec(0:,1) = p1vec
5685 momvec(0:,2) = p2vec
5686 momvec(0:,3) = p3vec
5687 momvec(0:,4) = p4vec
5688 momvec(0:,5) = p5vec
5689 momvec(0:,6) = p6vec
5720 args(1:4) = momvec(0:,1)
5721 args(5:8) = momvec(0:,2)
5722 args(9:12) = momvec(0:,3)
5723 args(13:16) = momvec(0:,4)
5724 args(17:20) = momvec(0:,5)
5725 args(21:24) = momvec(0:,6)
5726 args(25:45) = mominv
5727 args(46:52) = masses2
5728 call setmasterfname_cll(
'Gten_cll')
5729 call setmastern_cll(7)
5730 call setmasterr_cll(rmax)
5731 call setmasterargs_cll(52,args)
5738 if (
mode_cll.gt.1)
call tn_dd_dummy(7,rmax)
5754 do i=rts(r-1)+1,rts(r)
5755 norm_coli = max(norm_coli,abs(tg(i)))
5756 norm_dd = max(norm_dd,abs(tg2(i)))
5758 if (norm_coli.eq.0d0)
then
5759 norm_coli = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5760 if(norm_coli.ne.0d0)
then
5761 norm_coli=1d0/norm_coli**(5-real(r)/2)
5766 if (norm_dd.eq.0d0)
then
5767 norm_dd = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5768 if(norm_dd.ne.0d0)
then
5769 norm_dd=1d0/norm_dd**(5-real(r)/2)
5774 norm(r) = min(norm_coli,norm_dd)
5777 call checktensorslist_cll(tg,tg2,momvec,mominv,masses2,norm,7,rmax,tgdiff)
5779 if (tgerr_aux(rmax).lt.tgerr_aux2(rmax))
then
5780 if (
present(tgerr)) tgerr = max(tgerr_aux,tgdiff*norm)
5782 tgacc(r) = max(tgerr_aux(r)/norm(r),tgdiff(r))
5788 if (
present(tgerr)) tgerr = max(tgerr_aux2,tgdiff*norm)
5790 tgacc(r) = max(tgerr_aux2(r)/norm(r),tgdiff(r))
5797 if (
present(tgerr)) tgerr = tgerr_aux
5800 do i=rts(r-1)+1,rts(r)
5801 norm(r) = max(norm(r),abs(tg(i)))
5803 if (norm(r).eq.0d0)
then
5804 norm(r) = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5805 if(norm(r).ne.0d0)
then
5806 norm(r)=1d0/norm(r)**(5-real(r)/2)
5811 tgacc(r) = tgerr_aux(r)/norm(r)
5817 call g_main_cll(cg,cguv,mominv(1),mominv(2),mominv(3),mominv(4),mominv(5),mominv(6), &
5818 mominv(7),mominv(8),mominv(9),mominv(10),mominv(11),mominv(12), &
5819 mominv(13),mominv(14),mominv(15),mominv(16),mominv(17),mominv(18), &
5820 mominv(19),mominv(20),mominv(21),masses2(0),masses2(1),masses2(2), &
5821 masses2(3),masses2(4),masses2(5),masses2(6),rmax,gerr2=cgerr,id_in=0)
5823 if (
present(tgerr)) tgerr = tgerr_aux
5826 do i=rts(r-1)+1,rts(r)
5827 norm(r) = max(norm(r),abs(tg(i)))
5829 if (norm(r).eq.0d0)
then
5830 norm(r) = max(maxval(abs(mominv(1:21))),maxval(abs(masses2(0:6))))
5831 if(norm(r).ne.0d0)
then
5832 norm(r)=1d0/norm(r)**(5-real(r)/2)
5837 tgacc(r) = tgerr_aux(r)/norm(r)
5851 write(
ncpout_cll,*)
' Further output of Critical Points for TGten_cll suppressed'
5857 write(
ncpout2_cll,*)
' Further output of Critical Points for TGten_cll suppressed'
5876 subroutine tnten_main_cll(TN,TNuv,MomVec,MomInv,masses2,N,rmax,TNerr)
5878 integer,
intent(in) :: N,rmax
5879 double complex,
intent(in) :: MomVec(0:3,max(N-1,1)), MomInv(:), masses2(0:max(N-1,1))
5880 double complex,
intent(out) :: TN(0:rmax,0:rmax,0:rmax,0:rmax)
5881 double complex,
intent(out) :: TNuv(0:rmax,0:rmax,0:rmax,0:rmax)
5882 double precision,
intent(out),
optional :: TNerr(0:rmax)
5887 call errout_cll(
'TNten_cll',
'subroutine called with wrong number of arguments for N=1',eflag)
5894 call errout_cll(
'TN_cll',
'argument N larger than Nmax_cll',eflag,.true.)
5897 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= ',n
5903 call errout_cll(
'TN_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
5906 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
5918 integer,
intent(in) :: N,rmax
5919 double complex,
intent(in) :: MomVec(0:3,max(N-1,1)), MomInv(BinomTable(2,N)), masses2(0:max(N-1,1))
5920 double complex,
intent(out) :: TN(0:rmax,0:rmax,0:rmax,0:rmax)
5921 double complex,
intent(out) :: TNuv(0:rmax,0:rmax,0:rmax,0:rmax)
5922 double precision,
intent(out),
optional :: TNerr(0:rmax)
5923 double complex :: TN2(0:rmax,0:rmax,0:rmax,0:rmax), TNuv2(0:rmax,0:rmax,0:rmax,0:rmax)
5924 double complex :: CN(NCoefs(rmax,N))
5925 double complex :: CNuv(NCoefs(rmax,N))
5926 double precision :: CNerr(0:rmax), TNerr_aux(0:rmax), TNerr_aux2(0:rmax)
5927 double complex :: args(4*(N-1)+BinomTable(2,N)+N)
5929 double precision :: TNdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TNacc(0:rmax)
5930 integer :: r,n0,n1,n2,n3
5935 call errout_cll(
'TNten_cll',
'subroutine called with wrong number of arguments for N=1',eflag)
5940 args(4*i-3:4*i) = momvec(0:,i)
5942 args(4*(n-1)+1:4*(n-1)+binomtable(2,n)) = mominv
5943 args(4*(n-1)+binomtable(2,n)+1:4*(n-1)+binomtable(2,n)+n) = masses2(0:)
5944 call setmasterfname_cll(
'TNten_cll')
5945 call setmastern_cll(n)
5946 call setmasterr_cll(rmax)
5947 call setmasterargs_cll(4*(n-1)+binomtable(2,n)+n,args)
5954 if (
mode_cll.gt.1)
call tn_dd_dummy(n,rmax)
5959 call calctensortnr(tn,tnuv,tnerr_aux,momvec,mominv,masses2,n,rmax,0)
5963 call calctensortnr(tn2,tnuv2,tnerr_aux2,momvec,mominv,masses2,n,rmax,0)
5974 norm_coli = max(norm_coli,abs(tn(n0,n1,n2,n3)))
5975 norm_dd = max(norm_dd,abs(tn2(n0,n1,n2,n3)))
5979 if (norm_coli.eq.0d0)
then
5980 norm_coli = max(maxval(abs(mominv(1:binomtable(2,n)))), &
5981 maxval(abs(masses2(0:n-1))))
5982 if(norm_coli.ne.0d0)
then
5983 norm_coli=1d0/norm_coli**(n-2-real(r)/2)
5985 norm_coli=1d0/
muir2_cll**(n-2-real(r)/2)
5988 if (norm_dd.eq.0d0)
then
5989 norm_dd = max(maxval(abs(mominv(1:binomtable(2,n)))), &
5990 maxval(abs(masses2(0:n-1))))
5991 if(norm_dd.ne.0d0)
then
5992 norm_dd=1d0/norm_dd**(n-2-real(r)/2)
5997 norm(r) = min(norm_coli,norm_dd)
6000 call checktensors_cll(tn,tn2,momvec,mominv,masses2,norm,n,rmax,tndiff)
6002 if (tnerr_aux(rmax).lt.tnerr_aux2(rmax))
then
6003 if (
present(tnerr)) tnerr = max(tnerr_aux,tndiff*norm)
6005 tnacc(r) = max(tnerr_aux(r)/norm(r),tndiff(r))
6011 if (
present(tnerr)) tnerr = max(tnerr_aux2,tndiff*norm)
6013 tnacc(r) = max(tnerr_aux2(r)/norm(r),tndiff(r))
6019 call calctensortnr(tn,tnuv,tnerr_aux,momvec,mominv,masses2,n,rmax,0)
6020 if (
present(tnerr)) tnerr = tnerr_aux
6027 norm(r) = max(norm(r),abs(tn(n0,n1,n2,n3)))
6031 if (norm(r).eq.0d0)
then
6032 norm(r) = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6033 maxval(abs(masses2(0:n-1))))
6034 if(norm(r).ne.0d0)
then
6035 norm(r)=1d0/norm(r)**(n-2-real(r)/2)
6042 tnacc(r) = tnerr_aux(r)/norm(r)
6052 call tn_cll(cn,cnuv,mominv,masses2,n,rmax,tnerr2=cnerr,id_in=0)
6053 call calctensortn(tn,tnuv,tnerr_aux,cn,cnuv,cnerr,momvec,n,rmax)
6057 call tn_cll(cn,cnuv,mominv,masses2,n,rmax,tnerr2=cnerr,id_in=0)
6058 call calctensortn(tn2,tnuv2,tnerr_aux2,cn,cnuv,cnerr,momvec,n,rmax)
6069 norm_coli = max(norm_coli,abs(tn(n0,n1,n2,n3)))
6070 norm_dd = max(norm_dd,abs(tn2(n0,n1,n2,n3)))
6074 if (norm_coli.eq.0d0)
then
6075 norm_coli = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6076 maxval(abs(masses2(0:n-1))))
6077 if(norm_coli.ne.0d0)
then
6078 norm_coli=1d0/norm_coli**(n-2-real(r)/2)
6080 norm_coli=1d0/
muir2_cll**(n-2-real(r)/2)
6083 if (norm_dd.eq.0d0)
then
6084 norm_dd = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6085 maxval(abs(masses2(0:n-1))))
6086 if(norm_dd.ne.0d0)
then
6087 norm_dd=1d0/norm_dd**(n-2-real(r)/2)
6092 norm(r) = min(norm_coli,norm_dd)
6095 call checktensors_cll(tn,tn2,momvec,mominv,masses2,norm,n,rmax,tndiff)
6097 if (tnerr_aux(rmax).lt.tnerr_aux2(rmax))
then
6098 if (
present(tnerr)) tnerr = max(tnerr_aux,tndiff*norm)
6100 tnacc(r) = max(tnerr_aux(r)/norm(r),tndiff(r))
6106 if (
present(tnerr)) tnerr = max(tnerr_aux2,tndiff*norm)
6108 tnacc(r) = max(tnerr_aux2(r)/norm(r),tndiff(r))
6114 call tn_cll(cn,cnuv,mominv,masses2,n,rmax,tnerr2=cnerr,id_in=0)
6115 call calctensortn(tn,tnuv,tnerr_aux,cn,cnuv,cnerr,momvec,n,rmax)
6116 if (
present(tnerr)) tnerr = tnerr_aux
6123 norm(r) = max(norm(r),abs(tn(n0,n1,n2,n3)))
6127 if (norm(r).eq.0d0)
then
6128 norm(r) = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6129 maxval(abs(masses2(0:n-1))))
6130 if(norm(r).ne.0d0)
then
6131 norm(r)=1d0/norm(r)**(n-2-real(r)/2)
6138 tnacc(r) = tnerr_aux(r)/norm(r)
6158 write(
ncpout_cll,*)
' Further output of Critical Points for TNten_cll suppressed for N =',n
6164 write(
ncpout2_cll,*)
' Further output of Critical Points for TNten_cll suppressed for N =',n
6183 subroutine tnten_list_cll(TN,TNuv,MomVec,MomInv,masses2,N,rmax,TNerr)
6185 integer,
intent(in) :: N,rmax
6186 double complex,
intent(in) :: MomVec(0:3,max(N-1,1)), MomInv(:), masses2(0:max(N-1,1))
6187 double complex,
intent(out) :: TN(:),TNuv(:)
6188 double precision,
intent(out),
optional :: TNerr(0:rmax)
6193 call errout_cll(
'TNten_cll',
'subroutine called with wrong number of arguments for N=1',eflag)
6199 call errout_cll(
'TNten_cll',
'argument N larger than Nmax_cll',eflag,.true.)
6202 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= ',n
6208 call errout_cll(
'TNten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
6211 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
6224 integer,
intent(in) :: N,rmax
6225 double complex,
intent(in) :: MomVec(0:3,max(N-1,1)), MomInv(BinomTable(2,N)), masses2(0:max(N-1,1))
6226 double complex,
intent(out) :: TN(RtS(rmax)),TNuv(RtS(rmax))
6227 double precision,
intent(out),
optional :: TNerr(0:rmax)
6228 double complex :: TN2(RtS(rmax)),TNuv2(RtS(rmax))
6229 double complex :: CN(NCoefs(rmax,N)),CNuv(NCoefs(rmax,N))
6230 double precision :: CNerr(0:rmax), TNerr_aux(0:rmax), TNerr_aux2(0:rmax)
6231 double complex :: args(4*(N-1)+BinomTable(2,N)+N)
6232 double precision :: TNdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TNacc(0:rmax)
6243 args(4*i-3:4*i) = momvec(0:,i)
6245 args(4*(n-1)+1:4*(n-1)+binomtable(2,n)) = mominv
6246 args(4*(n-1)+binomtable(2,n)+1:4*(n-1)+binomtable(2,n)+n) = masses2(0:)
6247 call setmasterfname_cll(
'TNten_cll')
6248 call setmastern_cll(n)
6249 call setmasterr_cll(rmax)
6250 call setmasterargs_cll(4*(n-1)+binomtable(2,n)+n,args)
6257 if (
mode_cll.gt.1)
call tn_dd_dummy(n,rmax)
6273 do i=rts(r-1)+1,rts(r)
6274 norm_coli = max(norm_coli,abs(tn(i)))
6275 norm_dd = max(norm_dd,abs(tn2(i)))
6277 if (norm_coli.eq.0d0)
then
6278 norm_coli = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6279 maxval(abs(masses2(0:n-1))))
6280 if(norm_coli.ne.0d0)
then
6281 norm_coli=1d0/norm_coli**(n-2-real(r)/2)
6283 norm_coli=1d0/
muir2_cll**(n-2-real(r)/2)
6286 if (norm_dd.eq.0d0)
then
6287 norm_dd = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6288 maxval(abs(masses2(0:n-1))))
6289 if(norm_dd.ne.0d0)
then
6290 norm_dd=1d0/norm_dd**(n-2-real(r)/2)
6295 norm(r) = min(norm_coli,norm_dd)
6298 call checktensorslist_cll(tn,tn2,momvec,mominv,masses2,norm,n,rmax,tndiff)
6300 if (tnerr_aux(rmax).lt.tnerr_aux2(rmax))
then
6301 if (
present(tnerr)) tnerr = max(tnerr_aux,tndiff*norm)
6303 tnacc(r) = max(tnerr_aux(r)/norm(r),tndiff(r))
6309 if (
present(tnerr)) tnerr = max(tnerr_aux2,tndiff*norm)
6311 tnacc(r) = max(tnerr_aux2(r)/norm(r),tndiff(r))
6318 if (
present(tnerr)) tnerr = tnerr_aux
6322 do i=rts(r-1)+1,rts(r)
6323 norm(r) = max(norm(r),abs(tn(i)))
6325 if (norm(r).eq.0d0)
then
6326 norm(r) = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6327 maxval(abs(masses2(0:n-1))))
6328 if(norm(r).ne.0d0)
then
6329 norm(r)=1d0/norm(r)**(n-2-real(r)/2)
6336 tnacc(r) = tnerr_aux(r)/norm(r)
6347 call tn_cll(cn,cnuv,mominv,masses2,n,rmax,tnerr2=cnerr,id_in=0)
6351 call tn_cll(cn,cnuv,mominv,masses2,n,rmax,tnerr2=cnerr,id_in=0)
6359 do i=rts(r-1)+1,rts(r)
6360 norm_coli = max(norm_coli,abs(tn(i)))
6361 norm_dd = max(norm_dd,abs(tn2(i)))
6363 if (norm_coli.eq.0d0)
then
6364 norm_coli = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6365 maxval(abs(masses2(0:n-1))))
6366 if(norm_coli.ne.0d0)
then
6367 norm_coli=1d0/norm_coli**(n-2-real(r)/2)
6369 norm_coli=1d0/
muir2_cll**(n-2-real(r)/2)
6372 if (norm_dd.eq.0d0)
then
6373 norm_dd = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6374 maxval(abs(masses2(0:n-1))))
6375 if(norm_dd.ne.0d0)
then
6376 norm_dd=1d0/norm_dd**(n-2-real(r)/2)
6381 norm(r) = min(norm_coli,norm_dd)
6384 call checktensorslist_cll(tn,tn2,momvec,mominv,masses2,norm,n,rmax,tndiff)
6386 if (tnerr_aux(rmax).lt.tnerr_aux2(rmax))
then
6387 if (
present(tnerr)) tnerr = max(tnerr_aux,tndiff*norm)
6389 tnacc(r) = max(tnerr_aux(r)/norm(r),tndiff(r))
6395 if (
present(tnerr)) tnerr = max(tnerr_aux2,tndiff*norm)
6397 tnacc(r) = max(tnerr_aux2(r)/norm(r),tndiff(r))
6403 call tn_cll(cn,cnuv,mominv,masses2,n,rmax,tnerr2=cnerr,id_in=0)
6406 if (
present(tnerr)) tnerr = tnerr_aux
6410 do i=rts(r-1)+1,rts(r)
6411 norm(r) = max(norm(r),abs(tn(i)))
6413 if (norm(r).eq.0d0)
then
6414 norm(r) = max(maxval(abs(mominv(1:binomtable(2,n)))), &
6415 maxval(abs(masses2(0:n-1))))
6416 if(norm(r).ne.0d0)
then
6417 norm(r)=1d0/norm(r)**(n-2-real(r)/2)
6424 tnacc(r) = tnerr_aux(r)/norm(r)
6444 write(
ncpout_cll,*)
' Further output of Critical Points for TNten_cll suppressed for N =',n
6450 write(
ncpout2_cll,*)
' Further output of Critical Points for TNten_cll suppressed for N =',n
6471 integer,
intent(in) :: rmax,N
6472 double complex,
intent(in) :: masses2(0:0)
6473 double complex,
intent(out) :: TA(0:rmax,0:rmax,0:rmax,0:rmax)
6474 double complex,
intent(out) :: TAuv(0:rmax,0:rmax,0:rmax,0:rmax)
6475 double precision,
intent(out),
optional :: TAerr(0:rmax)
6476 double complex :: TA2(0:rmax,0:rmax,0:rmax,0:rmax), TAuv2(0:rmax,0:rmax,0:rmax,0:rmax)
6477 double complex :: CA(0:rmax/2), CAuv(0:rmax/2)
6478 double precision :: CAerr(0:rmax),TAerr_aux(0:rmax),TAerr_aux2(0:rmax)
6479 double complex :: args(1)
6480 double precision :: TAdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TAacc(0:rmax)
6481 integer :: r,n0,n1,n2,n3
6486 call errout_cll(
'TNten_cll',
'subroutine called with inconsistent arguments',eflag)
6490 call errout_cll(
'TNten_cll',
'argument N larger than Nmax_cll',eflag,.true.)
6493 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= ',n
6499 call errout_cll(
'TNten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
6502 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
6507 args(1) = masses2(0)
6508 call setmasterfname_cll(
'TNten_cll')
6509 call setmastern_cll(1)
6510 call setmasterr_cll(rmax)
6511 call setmasterargs_cll(1,args)
6519 call tn_cll(ca,cauv,masses2(0:0),1,rmax,caerr,0)
6520 call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
6525 call tn_cll(ca,cauv,masses2(0:0),1,rmax,caerr,0)
6526 call calctensora(ta2,tauv2,taerr_aux2,ca,cauv,caerr,rmax)
6537 norm_coli = max(norm_coli,abs(ta(n0,n1,n2,n3)))
6538 norm_dd = max(norm_dd,abs(ta2(n0,n1,n2,n3)))
6542 if (norm_coli.eq.0d0)
then
6543 norm_coli = abs(masses2(0))
6544 if(norm_coli.ne.0d0)
then
6545 norm_coli=norm_coli**(1+real(r)/2)
6550 if (norm_dd.eq.0d0)
then
6551 norm_dd = abs(masses2(0))
6552 if(norm_dd.ne.0d0)
then
6553 norm_dd=norm_dd**(1+real(r)/2)
6558 norm(r) = min(norm_coli,norm_dd)
6561 call checktena_cll(ta,ta2,masses2,norm,rmax,tadiff)
6564 if (taerr_aux(rmax).lt.taerr_aux2(rmax))
then
6565 if (
present(taerr)) taerr = max(taerr_aux,tadiff*norm)
6567 taacc(r) = max(taerr_aux(r)/norm(r),tadiff(r))
6573 if (
present(taerr)) taerr = max(taerr_aux2,tadiff*norm)
6575 taacc(r) = max(taerr_aux2(r)/norm(r),tadiff(r))
6582 call tn_cll(ca,cauv,masses2(0:0),1,rmax,caerr,0)
6583 call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
6584 if (
present(taerr)) taerr = taerr_aux
6591 norm(r) = max(norm(r),abs(ta(n0,n1,n2,n3)))
6595 if (norm(r).eq.0d0)
then
6596 norm(r) = abs(masses2(0))
6597 if(norm(r).ne.0d0)
then
6598 norm(r)=norm(r)**(1+real(r)/2)
6605 taacc(r) = taerr_aux(r)/norm(r)
6623 write(
ncpout_cll,*)
' Further output of Critical Points for TNten_cll suppressed for N =',1
6629 write(
ncpout2_cll,*)
' Further output of Critical Points for TNten_cll suppressed for N =',1
6650 integer,
intent(in) :: rmax,N
6651 double complex,
intent(in) :: masses2(0:0)
6652 double complex,
intent(out) :: TA(:),TAuv(:)
6653 double precision,
intent(out),
optional :: TAerr(0:rmax)
6659 call errout_cll(
'TNten_cll',
'subroutine called with inconsistent arguments',eflag)
6663 call errout_cll(
'TNten_cll',
'argument N larger than Nmax_cll',eflag,.true.)
6666 write(
nerrout_cll,*)
'Reinitialize COLLIER with Nmax_cll >= ',n
6672 call errout_cll(
'TNten_cll',
'argument rmax larger than rmax_cll',eflag,.true.)
6675 write(
nerrout_cll,*)
'Reinitialize COLLIER with rmax_cll >= ',rmax
6687 integer,
intent(in) :: rmax,N
6688 double complex,
intent(in) :: masses2(0:0)
6689 double complex,
intent(out) :: TA(RtS(rmax)),TAuv(RtS(rmax))
6690 double precision,
intent(out),
optional :: TAerr(0:rmax)
6691 double complex :: TA2(RtS(rmax)),TAuv2(RtS(rmax))
6692 double complex :: CA(0:rmax/2), CAuv(0:rmax/2)
6693 double precision :: CAerr(0:rmax), TAerr_aux(0:rmax), TAerr_aux2(0:rmax)
6694 double complex :: args(1)
6695 double precision :: TAdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TAacc(0:rmax)
6699 args(1) = masses2(0)
6700 call setmasterfname_cll(
'TNten_cll')
6701 call setmastern_cll(1)
6702 call setmasterr_cll(rmax)
6703 call setmasterargs_cll(1,args)
6711 call tn_cll(ca,cauv,masses2(0:0),1,rmax,caerr,0)
6717 call tn_cll(ca,cauv,masses2(0:0),1,rmax,caerr,0)
6725 do i=rts(r-1)+1,rts(r)
6726 norm_coli = max(norm_coli,abs(ta(i)))
6727 norm_dd = max(norm_dd,abs(ta2(i)))
6729 if (norm_coli.eq.0d0)
then
6730 norm_coli = abs(masses2(0))
6731 if(norm_coli.ne.0d0)
then
6732 norm_coli=norm_coli**(1+real(r)/2)
6737 if (norm_dd.eq.0d0)
then
6738 norm_dd = abs(masses2(0))
6739 if(norm_dd.ne.0d0)
then
6740 norm_dd=norm_dd**(1+real(r)/2)
6745 norm(r) = min(norm_coli,norm_dd)
6748 call checktenalist_cll(ta,ta2,masses2,norm,rmax,tadiff)
6750 if (taerr_aux(rmax).lt.taerr_aux2(rmax))
then
6751 if (
present(taerr)) taerr = max(taerr_aux,tadiff*norm)
6753 taacc(r) = max(taerr_aux(r)/norm(r),tadiff(r))
6759 if (
present(taerr)) taerr = max(taerr_aux2,tadiff*norm)
6761 taacc(r) = max(taerr_aux2(r)/norm(r),tadiff(r))
6768 call tn_cll(ca,cauv,masses2(0:0),1,rmax,caerr,0)
6770 if (
present(taerr)) taerr = taerr_aux
6773 do i=rts(r-1)+1,rts(r)
6774 norm(r) = max(norm(r),abs(ta(i)))
6776 if (norm(r).eq.0d0)
then
6777 norm(r) = abs(masses2(0))
6778 if(norm(r).ne.0d0)
then
6779 norm(r)=norm(r)**(1+real(r)/2)
6786 taacc(r) = taerr_aux(r)/norm(r)
6804 write(
ncpout_cll,*)
' Further output of Critical Points for TNten_cll suppressed for N =',1
6810 write(
ncpout2_cll,*)
' Further output of Critical Points for TNten_cll suppressed for N =',1