我需要一些帮助:根据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
观察最大延续线规则?
答案 0 :(得分:5)
为什么gfortran不遵守最大延续线规则?
此规则不是约束,标准允许编译器提供更大的限制作为扩展,标准设置最大连续行数的最小值。编译器可能会报告超出标准最小值,但它不是必需的,可能需要一个标志。