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_rr(x,coeffs)REAL(SP),INTENT(IN)::xREAL(SP),DIMENSION(:),INTENT(IN)::coeffsREAL(SP)::poly_rrREAL(SP)::powREAL(SP),DIMENSION(:),ALLOCATABLE::vecINTEGER(I4B)::i,n,nnn=size(coeffs)if(n<=0)thenpoly_rr=0.0_spelse if(n<NPAR_POLY)thenpoly_rr=coeffs(n)do i=n-1,1,-1poly_rr=x*poly_rr+coeffs(i)end do else allocate(vec(n+1))pow=xvec(1:n)=coeffsdovec(n+1)=0.0_spnn=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_rr=vec(1)deallocate(vec)end if END FUNCTION poly_rr