Фортан позволяет элементарным подпрограммам иметь аргументы намерения (inout) и намерение (out), но элементарные функции могут иметь только намерение (in).
Это почему? Это просто стилистическое соглашение или есть что-то общее в вызове функций и вызове подпрограмм?
Другими словами,
Elemental Integer Function FOO(i)
Integer, intent(in) :: i
...
FOO=something
End Function
и
Elemental Subroutine FOO(i, v)
Integer, intent(in) :: i
Integer, intent(out) :: v
...
v=something
End Subroutine
эти реализации FOO одинаково эффективны?