Błąd segmentacji z opcjonalnymi argumentami w funkcjach Fortrana

Mogę używać Fortran opcjonalnych argumenników z podprogramamiintent(in) iintent(inout), ale z funkcjami opcjonalne argumenty działają tylko zintent(in), dobrze? Zintent(inout) Dostaję błędy segmentacji w następującym kodzie:

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

questionAnswers(1)

yourAnswerToTheQuestion