Fallo de segmentación con argumentos opcionales en las funciones de Fortran

Puedo usar los argumenrs opcionales de Fortran con subrutinas conintent(in) yintent(inout), pero con funciones opcionales los argumentos trabajan solo conintent(in), ¿derecho? Conintent(inout) Obtengo fallos de segmentación en el siguiente código:

real function foo(x, tol) 
    real, intent(in) :: x
    real, optional, intent(inout) :: tol
    if( .not. present(tol) ) tol = 1e-6
    !...
end function foo

Respuestas a la pregunta(1)

Su respuesta a la pregunta