0

代码部分如下所示;

DO i = 1 , no2 + 1
   IF ( Isign.EQ.1 ) THEN
      Ans(i) = fft(i)*Ans(i)/no2
   ELSEIF ( Isign.EQ.-1 ) THEN
      IF ( ABS(Ans(i)) .EQ. 0.0 )
&           PAUSE ' deconvolving at responce zero in convlv'
      Ans(i) =  fft(i)/Ans(i)/no2
   ELSE

编译器给了我这个错误;如果(ABS(i)).EQ。0.0) ^ 在 (^) 和 (^) 处的表达式之间键入不一致

IF ( ABS(i)).EQ. 0.0)
            ^
invalid form for IF statement at (^)

有人能告诉我如何正确编写这个“内在函数”行来解决这个错误吗?我是编程新手,任何帮助都会很棒!如果这很重要,我正在使用 GNU G77 编译器吗?谢谢

4

2 回答 2

1

在第二个错误语句中,我看到的右括号比左括号多

IF ( ABS(i)).EQ. 0.0)

另外,Ans(i) 和 0.0 的类型和种类是什么?我记得 fortran 对类型转换可能有点奇怪。

于 2011-02-07T16:47:08.110 回答
0

请声明。他们创造了一个与众不同的世界!

将某物与十进制零进行比较是一种非常糟糕的做法。将其与容许误差值(应该足够小)进行比较几乎总是更好。

如上所述,尝试编写一个产生相同错误的小型可编译示例并将其发布。

于 2011-02-07T19:28:51.760 回答