我遇到了这个用于编写单位矩阵的F77程序:
DO 10 I=1, M
DO 10 J=1, N
IF(I .EQ. J) THEN
UNITM(I,J)=1.0D0
ELSE
UNITM(I,J)=0.0D0
END IF
CONTINUE
上述程序中10和.0D0的目的是什么?
答案 0 :(得分:2)
如评论中所述,10是一个行标签,它是do循环的范围。现在我们将有一个enddo声明。你错过了上面的10个。 continue行应如下所示:
10 CONTINUE
使用现代Fortran,我们将有2个enddo语句。对于行标签,两个do循环都可以在同一行上结束。
当Fortran编译文字数字时,Fortran推测数字类型。 A' 1'被编译为整数。 A' 1.0'被编译为单个精度实数。 Fortran认可科学记谱法,因此' 1.0e3'是1x10 ^ 3但是单精度!
用d代替e,Fortran会将文字编号编译为双精度!不需要有指数吗?为指数放一个0。因此1.0D0将1编译为双精度实数。