Там просто implicit none все стирал
В Фортране есть правило описания переменных "по умолчанию". В общем-то это архаизм, сохраненный для обратной совместимости,
implicit none его отключает.
Когда этого отключения нет, при обнаружении вызова
f(x) тип возвращаемого значения функции выбирается по умолчанию (и это
real(4)). В данном конкретном случае это срабатывает, но если Вам понадобится написать функцию, возвращающую что-либо другое (целое, строку, вещественное число с другой точностью, массив и т.д.), то спасти дело таким образом не получится.
Поэтому запомните правило: ставить
implicit none всегда, а затем корректно обрабатывать вылезающие ошибки. Иначе рано или поздно нарветесь на проблемы.