ToDo:
Fortran2008で$\Gamma$関数と対数$\Gamma$関数が標準に入ったので、 使おうと思って調べていたのだが、最終的には libmを呼び出す訳で 呼び出し先のコードを追跡していたら... gamma(3m)は$\Gamma$関数ではなく、 対数$\Gamma$関数の値を返すんだね... Orz 何のために、lgamma(3m)が有るんだか src/lib/msum/src/e_gamma_r.cの __ieee754_gamma_rは$\Gamma$関数の対数を返すと言う コメントを読んでる当たりで、頭痛がしてきた。
$\Gamma$関数を返すのは、tgamma(3m)です。
はい、皆さん準備はいいですか?
右見て、左見て、半顔、見上げて...
絶望した!libmの紛らわしい仕様に絶望した!
Elementパラメータ参照コードからマジックナンバーを除去するには、 一般にはkytblを参照する必要があるが、特定のElement実装に 対するkytblの内容はコンパイル時もしくはElement実装の 登録時点で確定しているので、呼び出し毎に間接参照を行なう必要は無い。
Cだと、enum型でインデックス定数を生成する若しくは、 関数スコープの static const変数の初期化式が初回呼び出し時に 排他的に評価されることを使って、サブルーチン内のテーブル参照を ローカルなstatic変数の参照に置換する(インデックス計算コードが コンパイル時に畳み込めない分不利)などの手法を使って、 可搬性と効率を両立させる訳だが、Fortranの場合はどうするのが 良いだろう。
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記