Максимальное количество линий продолжения gfortran


Мне нужна небольшая помощь: согласно этому сайту, существует ограничение на максимальное количество линий продолжения.

Поэтому я решил проверить это. Я написал jumbo FUNCTION, где он вычисляет колоссальную алгебраическую формулу, выраженную в операторе, разбитом на 17 146 линий продолжения.
!test.f90  1.6 MB file
DOUBLE COMPLEX FUNCTION myfunction(a, b)

  DOUBLE COMPLEX, INTENT(IN) :: a
  DOUBLE COMPLEX, INTENT(IN) :: b

  myfunction = gd0/16.d0)*a*b*((a+b)**2)*((32.d0*DCONJG(f(4)))+(12&
&8.d0*DCONJG(f(11)))+(160.d0*DCONJG(f(24)))+(64.d0*DCONJG(f(46)))+(32.d0*DCONJG(f(3)))+(256.d0*DCON&
&JG(f(10)))+(480.d0*DCONJG(f(23)))+(256.d0*DCONJG(f(45)))+(32.d0*DCONJG(g(9)))+(128.d0*DCONJG(f(&
&9)))+(480.d0*DCONJG(f(22)))+(384.d0*DCONJG(f(44)))+(96.d0*DCONJG(g(21)))+(160.d0*DCONJG(f(21)))+(2&
&56.d0*DCONJG(f(43)))+(64.d0*DCONJG(g(42)))+(64.d0*DCONJG(f(42)))+(64.d0*DCONJG(f(8)))+(192.d0*DCON&
& (64.d0*DCONJG(g(42)) ! and so on and so forth...

END FUNCTION

Я скомпилировал эту мерзость с помощью gfortran -c test.f90, и через 5 минут она вернула файл размером 11,4 МБ test.o без каких-либо ошибок или предупреждений. Я прогнал его, и он вернул правильные результаты.

Почему разве gfortran не соблюдает правило максимальных линий продолжения?

1 3

1 ответ:

Почему gfortran не соблюдает правило максимальных линий продолжения?

Это правило не является ограничением, стандарт разрешает компилятору предоставлять больший предел в качестве расширения, стандарт устанавливает минимум для максимального числа строк продолжения. Компилятор может сообщить о превышении стандартного минимального значения, но это не обязательно и может потребовать флаг.