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.
elemental function digit_I8(n)result(digit)!< Compute the number of digits in decimal base of the input integer.!<!<```fortran!< use penf!< print FI4P, digit(100_I8P)!<```!=> 3 <<<integer(I8P),intent(in)::n!< Input integer.character(DI8P)::str!< Returned string containing input number plus padding zeros.integer(I4P)::digit!< Number of digits.write(str,FI8P)abs(n)! Casting of n to string.digit=len_trim(adjustl(str))! Calculating the digits number of n.endfunction digit_I8