program ex01 c c This program calculate the sum c sum = 1 + x + x^2 + x^3 + ... + x^n c real*8 x, sum ! 変数の型宣言 (倍精度実数) c write(*,*) 'Hello !' write(*,*) 'n, x = ?' read(*,*) n, x write(*,*) 'n, x = ', n, x c sum = 0.0d0 if(abs(x).ge.1.0d0) then ! x の絶対値が 1 よりも大きい場合は、 ! k = 0 から普通に足せばよい。 do k = 0, n sum = sum + x**k end do else ! x の絶対値が 1 よりも小さい場合には、 ! k = n の場合が最も小さい数なので、逆順で足す。 do k = n, 0, -1 ! k=n から 1 ずつ減らして行く sum = sum + x**k end do endif c... c より一般的な DO ループの形式 c DO K = 初期値, 終り値 (, きざみ) c (演算の内容) c END DO c... write(*,*) 'sum = ',sum if(x.eq.1.0d0) then write(*,*) 'Exact = ',n+1 else write(*,*) 'Exact = ',(1.0d0-x**(n+1))/(1.0d0-x) endif c... write(*,*) 'Good Bye !' stop end