最大数量的gfortran延续线

时间:2017-07-21 00:20:19

标签: fortran gfortran limits

我需要一些帮助:根据this site,延续线的最大数量有限制。

所以我决定测试一下。我写了一个巨型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.4MB test.o文件,没有任何错误或警告。我跑了,它返回了正确的结果。

为什么没有gfortran观察最大延续线规则?

1 个答案:

答案 0 :(得分:5)

为什么gfortran不遵守最大延续线规则?

此规则不是约束,标准允许编译器提供更大的限制作为扩展,标准设置最大连续行数的最小值。编译器可能会报告超出标准最小值,但它不是必需的,可能需要一个标志。