プログラムに含まれている実数と複素数の変数宣言と定数表現に対して、種別型パラメタを変数の形で一意に導入すると伴に(以下、この変数を「精度パラメータ」と呼びます)、精度パラメータの定義(組込み手続 SELECTED_REAL_KIND を用いて値を取得します)を含むモジュールを自動的に生成することができます(以下、このモジュールを「精度モジュール」と呼びます)。
精度パラメータを用いることで、プログラムの精度を一元管理することができます。
コマンド
nagfor =unifyprecision [option]... file...
オプションの詳細は「nAG Fortran Compiler, Release 7.2 マニュアル - 2.26 精度の一元化」をご参照ください。
利用例
以下のプログラム例 main.f90 に対して、精度パラメータを導入し、精度モジュールを生成します。
[ main.f90 ]
program main implicit none real a, b complex c a = 1.375 b = 2.5_1 c = (5.0, 3.0) print *, a print *, b print *, c end program
コマンドラインから、以下のコマンドを打ち込んでください。
nagfor =unifyprecision -o main_up.f90 -pp_create_module -margin=0 main.f90
以下のように、精度パラメータ wp が導入され、精度モジュール working_presicion が生成されます。
これにより、プログラムの精度を一元管理できるようになります。
※ 精度パラメータ名と精度モジュール名は、オプション -pp_name=... と -pp_module=... で任意に設定できます。
※ ソース整形のオプション(例えば -margin=0 など)は、すべて同じ意味で使用できます。
[ main_up.f90 ]
Program main Use working_precision, Only: wp Implicit None Real (Kind=wp) :: a, b Complex (Kind=wp) :: c a = 1.375_wp b = 2.5_wp c = (5.0_wp, 3.0_wp) Print *, a Print *, b Print *, c End Program main
Module working_precision ! Precision module generated on 2016-05-10 at 15:23:58 +9:00. Integer, Parameter :: wp = selected_real_kind(15) End Module working_precision