Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
pure subroutine boysf(n,tt,ft)!!$omp declare simd(boysf) uniform(n) linear(ref(tt))implicit nonereal(kind=8),intent(in)::ttinteger,intent(in)::n!real(kind=8), intent(out) :: ftout(0:)real(kind=8)::ftf!real(kind=8) :: ft(0:16)real(kind=8),intent(out)::ft(0:*)real(kind=8)::tv,tx,fx,et,t2integer::m,ip,ix,ifxgrd,iftgrdif(tt>tmax)thenftf=halfsqrtpi/sqrt(tt)t2=tt*2do m=0,nft(m)=tlgm(m)*ftfftf=ftf/t2end do elseifxgrd=igrid(n)iftgrd=irgrd(n)tv=tt*rfinc(ifxgrd)tx=tt*rxincip=nint(tv)ix=nint(tx)fx=0et=0do m=nord,0,-1fx=(fx*tv+fgrid(m,ip,ifxgrd))et=(et*tx+xgrid(m,ix))end doft(iftgrd)=fxt2=tt+ttdo m=iftgrd,1,-1ft(m-1)=(t2*ft(m)+et)*rmr(m)end do end if!ftout(0:n) = ft(0:n)end subroutine boysf