C 入力を求めるメッセージを標準出力に書き出す。 WRITE(6,*) 'y = exp(x):' WRITE(6,*) 'x?' C READ文で入力値を読みこむ。 READ(5,*) X C 入力値Xの絶対値が10より大きい場合は、 C 正しく計算できない可能性があるので何もしないで終了する。 C 絶対値は関数ABSによって求められる。 IF (ABS(X).GT.10.) STOP C 指数関数の値を、テイラー級数として計算する。 C 求める級数をYとする。 C はじめにYにゼロを代入する。 Y = 0. C 指数をNとする。 C 指数がゼロの項から計算するので、Nにゼロを代入する。 N = 0 C ここからループが始まる。 C ループの中では各項の値を計算し、変数Yに加えていく。 11 CONTINUE C Nの階乗の値を求める。 C オーバーフローを防ぐため、 C 整数ではなく実数で計算する。 C はじめに変数Cを1.0にする。 C = 1. C 変数Cに1,2,...,Nを順にかけていく。 DO 21 M=1,N C = C * REAL(M) 21 CONTINUE C 各項の値を求める。 C XのN乗をNの階乗で割った値を求め、変数Y1に代入する。 Y1 = X**N / C C 変数Y1の値の絶対値が10^-6以下になったら、 C 行番号19に飛んで計算を終了する。 IF (ABS(Y1).LE.1.0E-6) GO TO 19 C 変数Yに変数Y1の値を加える。 Y = Y + Y1 C 指数Nの値をひとつ進める。 N = N + 1 C 行番号11に戻って処理を反復する。 C 行番号11とこの行の間の処理を、 C 終了する条件を満たすまで反復することになる。 GO TO 11 C 終了する条件を満たすと、この行に飛んでくる。 19 CONTINUE C 結果を標準出力に書き出す。 WRITE(6,*) 'y =',Y STOP END