fortran66のブログ

fortran について書きます。

Fortran2003

IEEE

PROGRAM test USE, INTRINSIC :: ieee_arithmetic USE, INTRINSIC :: ieee_exceptions USE, INTRINSIC :: ieee_features IMPLICIT NONE TYPE (IEEE_FEATURES_TYPE), PARAMETER :: ieee_feat(11) = [ IEEE_DATATYPE, IEEE_DENORMAL, IEEE_DIVIDE, IEEE_HALTIN…

MODULE m_type IMPLICIT NONE ! TYPE :: t_base INTEGER :: n REAL :: x END TYPE t_base ! END MODULE m_type !=================================================== MODULE m_extype USE m_type IMPLICIT NONE ! TYPE, EXTENDS(t_base) :: t_ext PROCEDUR…

IVF v11.0.074 TYPE

Bugってて、ダミーの仮引数がないと構造体を PASS することができません。 MODULE m_test IMPLICIT NONE ! TYPE :: t_person CHARACTER (LEN = 10) :: name REAL :: age INTEGER :: id END TYPE t_person ! TYPE, EXTENDS(t_person) :: t_employee INTEGER :…

IVF

IVF が少しバージョンアップして、ABSTRACT INTERFACE のバグが取れていました。 ABSTRACT INTERFACE があると、同じインターフェースを何度も書かなくてすみます。 実行結果 ソースプログラム MODULE m_sort IMPLICIT NONE ABSTRACT INTERFACE ELEMENTAL LO…

Fortran で CUDA その3

■Pinned Memory Fortran で Pinned Memory というものを使うと転送が早くなるというので、それを用いることを考えます。第1巻: CUDAプログラミング入門 (日本語版) http://www.nvidia.co.jp/docs/IO/59373/VolumeI.pdf の 88 ページに記述があります。 まず…

ARToolKit でローレンツ・アトラクターに影をつける。

OpenGL の範囲内で ARToolKit の像に影を付けることを目標とします。適当にググったところ、以下のページに行き当たりました。簡潔な説明で非常に参考になります。単純な幾何学での導出がされていて理解しやすいです。実際のプログラム例もあって助かりまし…

Fortran で、複数個の整数変数の AND や OR を取りたいことがあるのですが、Fortran90 以降で用意された IAND や IOR 関数は引数を二つしか取れず、IAND や IOR を入れ子式に用いなければなりません。例 m = IOR(I, IOR(J, K)) これを m = IOR(I, J, K) の様…

文字定数での部分文字列

文字定数の宣言で、パラメータ文であれば文字数を数えなくても文字列長を*で宣言できるようです。 変数の場合は、初期値として文字定数を与えても、明示的に文字数を与えなければならないようです。また、部分文字列の指定子は、文字定数にも使えるようです…

M.Metcalf et. al. の "fortran95/2003 explained" §11.2 によると、 "Within Fortran, -0 is treated as the ssame as a zero in all intrinsic operations and comparisons, but it can be detected by the 'sign' function and is respected on formatted…

IEEE がらみの INTRINSIC MODULE の機能。 イマイチよく分からん。 PRGRAM test USE, INTRINSIC :: IEEE_ARITHMETIC USE, INTRINSIC :: IEEE_FEATURES USE, INTRINSIC :: IEEE_EXCEPTIONS TYPE (IEEE_FLAG_TYPE) :: flag_value TYPE (IEEE_CLASS_TYPE) :: cl…

n番目のコマンドライン引数を求められます。 PROGRAM test IMPLICIT NONE INTEGER :: n, length CHARACTER(LEN = 120) :: text n = 0 CALL GET_COMMAND_ARGUMENT(n, text, length) PRINT *, n PRINT '(a)', text(1:length) STOP END PROGRAM test コマンドラ…

文字型のKINDも複数対応が可能となるしくみができました。 PROGRAM test IMPLICIT NONE PRINT *, SELECTED_CHAR_KIND('ASCII') PRINT *, SELECTED_CHAR_KIND('ISO_10646') STOP END PROGRAM test 今のところサポートは1ByteのASCII文字だけ?

IEEE754規格では浮動小数点の取り方から0に+0と-0の二通りの表記が許されます。ここで複素関数などを扱う場合、リーマン面のカットライン近傍において近づく方向に依存して極限が異なる場合があるので、+0と-0がそれぞれ正からの極限と負からの極限の意味で…

環境変数を取得する関数が加わりました。 個人的には今まで環境変数を欲しいと思ったことは無いです。OpenMPやMPIで使いたいのかな? 次期Fortran規格にもMPIの人たちがC++用のMPIとの互換性を持たせるために色々と要求を出しているようだし。 PROGRAM test …

確かに以前、大きさ1の割付配列を要求されて、スカラー変数で割付可能なら便利なのにと思った記憶はある。どういう状況だったか忘れたがwwwww 組み込み関数の返り値の何かだったかなぁ? PROGRAM test ! ALOCATABLE SCALAR IMPLICIT NONE REAL, ALLOCA…

コンポーネント名とデフォルト初期化を含む構造コンストラクター

たぶんこのことではないかと思うのだが・・ PROGRAM test IMPLICIT NONE INTEGER :: i TYPE :: t_test INTEGER :: n = 9 CHARACTER(LEN = 10) :: text REAL :: a(10) END TYPE t_test ! TYPE (t_test), PARAMETER :: unko = t_test(99, 'Yaranaika', [REAL::…

Array consrtuctor の例(型と文字列長仕様を含む配列コンストラクター)。 PROGRAM test ! Array constructor IMPLICIT NONE REAL :: a(4) INTEGER :: n(4) CHARACTER(LEN = 5) :: text(5) a = [REAL:: 1.0, 2.0, 3.0, 4.0] PRINT *, a n = [INTEGER:: 1.0,…

備忘録として。ifort.cfg を編集する。 # This Configuration file may be used for additional switches /Qdiag-message-catalog- いい加減『error #5082: 黒カエラー』云々は何とかならんのかw

最近インテルのFortranの新Versionが正式に発表され Ver.11となりました。 インストーラも妙にハイカラに変わりましたが、Win2000にはインストールできなくなってしまいました。http://www.intel.com/cd/software/products/asmo-na/eng/compilers/278834.htm…

Fortran の C ルーチン呼び出しと、Win32 の呼び出し規約の問題があるため、問題がある可能性が高いです。Fortran2003 の C 言語との互換機能を使って、Win32 のルーチンを呼ぶ。 コンソール窓のハンドルを得る関数 GetConsoleWindow へのインターフェースを…

MODULE m_bitmap IMPLICIT NONE INTEGER, PARAMETER :: DWORD = 4, LONG = 4, WORD = 2, kBYTE = 1 TYPE :: T_BITMAPINFOHEADER SEQUENCE integer(DWORD) biSize ! knowns DWORD integer(LONG) biWidth ! knowns LONG integer(LONG) biHeight ! knowns LONG …

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

メモリーリークがあったので少し修正。とりあえず、ARToolKit 中のサンプルプログラム SimpleTest を Intel Visual Fortran で書き直すことが出来ました。Intel Visual Fortran (Ver.10.1.021) は、Fortran2003 の規格を一部先取りしていて、C 言語との相互…