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.
FUNCTION poly_dd(x,coeffs)REAL(DP),INTENT(IN)::xREAL(DP),DIMENSION(:),INTENT(IN)::coeffsREAL(DP)::poly_ddREAL(DP)::powREAL(DP),DIMENSION(:),ALLOCATABLE::vecINTEGER(I4B)::i,n,nnn=size(coeffs)if(n<=0)thenpoly_dd=0.0_dpelse if(n<NPAR_POLY)thenpoly_dd=coeffs(n)do i=n-1,1,-1poly_dd=x*poly_dd+coeffs(i)end do else allocate(vec(n+1))pow=xvec(1:n)=coeffsdovec(n+1)=0.0_dpnn=ishft(n+1,-1)vec(1:nn)=vec(1:n:2)+pow*vec(2:n+1:2)if(nn==1)exitpow=pow*pown=nnend dopoly_dd=vec(1)deallocate(vec)end if END FUNCTION poly_dd