Функции в фортране - PullRequest
       22

Функции в фортране

0 голосов
/ 08 июня 2019

Я совершенно новичок в программировании на фортране ..... Я пытался создать функцию, которая вызывается в другой программе ....

Итак, у меня есть моя основная программа, которая называется Spectrum.f:

      program Spectrum

       external I_Analytic
       double precision I_Analytic

       write(*,*) I_Analytic(5.D0)

      end

Функция I_Analytic определена во втором документе, который называется Analytic.f:

       DOUBLE PRECISION function I_Analytic(w1)

        I_Analytic = w1**2

       end function I_Analytic

После компиляции этой программы с gfortran -o Spectrum Analytic.f Spectrum.f

Я получаю только 0,0000000000 вместо 25 .... Что не так с моей программой?

1 Ответ

1 голос
/ 08 июня 2019

Ваша функция не объявляет тип w1, поэтому по правилам неявной типизации это real, а не double precision. Как я предлагал в комментарии, всегда используйте IMPLICIT NONE, и желательно также использовать модули, чтобы получить ошибку, если интерфейс не соответствует.

...