포트란과 관련하여 흥미로운 문제가 있습니다. 즉, 774840977에 3을 곱해서 1을 더하려고 할 때 일관된 산술 실수를하는 것처럼 보입니다. -1970444364를 인쇄합니다. 이는 분명히 정답이 아닙니다. 이제는 다른 곳에서도 이와 똑같은 실수를 저지르고 있다고 생각합니다. 그러나 일어날 때 이것을 찾아내는 것은 어렵습니다. 아래의 do 루프는 일반적으로 1-10,000,000까지 실행되지만이 숫자가 팝업되는 값은 n = 786431이므로 사용자의 편의를 위해 해당 값을 바로 축소했습니다. 나는 그것이 포트란에서 정수 제한이나 이와 같은 문제라고 생각하지만, 포트란에서 이것을 해결할 방법이 있는지 또는 다른 것을 시도 할 필요가 있는지 알고 싶습니다. 내가 여기서하고있는 일의 맥락에서, 나는 collatz 사슬을 통해 달리고있다. 호기심이 있다면 그것들을 볼 수있다. [스냅 샷 산술의 단계] [정수 오버 플로우의 놀라운 세계에 포트란 산술 오류
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