我写了一个简单的fortran程序来计算高斯常数:
program main
implicit none
integer :: i, nit
double precision :: u0, v0, ut, vt
nit=60
u0=1.d0
v0=sqrt(2.d0)
print *,1.d0/u0,1.d0/v0
do i=1,nit
ut=sqrt(u0*v0)
vt=(u0+v0)/2.d0
u0=ut
v0=vt
print *,1.d0/u0,1.d0/v0
enddo
end program main
4次迭代后,结果为0.83462684167407308。无论如何使用算术几何平均法得到更好的结果?人们如何计算pi,Euler常数等数字的多个数字?每个无理数都有特定的算法吗?
答案 0 :(得分:3)
如果您的目标是在程序中插入常量值,最简单的解决方案是在Web或书中查找值。请务必在数值中添加类型规范,其他Fortran会将其视为单精度的默认值。可以将pi写为pi_quad = 3.14159265358979323846264338327950288_real128
- 显示在常量上使用类型说明符。
如果要进行高精度计算,可以在编译器中使用一些高精度类型。许多编译器现在具有四倍的精度。如果他们具有ISO_FORTRAN_ENV模块的Fortran 2008版本,则可以通过类型real128
请求此版本。
任意精度(用户指定的位数,到非常高的位数)不在语言范围内,可在库中使用,例如MPFUN90,http://crd-legacy.lbl.gov/~dhbailey/mpdist/
是的,不同的常量有各种算法。这是一个非常大的话题。
答案 1 :(得分:-3)
pi的解决方案:
pi = 4.0d0 * datan(1.0d0)