Fortran のオプションの引数は と のサブルーチンで使用できますintent(in)
がintent(inout)
、関数のオプションの引数は でしか機能しintent(in)
ませんよね? intent(inout)
次のコードでセグメンテーション違反が発生します。
real function foo(x, tol)
real, intent(in) :: x
real, optional, intent(inout) :: tol
if( .not. present(tol) ) tol = 1e-6
!...
end function foo