Fortran returns NaN, 计算 pi

Fortran returns NaN, calculate pi

我用不同的语言创建了几个程序来使用梯形和 () 计算圆周率,现在我正在尝试用 Fortran 编写一个。我对这门语言一无所知,我写了这个:

program cpi
double precision n, val, pi
integer i, num
n = 1000
num = 1000
val = 0
do i = 1, num
  val = val + ((1 - (i ** 2)) ** 0.5)
end do
pi = (2 / n)*(1 + (2 * val))
print *, pi
end program cpi

它 returns NaN 当我用 gfortran 和 运行 编译它时。这是什么意思,我怎样才能改变它以使其工作?我想与之比较的 C 程序是这样的:

#include <stdio.h>
#include <math.h>
double n = 1000, a, h = 0, t, val, pi;
int main(void) 
{
    for(a = 1; a < n; ++a) {
        t = a/n;
        val = pow(1.0-(t*t), 0.5);
        h+=val;
    }
    h = h*2.0;
    pi = (2.0/n)*(1.0+h);
    printf("%.20f\n", pi);
    return 0;
}

任何有关修复 Fortran 程序的意见都将非常有用。

感谢@chux,程序现在可以运行了:

program cpi
double precision n, val, pi
integer i, num
n = 1000
num = 1000
val = 0
do i = 1, num
  val = val + ((1 - ((i / n) ** 2)) ** 0.5)
end do
pi = (2 / n)*(1 + (2 * val))
print *, pi
end program cpi