小编Eri*_*ney的帖子

Fortran算术错误

我对fortran有一个有趣的问题.也就是说,当它试图将774840977乘以3并添加一个时,似乎会产生一致的算术错误,它打印出-1970444364,这显然不是正确的答案.现在,我认为它在其他几个地方犯了同样的错误,但是当它发生时很难找到它.下面的do循环通常会运行1-10,000,000,但此数字弹出的值是n = 786431,所以为了方便起见,我缩小了该值的边界.我认为这是一个整数限制的问题或类似于fortran的问题,但我想知道是否有任何方法可以在fortran中解决这个问题,或者我是否需要在其他方面尝试这个问题.对于我在这里所做的事情的背景,我正在通过collat​​z链,你可以看看那些好奇的.[算术步骤快照] [在此输入图像描述

      program Collatzthings
  implicit integer*4 (i-o)
  implicit doubleprecision*8 (a-h)
  integer*4 n0

  open(1,file='datac',status='unknown')
  e=0
  do 100 n0=786431,786431
     n=n0
     i=0
     j=0
    do while (n.GT.1)
      if (mod(n,2).EQ.0) then
        n=.5*n
        i=i+1
        j=(j+1)
      elseif (mod(n,2).EQ.1) then
        n=((3*n)+1)
        i=i+1
      endif
      write(6,*)n
    end do
    b=i
    c=j
    a=c/b
pause
    write(1,*)n0,i,a
100 continue
close(1)
stop
1000 format(7(g12.4,1x))
end
Run Code Online (Sandbox Code Playgroud)

math fortran loops integer-arithmetic

1
推荐指数
1
解决办法
252
查看次数

标签 统计

fortran ×1

integer-arithmetic ×1

loops ×1

math ×1