Fortran

Rumpの例題

Rumpの例題 a = 77617, b = 33096; に対して f = (333.75 - a^2) * b^6 + a^2 * (11 * a^2 * b^2 -121 * b^2 -121 * b^4 - 2) + 5.5 * b^8 + a / (2 * b) を計算する. fの正しい結果は f = -0.827396... 一方で,これらをOctaveやFortranで計算してみると..…

-Fortran- 奇数と偶数の和を求める

以下のプログラムは,1から100までの整数のうち,偶数と奇数の和をそれぞれ計算するプログラムです. program loop_odd_even implicit none integer i, sum0, sum1 sum0 = 0 sum1 = 0 do i = 1, 100 if (mod(i, 2) == 0) then sum0 = sum0 + i else if (mod(…

-Fortran- DOループの処理速度

DOループにおいて,ソースコードの書き方によってアクセスに要する時間が異なります. 整数型2次元配列のという"nteger(3000, 90000)"各要素に,行番号(j)と列番号(k)の和を代入する例を用いて,計算処理速度の違いを比較してみます. 以下のプログラム…

-Fortran- 処理時間を計測する cpu_time

処理時刻を知る組み込み関数として,組み込み関数"cpu_time"を用いることができます. "cpu_time"は,Fortran90では一部の処理系のみで使用可能で,Fortran95では標準として組み込まれています. この"cpu_time"を用いて処理作業を挟む2箇所で時間カウンタ(…

-Fortran- 配列を使った内積を計算するプログラム

ファイルから2次元平面内の位置ベクトルu, vの成分(u1, u2), (v1, v2)を読み取り,2つのベクトルの内積を計算するプログラム例を以下に示します. program DP implicit none integer i real(8) u(2), v(2), dotp open(10,file = 'input1.d') read(10,*) (u(…

-Fortran- 入力の書式関数

入力の際に,出力と同様に書式を指定することができます. ただし,書式を指定すると,その通りに入力(キーボード,もしくはファイル)の記述を行わないと正しく読み込みが行われません. 通常は,データを1つ以上のタブやスペースで区切って入力し,プログ…

-Fortran- 出力の書式関数

入出力の際に数値や文字を整形して体裁を整えるには,書式を指定します. 以下に,書式付き出力の例を示すためのプログラム例を示します. PROGRAM format CHARACTER(30):: CHAR1 = 'Fortran is' CHARACTER(20):: CHAR2 = ' FOrmula TRANslation.' WRITE(*,'…

-Fortran- 無限ループ

Fortran 90/95において,キーボード入力した値までの自然数の和を求めるプログラム例を以下に示します. PROGRAM loop_input IMPLICIT NONE INTEGER sum, n, i DO WRITE(*,*) 'Input n (if n <= 0, Stop) : ' READ(*,*) n if (n <= 0) STOP 'end' sum = 0 DO…

-Fortran- if文とstop文

偶数と奇数の和を反復計算によって求めるプログラム例を以下に示します. PROGRAM loop_OE IMPLICIT NONE INTEGER i, sum0, sum1 !integer type sum0 = 0 !zero-clear sum1 = 0 !zero-clear DO i = 1, 100 !repeated operation by DO loop IF (MOD(i, 2) == …

-Fortran- DOループによる反復演算

Fortran 90/95で,1〜100までの和を求めて結果を出力するプログラム例を以下に示します. PROGRAM loop IMPLICIT NONE INTEGER i, sum !integer type sum = 0 !zero-clear DO i = 1, 100 !repeated operation by DO loop sum = sum + i ENDDO WRITE(*,*) 'Su…