fortran66のブログ

fortran について書きます。

Fortran95

コンデンサの電位を計算

パリティ Vol.06 No.03 (1991) 62. のフォートラン入門より、平行平板コンデンサの作る二次元電場の電位を、ラプラス方程式のヤコビによる解法で解きます。forallを用い mask 配列を使ってコンデンサの電極は計算を飛ばすことにします。forall は並列代入操…

Getting started in CM Fortran のサンプルプログラム

http://www.sthmuseum.org/downloads/CM5/GettingStartedinCMFortran.pdf 42ページ Primes:Second CM Fortran Versionこれは Fortran95 の文法にかなっているので無修正で動きます。今のコンピュータだとシリアル実行でも一瞬w 実行結果 長いので見切れ画像…

Fortranに於けるfilterとmap

Fortranは配列がいわゆる first class object になっており、配列の扱いに長けています。Fortran90 以降、ほとんどの組み込み関数は elemental 属性を持っており、定義上スカラーを引数として取る関数に配列を渡すと、結果を配列として返します。これは、LIS…

partition function p(n)

整数の可能な分割数 p(n) は漸化式で求められます。p(n)はnマスのヤング図(フェラーズ盤)の可能な数に対応しています。アンドリュース&エリクソンの『整数の分割』という本に漸化式が導出されています(第五章四節)。結果だけ書くと、 これより (p(0)=1…

LU分解 Doolittle 法

基本的にガウス消去法と同じ方式になっています。 実行結果 LU分解では精度がやや悪くなるようです。 Eliza’s father=Alfred P.DoolittleStation master=AlfeeYoung Freddy=Sherlock Holmes ソース・プログラム 簡単に書けるのがうれしい。ほとんど実質3〜…

オンライン Fortran 実行環境

sourcelair というオンライン実行環境が開発中のようで、Fortranも使えるようです。登録すると、ファイルの保存などもできます。今のところ設定ミスか Module が使えないようです。H23-11-08 メールしてみたところ、今のところ全言語で Module は使えないそ…

挿入ソート改良

ここまで来ると更に簡単に。尻からではなく、頭から sort してゆく。 module m_isort2 implicit none contains subroutine isort3y( x ) real, intent(in out) :: x(:) integer :: j, k do k = 2, size(x) do j = 1, k - 1 if ( x(k) < x(j) ) exit end do x…

挿入ソート

少し改良。配列のサイクリックシフトで。 module m_isort2 implicit none contains subroutine isort2y( x ) real, intent(in out) :: x(:) integer :: j, k, n n = size(x) if (n <= 1) return do k = n - 1, 1, -1 do j = k + 1, n if ( x(k) < x(j) ) exi…

Modern Fortran Explained Chap.8 Exercises 3, 4

program exercise3 implicit none ! Variables real, target :: a(5:10) real, pointer :: p1(:), p2(:) ! Body of test5 p1 => a p2 => a(:) print *, associated(p1, a), lbound(p1) print *, associated(p2, a), lbound(p2) print *, associated(p1, p2),…

メモ帳

program test4 implicit none ! Variables real, allocatable :: x(:, :) ! Body of test4 allocate( x(100, 100) ) x = 1.0 call desub(x) print *, allocated(x) call alsub(x) print *, allocated(x) print *, x stop contains subroutine desub(x) real,…

Fortran90/95プログラミング 改訂新版

冨田Fortran本の改訂新版を本屋で見かけました。Fortran95や2003も考慮に入れたようです。表紙は前のより下品に安っぽくなってました。中身はまだ見てません!取り急ぎ!

QuickSort

Intelのコンパイラでの文法厳密チェックオプションで引っかかるので調べたところ、『Fortran95/2003 Explained』6-11(p.116)に、確かにそのように書いてありました。しかし、根拠はよく分かりません。 これを満たすように少し書き換えてみました。『Fortran …