fortran66のブログ

fortran について書きます。

2008-03-01から1ヶ月間の記事一覧

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 :…

2の補数表現では、増加関数として数が増えてゆきますが、ある大きさまで達すると周期境界条件の様に、負の側の絶対値最大の数に飛んでまた増加してゆきます。ここでは4バイト整数を扱いますので まで増加したところで、 へ飛びます。正の最大値と負の最小…

昔は再帰の例としてしょっちゅう見かけたもんですが。C-Curve です。 Fortranでは、なんとなく再帰は忌み嫌われていますが、たまにはいいよね。 PROGRAM c_curve USE plotter IMPLICIT NONE INTEGER :: norder WRITE(*, *) 'input order' READ(*, *) norder …

追記 3-13

uhoplot の Window を開くところでの sleep 時間が短すぎたらしい。 CALL SLEEP(100) から CALL SLEEP(500) でとりあえずよし? !---------------------------------------------------------------- SUBROUTINE gr_on(text, nx, ny) USE IFMT ! multithread…

Winsock の version 等を知る。 PROGRAM winsock USE ifwina IMPLICIT NONE INTEGER :: iret, iMaxSockets, iMaxUdpDg INTEGER (WORD) :: wVer TYPE (T_WSADATA) :: lpWSAData wVer = MAKEWORD(2, 0) iret = WSAStartUp(wVer, lpWSAData) IF (iret /= 0) STO…

とにかく、きめぇww

Mandelbrot集合 2

なつかしいマンデルブロ集合をば。 PROGRAM Mandel USE plotter IMPLICIT NONE INTEGER, PARAMETER :: kd = SELECTED_REAL_KIND(15) INTEGER, PARAMETER :: m = 1000, nwinx = 800 , nwiny = 600 INTEGER :: i, j, imax, jmax, maxiter, icount REAL (kd) ::…

Fortran90には数値の精度に関する関数がいくつか用意されています。TINY() 関数は正規数の最小値を返します。EPSILON() 関数は 1.0 に比べて無視できるような小さい数を返します。NEAREST() 関数は隣接する正規数を返します。実行結果を見ると、EPSILON() が…

統計力学などでは、よく階乗の対数を Stirling の公式で近似しますが、どのくらいの精度で近似になっているのか見てみます。ここで Stirling の公式とは、n が大きいところで、 というものです。n のオーダーに比例する項だけが問題になる時は、ここまでで十…

Fortranでインターネッツ。ping を打ってみます。 Linker のオプション。iphlpapi.lib を加える必要があります。 PROGRAM ping USE ifwin IMPLICIT NONE ! TYPE :: t_ip_option_information INTEGER (UCHAR) :: Ttl INTEGER (UCHAR) :: Tos INTEGER (UCHAR) …