fortran66のブログ

fortran について書きます。

Fortran

欲しいね

FORTRAN, the board game Originally published by Educational Design, Inc., this educational board game helped introduce the Fortran language to players, and enabled Fortran enthusiasts to enjoy a night of good, clean fun. http://www.ibm.com…

Intel Compiler Reimbursement Program

インテルコンパイラーがAMD向けにコンパイラ最適化の性能を落としていた問題での訴訟の賠償請求の申し込みが始まったようです。3つの条件を満たした場合に請求を申し立てると、小切手での支払いが貰えるかもしれないようです。http://www.compilerreimburse…

Intel Fortran License

http://www.cs-software.com/index.html

CDC7600 での FORTRAN 最適化テクニック

スパコンの先祖ともいわれる CDC7600 での FORTRAN 最適化テクニックについての記事がネットにあったのですが、見てみるとすでにバンクコンフリクトの問題とかが書いてあって興味深かったです。注意深くプログラムすると非常に高速だった、と言われていた意…

1956年 IBM704 用 FORTRAN I の例題。

Fortran automatic coding system for the IBM 704 programmers reference manual (1956) [http://www.fh-jena.de/~kleine/history/history.html:title=Historic Documents in Computer Science collected by Karl Kleine] から。Fortran automatic coding s…

国立情報学研究所のCiNii

国立情報学研究所の CiNii データベースで FORTRAN と検索すると結構昔の文献が引っかかって面白い記事も色々出てきます。 登録なしで見ることができる記事も多いです。 規格に関するもの 66. 算法言語 FORTRAN II の報告 FORTRAN IV 言語の概略 F0RTRAN 77 …

メモ帳

-LOG(2)=LOG(1/2)=LOG(1-1/2)=1/1(1/2)+1/2(1/2)^2+1/3(1/2)^3+....確認テスト PROGRAM test IMPLICIT NONE INTEGER :: i, j, k, m, n REAL :: x, y n = 10 PRINT *, 2**n * LOG(2.0) x = 0.0 y = 0.0 DO k = 1, n m = 1 DO i = 1, n - k m = MOD(2 * m, k) …

DIM関数

FortranにはDIM関数という2引数の関数があります。その定義は DIM(x,y)=x-MIN(x,y) です。この関数が何故 DIM という名前なのか、ずっと謎だったのですが、1958年発行の IBM の "Reference Manual FORTRAN II for the IBM 704 Data Processing System" を読…

自己記述プログラム

規格違反のもの。80文字に収まっていますが必殺のホレリス使用w CHARACTER*43 f/43H(18HCHARACTER*43 f/43Ha,15H/;PRINT f,f;END)/;PRINT f,f;END やや分かりやすくしたもの。 CHARACTER*46 f/46H(18HCHARACTER*46 f/46Ha,1H//9HPRINT f,f/3HEND)/ PRINT f,…

IBM 7094 Emulator でFORTRAN II Compilerを動かして1958年のプログラムを走らせる。

Computer History Museumのサイトに、1958年に書かれたFORTRAN IIとおぼしきプログラムと実行結果があります。5*5のHilbert行列の逆行列を求めるものです(Matrix Inversion Order 5)。先日は、Intel Visual Fortran Ver.11.1で実行してみましたが、今回…

Obsolecent features

例外処理には便利なんですが、時代が存在を許さないw 実行結果 ソースコード MODULE m_mod IMPLICIT NONE CONTAINS SUBROUTINE alt(i, *, *) INTEGER, INTENT(IN) :: i SELECT CASE(i) CASE(1) RETURN 1 CASE(2) RETURN 2 CASE DEFAULT RETURN END SELECT E…

DOS窓でLOCATE

いつの間にかDOS窓(コマンドプロンプト)でANSIのESCシーケンスが使えなくなっていたのですね。16ビット互換のDOS窓でしか機能しないようです。BASIC時代のLOCATE命令のようなものが欲しかったので、Win32API呼び出しでやることにしました。 実行例 ソース…

昔の FORTRAN についての情報

英ケンブリッジ大学のサイトに昔の FORTRAN プログラムの移植についての情報があります。 http://www-uxsup.csx.cam.ac.uk/courses/OldFortran/index.html 昔のことを知っているおっさんが書いているようなので機種依存性などの貴重な情報が色々書いてありま…

High Performance Computing の教科書

学部生向けのHPC用の教科書が最近出版されました。ざっと見た感じでは、ベクトル機から分散スカラー型への移行が主たる視点でしょうか。

Compaq Visual Fortran v6.5 to v6.6 Upgrade

本来はこの upgrade は有料 upgrade だったのですが、米国 Custom Solutions 社が無料で upgrade 用のファイルを配布しているようです。 勘違いでしたw 昔の自分のが正しく書いています。http://d.hatena.ne.jp/fortran66/20090215 有料だったのはv6.1からv…

INTRINSIC

INTRINSIC という命令があるのは知らなかったです。普通の状況では何をするわけでもないですが、ベンダー拡張の非標準の INTRINSIC 命令を周知できます。 PROGRAM test IMPLICIT NONE INTRINSIC :: LOC, sizeof ! non-standard intrinsic INTEGER :: i = 100…

POINTER を返す関数

Fortran 95/2003 Explained の5章の例を動くようにしたもの。乱数で正負の数を作り、そのうち正の数だけを選んで、ちょうどの大きさの配列へのポインターを返す関数。 実行結果 ソースプログラム MODULE m_test IMPLICIT NONE CONTAINS !------------------…

単位行列

RESHAPEで作ろうとして失敗していたが・・ それにつけても、宣言時に初期値を与えると自動的に SAVE 属性になるとは知らなかった。(ソースは"Fortran95/2003 Explained" chapter 6。) PROGRAM test IMPLICIT NONE INTEGER :: i, n(10, 10) = 0 FORALL (i = 1…

バビロニアの数表

ブルーバックスの芹沢正三著『素数入門』6-5節に、古代バビロニアの三角関数表が載っているので、それを計算してみます。 数学の表現形式として、古代エジプト文明は測量術から幾何学を、古代メソポタミア文明は天体観測から整数論を好んだようです。古代ギ…

FORTRAN IV でプログラミング

FORTRAN66 のプログラムを書いたことはあまりないんですが、制限がきつくて思いがけないところでしかられます。とりあえず、台形公式とシンプソンの公式でを求めるという典型的例題を解いてみました。IBM の16進浮動小数のためか単精度では意外に精度が出な…

Fortranもまだまだ新刊本が出ているようです。 Fortanには珍しい入門書。 【送料無料】やさしいFORTRAN入門 [ 日向俊二 ]ジャンル: 本・雑誌・コミック > PC・システム開発 > その他ショップ: 楽天ブックス価格: 2,940円楽天で詳細を見る 付属のドキュメント…

ACM Fortran Forum の最新号の記事に面白いものがありました。"Note on array-valued functions" by Arjen Markus http://portal.acm.org/citation.cfm?id=1373277.1373278&coll=portal&dl=ACM&idx=J286&part=newsletter&WantType=Newsletters&title=ACM%20S…

Fortran での C ルーチン呼び出し規約と Win32 での呼び出し規約が異なっているようで、問題が生じる可能性があるようです。Window 表示のミニマル。 Fortran2003 の C との互換命令を用いて、!DECのコンパイラ拡張を使用しない書き方。 参照 http://d.hate…

R・ペンローズ著『皇帝の新しい心』第二章より。万能チューリング機械。入力ファイル turing2.lst からチューリング機械の定義とそれが作用する対象の、二つが書かれている 0,1 の文字列(テープ)を読み込んで実行する。チューリング機械の定義とそれが作…

R・ペンローズ著『皇帝の新しい心』第二章より。自然数を連続した 1 の並びで表すとして、0 で区切られた二つの数の最大公約数をユークリッドの互除法で求める。以下の例では 6 と 8 の最大公約数を求めている。答えは 2。 PROGRAM EUC USE m_turing IMPLIC…

R・ペンローズ著『皇帝の新しい心』第二章より。 自然数を連続した 1 の並びで表すとして、それに1を加えるチューリング機械 UN+1。下の例は 4+1=5 の計算。メインプログラムでは、はじめにテープに4を表す 1 の列を与えて、テープを確認の後、チューリン…

まずは準備。 大きな十進数を二進数の文字列に変換する。十進表記のリスト(1654 桁の数)をファイルから読み込み、まずそれを一桁づつ整数配列に入れる。次にそれを二進数に直して下の桁が先に来る逆順の文字列にする。 ロジャー・ペンローズ著『皇帝の新し…

Linker Option PROGRAM www USE ifwina IMPLICIT NONE INTEGER, PARAMETER :: INTERNET_OPEN_TYPE_PRECONFIG = 0 ! // use registry configuration INTEGER, PARAMETER :: INTERNET_OPEN_TYPE_DIRECT = 1 ! // direct to net INTEGER, PARAMETER :: INTERNET…

Window 表示のミニマル。窓を開く時と窓を閉じる時に文字列表示。Window 上で右・左クリックで文字列表示。窓を閉じる。 MODULE m_sub USE ifwin CONTAINS INTEGER (LRESULT) FUNCTION MainWndProc( hWnd, mesg, wParam, lParam ) !DEC$ ATTRIBUTES STDCALL, …

昔よくみた dragon 曲線。 『C言語による 最新 アルゴリズム事典』からの移植。 PROGRAM dragon_curve USE plotter IMPLICIT NONE INTEGER, PARAMETER :: norder = 10, iright = 1, ileft = 2 INTEGER :: i, k, ip, iq INTEGER :: ifold(0:2**norder) REAL :…