Максимальное количество линий продолжения gfortran
Мне нужна небольшая помощь: согласно этому сайту, существует ограничение на максимальное количество линий продолжения.
Поэтому я решил проверить это. Я написал jumboFUNCTION
, где он вычисляет колоссальную алгебраическую формулу, выраженную в операторе, разбитом на 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 ответ:
Почему gfortran не соблюдает правило максимальных линий продолжения?
Это правило не является ограничением, стандарт разрешает компилятору предоставлять больший предел в качестве расширения, стандарт устанавливает минимум для максимального числа строк продолжения. Компилятор может сообщить о превышении стандартного минимального значения, но это не обязательно и может потребовать флаг.