fortran66のブログ

fortran について書きます。

Fortran

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

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

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

なつかしいマンデルブロ集合をば。 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) …

Intel Visual Fortran 用の OpenGL モジュールを用いてロジスティック方程式によるカオス図形を描きます。 DEC/Compaq Visual Fortran でも実行可能だと思います。支那の王朝末期には、飢饉・戦乱で人口が大きく減るようですが、歴代支那の人口をプロットす…

iphlpapi という Win32 API を呼び出すことで Fortran でもネットワーク関連のプログラムが可能になります。しかし Intel は iphlpapi.lib 用のヘッダー・モジュールを用意してくれていないので、自分で定義を探して定数などを定義する必要があります。基本…

よくあるFortranの例題として、エラトステネスのふるいを用いた素数計算があります。 これを用いて素数の数を求め、ガウスによる素数定理を調べることにします。ここでエラトステネスのふるいとは、ヘレニズム時代のアレキサンドリアの自然学者エラトステネ…

物理雑誌の『パリティ』に、1991年2月号から9月号までフォートラン入門の記事がありました。時代的にまだFORTRAN77の内容ですが、短いプログラムで面白いテーマを扱っている連載でした。その中から水素原子に対するシュレディンガー方程式を数値的に解く問題…

奥村晴彦著『C言語による 最新 アルゴリズム事典』の「フラクタルによる画像圧縮」を移植してみました。羊歯植物のパラメータを入れています。 この本のルーチンと互換性を上げるために、uhoplotに少しサブルーチンを加えました。 MODULE plotter USE uhoplo…

昔なつかしいロジスティック関数によるカオス図形。拡大してゆくと、同じような形がどこまでもどこまでも現れます*1。 PROGRAM chaos USE uhoplot IMPLICIT NONE INTEGER, PARAMETER :: nx = 640, ny = 480, niter = 150 INTEGER :: iter, ix, iy REAL(8), P…

Fortran90入門 負の整数 二の補数表現

階乗の計算。 PROGRAM factorial IMPLICIT NONE INTEGER :: i, ifac ifac = 1 DO i = 1, 20 ifac = ifac * i PRINT *, i, '!=', ifac END DO STOP END PROGRAM FACTORIAL 実行結果 途中までは正しい結果を出しますが、13!から先は結果が狂っています。あまつ…

阿部さん しょんべん

PROGRAM kusomiso USE uhoplot CALL gr_on('Abe-san', 500, 600) CALL gr_pencol(irgb(0, 0, 0)) CALL gr_text(150, 10, 'ああ・・・つぎはションベンだ', irgb(155, 155, 0) ) CALL gr_show() ! chin chin CALL line( 0.0, 11.0, 0) CALL line( 0.0, 8.0, 1) C…

阿部さん

MODULE uho_win USE ifwina USE ifwinty USE ifmt, ONLY : RTL_CRITICAL_SECTION IMPLICIT NONE TYPE :: t_wnd INTEGER (HANDLE) :: hWnd INTEGER (HANDLE) :: hDC INTEGER (LPINT) :: hThread INTEGER :: id INTEGER (HANDLE) :: hPen CHARACTER (LEN = 80)…

コンソールからWindowを開く。

コンソールアプリから、Windowを開きます。 一般的には、メインルーチンでWinMainをCALLすればよいだけです。引数の多くはほぼ意味を持ちません。□コマンドライン引数を渡さないような最小形式のメインプログラムは以下のようになります。 =================…

Windows Program

Windows Programは、普通のコンソール型のプログラムしか作ったことの無い者には、中々理解しがたいものがあります。以前『猫でも分かるWindowsプログラミング』を買って読んで理解不能だったときは、「俺は猫以下か!」と、かなりがっかりしました。 以下に…

グラフィック用モジュール uhoplot

必要なモジュール2つ。一つはグラフィック窓を開くため。もう一つは線などを描くため。ビルド・オプションとしては、ライブラリをマルチスレッド用に指定する必要があります*1。Intel Visual FortranのWindows用定義モジュールには、名前の二重定義があった…

阿部高和と学ぶIntel Visual Fortran

コンソール窓から対話的に絵を描くモヂュールを作ります。普通のコンソール型プロジェクトで、PROGRAM文で始まるメインルーチンが実行開始位置となり、対話的に絵がかける様になります。マルチスレッドでグラフィック窓を開くので、絵を描きながらコンソール…

Windows Program Minimum

Intel Visual Fortran によるWin32プログラムの最小構成。普通のコンソール用アプリケーション形式で新しいプロジェクトを作ります。 ただし、コンパイル時のオプションとしてLINKのSYSTEMオプションで、SUBSYSTEMをWINDOWSに変更する必要があります*1。実行…

自己出力プログラム

CHARACTER(LEN=68)::f f='("CHARACTER(LEN=68)::f"/"f=",3a/"PRINT f,CHAR(39),f,CHAR(39)"/"END")' PRINT f,CHAR(39),f,CHAR(39) END ソースコードはFortran90。CHRA(39)は『'』。

テスト

PROGRAM test PRINT *, 'Uho' STOP END