0
私は、Fortranに新たなんだので、私は次のコードで愚かな何かをやっている場合は、私を許し:Fortranプログラムが間違った出力をしていますか?
program test2
implicit none
! Variable declaration
integer :: i, n
real :: s
! Initialization
n = 1e+9
s = 0.0
do i=1,n
s = s + real(i)
s = s + sqrt(s)
end do
print *, s
end program test2
この小さなプログラムの出力は:1.8014399E+16
と私はそれが1.0000000010000024E+18
を与えることを期待しています。私はWindows 10マシンでGNU Fortranコンパイラを使用します。
私は通常、多くの行列を含む長いシミュレーションを実行します。モダン・フォートランは、超高速での行列演算を強力にサポートしていることを私は読んでいますが、モトローラの乗算、連結、再整形、インデックス作成、FFT、乱数生成、MAX、平均、べき乗、複素数などは私が使用する典型的な演算です。 – AboAmmar
'real :: s'を 'double precision :: s'に変更すると、あなたが期待する答えが得られますか? – francescalus
うわー、そうです。しかし、私は 'kind = 16'、' real * 16'など多くのことを試しましたが、すべて動作しませんでした。 – AboAmmar