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
function gaussrnd()real(8)::gaussrndreal(8)::fac,v1,v2,rreal(8),save::gsetinteger,save::iset=0if(iset==0)then! Create a new RNr=100.0do while(r>1.0)v1=2.0*grnd()-1.0v2=2.0*grnd()-1.0r=v1*v1+v2*v2end dofac=sqrt(-2.0*log(r)/r)gset=v1*facgaussrnd=v2*faciset=1else! Use the 2nd NR from the previous callgaussrnd=gsetiset=0endif returnend function gaussrnd