Top Banner
NAG Fortran Library for Win32 Applications, Mark 23 FLDLL234ML - License Managed Windows XP/Vista/7 DLL, Intel Visual Fortran ユーザ ノート 内容 1. イントロダクション ..................................................................................................... 1 2. リリース後の最新情報 .................................................................................................. 1 3. 制限事項 ........................................................................................................................ 1 4. 一般情報 ........................................................................................................................ 2 4.1. ライブラリ(DLL)のご利用方法 ........................................................................ 2 4.1.1. Intel Fortran ................................................................................................. 5 4.1.1.1. コマンドウィンドウ ................................................................................... 5 4.1.1.2. MS Visual Studio ...................................................................................... 6 4.1.2. モジュールファイル ...................................................................................... 9 4.1.3. NAG Fortran Compilernagfor.............................................................. 9 4.1.4. SilverfrostSalfordFTN95 ...................................................................... 10 4.1.5. PGI Fortran .................................................................................................. 13 4.1.6. Lahey / Fujitsu Fortran ............................................................................... 13 4.1.7. GNU gfortran ............................................................................................... 16 4.1.8. Microsoft Visual C++ / Visual Studio .......................................................... 18 4.1.9. Intel C/C++ ................................................................................................... 20 4.1.10. GNU gcc / g++ ............................................................................................... 20 4.1.11. Microsoft Visual Basic for Applications / Excel32-bit......................... 22 4.1.12. Microsoft Visual Basic 6 ............................................................................... 23 4.1.13. Microsoft Visual Basic .NET ........................................................................ 25 4.1.14. C# ................................................................................................................... 28 4.1.15. Java ................................................................................................................ 28 4.1.16. Python ............................................................................................................ 28 4.1.17. R ..................................................................................................................... 28 4.1.18. Simfit - NAG Library edition ....................................................................... 29 4.1.19. その他の環境 ................................................................................................. 29 4.2. アクセスチェック .................................................................................................. 30 4.3. インターフェースブロック .................................................................................... 30 4.4. Example プログラム .............................................................................................. 33 4.5. Fortran 型と強調斜体文字の解釈 .......................................................................... 34 4.6. NAG ルーチンからの出力 ...................................................................................... 35 5. ルーチン固有の情報 ..................................................................................................... 36 6. ドキュメント ................................................................................................................ 41 7. サポート ........................................................................................................................ 43 8. ユーザフィードバック .................................................................................................. 44 追記 コンタクト先情報 ............................................................................................... 44
45

イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran...

Apr 27, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

NAG Fortran Library for Win32 Applications, Mark 23

FLDLL234ML - License Managed

Windows XP/Vista/7 DLL, Intel Visual Fortran

ユーザ ノート

内容

1. イントロダクション ..................................................................................................... 1

2. リリース後の最新情報 .................................................................................................. 1

3. 制限事項 ........................................................................................................................ 1

4. 一般情報 ........................................................................................................................ 2

4.1. ライブラリ(DLL)のご利用方法 ........................................................................ 2

4.1.1. Intel Fortran ................................................................................................. 5

4.1.1.1. コマンドウィンドウ ................................................................................... 5

4.1.1.2. MS Visual Studio ...................................................................................... 6

4.1.2. モジュールファイル ...................................................................................... 9

4.1.3. NAG Fortran Compiler(nagfor) .............................................................. 9

4.1.4. Silverfrost(Salford)FTN95 ...................................................................... 10

4.1.5. PGI Fortran .................................................................................................. 13

4.1.6. Lahey / Fujitsu Fortran ............................................................................... 13

4.1.7. GNU gfortran ............................................................................................... 16

4.1.8. Microsoft Visual C++ / Visual Studio .......................................................... 18

4.1.9. Intel C/C++ ................................................................................................... 20

4.1.10. GNU gcc / g++ ............................................................................................... 20

4.1.11. Microsoft Visual Basic for Applications / Excel(32-bit) ......................... 22

4.1.12. Microsoft Visual Basic 6 ............................................................................... 23

4.1.13. Microsoft Visual Basic .NET ........................................................................ 25

4.1.14. C# ................................................................................................................... 28

4.1.15. Java ................................................................................................................ 28

4.1.16. Python ............................................................................................................ 28

4.1.17. R ..................................................................................................................... 28

4.1.18. Simfit - NAG Library edition ....................................................................... 29

4.1.19. その他の環境 ................................................................................................. 29

4.2. アクセスチェック .................................................................................................. 30

4.3. インターフェースブロック .................................................................................... 30

4.4. Exampleプログラム .............................................................................................. 33

4.5. Fortran型と強調斜体文字の解釈 .......................................................................... 34

4.6. NAGルーチンからの出力 ...................................................................................... 35

5. ルーチン固有の情報 ..................................................................................................... 36

6. ドキュメント ................................................................................................................ 41

7. サポート ........................................................................................................................ 43

8. ユーザフィードバック .................................................................................................. 44

追記 - コンタクト先情報 ............................................................................................... 44

Page 2: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

1

1. イントロダクション

本ユーザノートは本 NAG Fortran Library, Mark 23:FLDLL234ML(ライブラリ)を

使用される方向けのドキュメントです.本ユーザノートには NAG Library Manual,

Mark 23(ライブラリマニュアル)に含まれない製品毎の情報が含まれます.ライブラリ

マニュアルに「ユーザノート参照」などと書かれている場合は,本ユーザノートをご参

照ください.

ライブラリルーチンのご利用にあたり,以下のドキュメントを必ずお読みください.

(a) Essential Introduction (ライブラリ一般に関する基本的なドキュメント)

(b) Chapter Introduction (チャプター毎のドキュメント)

(c) Routine Document (ルーチン毎のドキュメント)

本ライブラリはマルチスレッド環境でご利用いただけます(スレッドセーフです).

2. リリース後の最新情報

本ライブラリの動作環境や利用方法についての最新の情報は,以下のウェブページをご

確認ください.

http://www.nag.co.uk/doc/inun/fl23/dll4ml/postrelease.html

3. 制限事項

NAG Fortran Library DLLの以前のバージョンは Compaq Visual Fortran の呼び出し

規約が使われていました(ifort /iface:cvf).これは引数が参照渡しであることを

意味します.文字列は文字と文字長のペアで渡されます(/iface:mixed_str_len_arg,

これは/iface:cvfを指定すると自動的に指定されます).

本製品で提供されるプリコンパイル済みのインターフェースブロック(引用仕様宣言)

ファイル *.modは Intel Fortran Compiler 12.0で生成されたものです.他のコンパイラ

(または Intel Fortran Compilerの別バージョン)を利用する場合には再コンパイルが

必要です.

Page 3: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

2

4. 一般情報

パフォーマンスの面から,Math Kernel Library(MKL)を利用するバージョンの NAG

ライブラリ(FLDLL234M_mkl.lib/FLDLL234M_mkl.dll)のご利用が推奨されます.も

し本製品で提供されるMKLとは異なるバージョンのMKLを用いて問題が生じる場合は,

本製品で提供される MKL を用いるか,もしくは MKL を利用しないバージョンの NAG

ライブラリ(FLDLL234M_nag.lib/FLDLL234M_nag.dll)をご利用ください.

4.1. ライブラリ(DLL)のご利用方法

本セクションでは以下のデフォルトのインストールフォルダに本ライブラリがインスト

ールされていることが前提となります.

C:¥Program Files¥NAG¥FL23¥fldll234ml

もしこのフォルダが存在しない場合は,システム管理者(本ライブラリをインストール

した方)にお尋ねください.以降の説明ではこのフォルダを install_dir として参照

します.

また,「スタート」メニューに以下のライブラリコマンドプロンプトのショートカットが

置かれていることが前提となります.

すべてのプログラム|NAG|FL23|

NAG Fortran Library for Win32 Applications (FLDLL234ML)|

FLDLL234ML Command Prompt

もしこのショートカットが存在しない場合は,システム管理者(本ライブラリをインス

トールした方)にお尋ねください.また,本ライブラリのインストール時に作成される

他のショートカットも同じ場所に置かれていることが前提となります.

実行時にNAG Fortran Library DLL(FLDLL234M_nag.dll/FLDLL234M_mkl.dll)

にアクセスできるように install_dir¥binフォルダにパスが通っていることを確認し

てください.またMKLを利用するNAG Fortran Library DLL(FLDLL234M_mkl.dll)

をご利用の場合は,install_dir¥MKL_ia32_10.3¥binフォルダにもパスが通ってい

る必要があります.このフォルダは install_dir¥binフォルダよりも後ろに設定して

ください.これは BLAS/LAPACK ルーチンのいくつかはベンダー提供のものとの問題

Page 4: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

3

を避けるために FLDLL234M_mkl.dllに含まれるNAG提供のものを使用する必要があ

るからです(「5. ルーチン固有の情報」参照).

NAG Fortran Library DLLへのアクセスをチェックするためには,以下の「スタート」

メニューのショートカットから診断プログラム NAG_Fortran_DLL_info.exe を実行

してください.

すべてのプログラム|NAG|FL23|

NAG Fortran Library for Win32 Applications (FLDLL234ML)|

Check NAG DLL Accessibility (FLDLL234ML)

この診断プログラムの詳細はインストールノートの「4.2.3. アクセスチェック」をご参

照ください.

コマンドプロンプトからの環境変数の設定については「4.1.1.1. コマンドウィンドウ」を

ご参照ください.環境変数 PATH, LIB, INCLUDE はインストール時に設定されている

場合もあります.コントロールパネルから環境変数を設定する場合には以下の通りに行

ってください.

環境変数 PATHに以下のパスを設定してください.

c:¥Program Files¥NAG¥FL23¥fldll234ml¥batch

c:¥Program Files¥NAG¥FL23¥fldll234ml¥bin

c:¥Program Files¥NAG¥FL23¥fldll234ml¥MKL_ia32_10.3¥bin

環境変数 LIBに以下のパスを設定してください.

c:¥Program Files¥NAG¥FL23¥fldll234ml¥lib

環境変数 INCLUDEに以下のパスを設定してください.

c:¥Program Files¥NAG¥FL23¥fldll234ml¥nag_interface_blocks

注意:

上記のパス設定はデフォルトのインストール先にインストールを行った場合です.

インストール先がデフォルトでない場合は適切なフォルダで置き換えてください.

Page 5: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

4

使用者の便宜を図るために NAG インポートライブラリ FLDLL234M_mkl.lib では

MKLのシンボルもエクスポートされています.従ってMKLインターフェースライブラ

リ(mkl_intel_s_dll.lib, mkl_intel_thread_dll.lib, mkl_core_dll.lib)

を指定する必要はありません.しかしながら,もしMKLインターフェースライブラリの

指定を行う場合は,NAG インポートライブラリ FLDLL234M_mkl.lib よりも後に指定

するようにしてください.

例)

FLDLL234M_mkl.lib

mkl_intel_s_dll.lib

mkl_intel_thread_dll.lib

mkl_core_dll.lib

これは BLAS/LAPACK ルーチンのいくつかはベンダー提供のものとの問題を避けるた

めに FLDLL234M_mkl.dllに含まれるNAG提供のものを使用する必要があるからです

(「5. ルーチン固有の情報」参照).

これから先のセクションではNAG Fortran Library DLLを様々な環境から利用する方

法を説明します.また,以下の NAGウェブサイトには NAG Fortran Library DLLおよ

び NAG C Library DLLを様々な環境から利用するための情報が公開されています.

http://www.nag.co.uk/numeric/Num_DLLhelp.asp

本ライブラリの動作環境や利用方法についての最新の情報は,以下のリリース後の最新

情報ページをご確認ください.

http://www.nag.co.uk/doc/inun/fl23/dll4ml/postrelease.html

Page 6: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

5

4.1.1. Intel Fortran

NAG Fortran Library DLL はインストールノートに記載されたバージョンの Intel

Fortranコンパイラを用いてビルドされています.それ以外のバージョンの Intel Fortran

コンパイラでコンパイルされたプログラムからNAG Fortran Library DLLを利用する

場合は,正しい Intel Fortranコンパイラのランタイムライブラリがピックアップされる

ように,install_dir¥binフォルダに提供されている Intel Fortranコンパイラのラン

タイムライブラリ libifcoremd.dll および libmmd.dll の名前を変更する必要があ

ります.これを簡単に行うためのバッチファイル hide_ifort_rtls.batが同フォルダ

に提供されています.このバッチファイルはフォルダに在る libifcoremd.dllおよび

libmmd.dll の名前を変更します.また,変更した名前を元に戻すためのバッチファイ

ル expose_ifort_rtls.batが同フォルダに合わせて提供されています.

4.1.1.1. コマンドウィンドウ

本ライブラリをコマンドウィンドウからご利用いただく場合には環境変数の設定が必要

です.(通常,インストール時に環境変数の自動設定を選択された場合は,必要な環境変

数はシステム環境変数に設定されています.)

以下の「スタート」メニューのショートカットがご利用いただけます.

すべてのプログラム|NAG|FL23|

NAG Fortran Library for Win32 Applications (FLDLL234ML)|

FLDLL234ML Command Prompt

このショートカットは本ライブラリおよび本製品で提供される MKL に対して必要な環

境変数 INCLUDE, LIB, PATHを正しく設定した上でコマンドプロンプトを開きます.

このショートカットを利用しない場合には環境変数の設定を手動で行う必要があります.

環境変数の設定はバッチファイル envvars.bat を用いて行うことができます.このバ

ッチファイルのデフォルトの格納位置を以下に示します.

c:¥Program Files¥NAG¥FL23¥fldll234ml¥batch¥envvars.bat

Page 7: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

6

その後,以下に示すコマンドの一つでコンパイル/リンクを行ってください.

(ここで driver.f90がユーザプログラムです.)

MKL提供の BLAS/LAPACKを利用するNAGライブラリ(FLDLL234M_mkl.lib):

ifort /iface:cvf /MD driver.f90 FLDLL234M_mkl.lib

MKL提供のBLAS/LAPACKを利用しないNAGライブラリ(FLDLL234M_nag.lib):

ifort /iface:cvf /MD driver.f90 FLDLL234M_nag.lib

これらのライブラリを利用する場合には,正しいランタイムライブラリとのリンクのた

めに /MD オプションが必要です(/MD オプションは /libs:dll /threads オプショ

ンに等しい).

マルチスレッドプログラムの場合は,以下のように/automatic オプションを付けてコ

ンパイルしてください.

ifort /iface:cvf /MD /automatic driver.f90 FLDLL234M_mkl.lib

注意:Intel Visual Fortran コンパイラの環境変数が設定されている必要があります.

詳細はコンパイラの User’s Guideをご参照ください.

4.1.1.2. MS Visual Studio

本セクションの説明は Visual Studio .NET 2003 / 2005 / 2008 および Intel Fortran

Compiler 12.0を想定しています.他のバージョンでは詳細が異なるかもしれません.

実行時にNAG DLL(FLDLL234M_nag.dll/FLDLL234M_mkl.dll)にアクセスでき

るように,NAG DLLの格納フォルダ install_dir¥binが環境変数 PATHに設定され

ている必要があります.MKL を利用する NAG DLL(FLDLL234_mkl.dll)を利用す

る場合には,実行時にMKL DLLにアクセスできるように,MKL DLLの格納フォルダ

install_dir¥MKL_ia32_10.3¥bin が環境変数 PATH に設定されている必要があり

ます(ただし install_dir¥MKL_ia32_10.3¥binは install_dir¥binよりも後に

設定されなければなりません).

Page 8: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

7

Visual Studioを起動していただき,以下の手順に従って Intel Fortran コンパイラで利

用するディレクトリの設定を行ってください.以下の設定は Intel Fortranコンパイラを

使うプロジェクト(Intel Fortranプロジェクト)すべてに適用されます.

1. メニュー「ツール|オプション」をクリックしてください.

2. 「オプション」ウィンドウで Intel(R) Fortran(または Intel(R) Visual Fortran)を

クリックし Compilers を選択してください.(Visual Studio のバージョンによって

は Intelコンパイラのオプションを見るために Show all settings をクリックする必

要があるかもしれません.)

3. Librariesパネルの右端にある’...’ボタンをクリックしてください.

4. Set Directory Listウィンドウで NAGインポートライブラリが置かれているフォル

ダのパスを追加してください.デフォルトは以下のようになります.

c:¥Program Files¥NAG¥FL23¥fldll234ml¥lib

5. 本製品では MKL インポートライブラリが置かれているフォルダのパスを追加する

必要はありません.BLAS/LAPACK のシンボルは NAG インポートライブラリ

(FLDLL234M_nag.lib)からエクスポートされるからです.(もし Libraries パス

にMKLライブラリフォルダを追加する場合は,「4.1. ライブラリ(DLL)のご利用

方法」で説明されているように,NAGライブラリフォルダの後に追加する必要があ

ります.)

6. Set Directory Listウィンドウで OKボタンをクリックしてください.

7. Includesパネルの右端にある’...’ボタンをクリックしてください.

8. Set Directory Listウィンドウで NAGインターフェースブロックが置かれているフ

ォルダのパスを追加してください.デフォルトは以下のようになります.

c:¥Program Files¥NAG¥FL23¥fldll234ml¥nag_interface_blocks

9. Set Directory Listウィンドウで OKボタンをクリックしてください.

10. 「オプション」ウィンドウで OKボタンをクリックしてください.

Page 9: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

8

上記の設定を行うことで Intel Fortran プロジェクトでコンパイル/リンクを行う際に,

ライブラリおよび NAG インターフェースブロックをフルパスで指定する必要が無くな

ります.

上記の設定は,全ての Intel Fortranプロジェクトに適用されます.

下記の設定は,個々の Intel Fortranプロジェクトに対して行う必要があります.

本ライブラリはフルオプティマイズされています.そのため Debugモードで Cランタイ

ムライブラリに関する警告メッセージが表示されますが,通常これは無視して構いませ

ん.Releaseモードへの設定変更はツールバーもしくはメニューの「ビルド|構成マネ

ージャ」から行うことができます.

NAGライブラリのプロジェクトへの追加は,以下の方法で行うことができます.

プロジェクトのプロパティを開いてください.(ソリューションエクスプローラでグルー

ププロジェクト(一行目)が選択されていないことを確認して,メニューから「プロジ

ェクト|*** のプロパティ」を選択するか,もしくはソリューションエクスプローラで

特定のプロジェクトを右クリックして「プロパティ」を選択します.)

プロパティの左側のパネルの「リンカ|入力」を選択してください.右側のパネルの「追

加の依存ファイル」に FDLL234M_nag.lib を追加してください.変更を有効にするた

めに OKまたは「適用」ボタンをクリックしてください.

呼び出し規約をCVFに設定する必要があります.プロパティの左側のパネルの Fortran

|External Proceduresを選択してください.右側のパネルの Calling Convention

をクリックし,ドロップダウンリストから CVF を選択してください.変更を有効にする

ために OK または「適用」ボタンをクリックしてください(この時 CVFが選択されてい

ることで,String Length Argument Passingの設定が自動的に After Individual

String Argumentに変更されます).

コンパイラのランタイムライブラリに関してはマルチスレッドDLL版のご利用を推奨し

ます.プロパティの左側のパネルの Fortran|Librariesを選択してください.

右側のパネルの Runtime Library をクリックし,ドロップダウンリストから

Multithread DLL を選択してください.変更を有効にするために OK または「適用」

ボタンをクリックしてください.

Page 10: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

9

マルチスレッドアプリケーションでご利用の場合は,マルチスレッドランタイムライブ

ラリを選択すると共に,スタック領域で全てのローカル変数にメモリが割り当てられる

ようにコンパイラオプション/automatic(または /Qauto)を設定してください.こ

のオプションを設定するには,プロパティの左側のパネルの Fortran|Data を選択し

てください.右側のパネルの Local Variable Storageをクリックし,ドロップダウ

ンリストから Loacal Variables AUTOMATIC を選択してください.変更を有効にす

るために OKまたは「適用」ボタンをクリックしてください.

以上で,プロジェクトのビルド(コンパイル/リンク)を行うことができます.

プログラムの実行が標準入出力からの入出力リダイレクションを伴わない場合には

Microsoft Development Environment(例えば,メニュー「デバッグ|デバックなしで

開始」など)実行することができますが,標準入出力からの入出力リダイレクションを

伴う場合にはコマンドプロンプトウィンドウからの実行が推奨されます.

4.1.2. モジュールファイル

Install_dir¥nag_interface_blocks フォルダに提供されているインターフェース

ブロック(引用仕様宣言)モジュールファイル *.mod は Intel Fortran コンパイラで生

成されています.モジュールファイルはコンパイラ依存であるため,これらのファイル

は他のコンパイラでは利用できません.他のコンパイラでモジュールファイルを利用す

る場合は(NAG ライブラリの Example プログラムを利用する場合やユーザープログラ

ムでインターフェースブロックを利用する場合は),先ずはそのコンパイラでモジュール

ファイルを生成する必要があります(詳細は「4.3. インターフェースブロック」をご参

照ください).

4.1.3. NAG Fortran Compiler(nagfor)

NAG Fortran Libraryインターフェースブロック(引用仕様宣言)を利用する場合には

(例えば,NAGライブラリの Exampleプログラムをコンパイルする場合など),先ずは

モジュールファイルを生成する必要があります.詳細は「4.3. インターフェースブロッ

ク」をご参照ください.

NAG Fortran Compiler(nagfor)からNAG Fortran Library DLLを利用する場合は,

以下のようにコンパイル/リンクを行ってください.

Page 11: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

10

nagfor –f77 -w=obs –I nag_interface_blocks_nagfor

-o driver.exe driver.f90 "install_dir¥lib¥FLDLL234M_mkl.lib"

または,

nagfor –f77 -w=obs –I nag_interface_blocks_nagfor

-o driver.exe driver.f90 "install_dir¥lib¥FLDLL234M_nag.lib"

ここで driver.f90 はユーザープログラム,driver.exe は生成される実行形式,

nag_interface_blocks_nagforはモジュールファイルの格納フォルダです.

FLDLL234M_mkl.lib または FLDLL234M_nag.lib はフルパスで指定する必要があり

ます.パスにスペースが含まれる場合は,パスをクォーテーションで括ってください.

注意:NAG Fortran Compiler, Release 5.3以降のバージョンをご利用の場合は,コンパ

イラオプションは -f77の代わりに –compatibleをご利用ください.

4.1.4. Silverfrost(Salford)FTN95

NAG Fortran Libraryインターフェースブロック(引用仕様宣言)を利用する場合には

(例えば,NAGライブラリの Exampleプログラムをコンパイルする場合など),先ずは

モジュールファイルを生成する必要があります.詳細は「4.3. インターフェースブロッ

ク」をご参照ください.なお,FTN95でインターフェースブロックをコンパイルする際

には,/f_stdcallオプションを付けて STDCALL 呼び出し規約が使われるようにして

ください.

FTN95からNAG Fortran Library DLL を利用する場合は,ソースファイルの変更は必

要ありませんが,FTN95 が cdecl 呼び出し規約の一種をデフォルトで使っているため

CVF 呼び出し規約を使用する旨を明示的に指定する必要があります(/import_lib オ

プション).以下のようにコンパイル/リンクを行ってください.

ftn95 /f_stdcall /mod_path nag_interface_blocks_ftn95 driver.f90

/import_lib "install_dir¥bin¥FLDLL234M_mkl.dll" /link

または,

Page 12: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

11

ftn95 /f_stdcall /mod_path nag_interface_blocks_ftn95 driver.f90

/import_lib "install_dir¥bin¥FLDLL234M_nag.dll" /link

ここで driver.f90 はユーザープログラム,driver.exe は生成される実行形式,

nag_interface_blocks_ftn95はモジュールファイルの格納フォルダです.

FLDLL234M_mkl.dll または FLDLL234M_nag.dll はフルパスで指定する必要があり

ます.パスにスペースが含まれる場合は,パスをクォーテーションで括ってください.

これらのオプションにより,DLL の全てのエクスポートされた名前は CVF STDCALL

であり,それらを利用する場合には CVF STDCALL呼び出し規約を用いなくてはならな

いことが明示されます.引数リストを通してNAG Fortran Library DLL内のルーチンに

渡される外部名は,同じソースファイル内であるかどうかが自動的に判別されます.

以下のようにコンパイル/リンクすることもできます.

ftn95 /f_stdcall /mod_path nag_interface_blocks_ftn95 driver.f90

slink driver.obj "install_dir¥bin¥FLDLL234M_mkl.dll"

パスにスペースが含まれる場合は,パスをクォーテーションで括ってください.

リンカはDLLと直接リンクし,*.libファイルとはリンクしないことに注意してください.

FTN95コンパイラの制限として,

NAG ルーチンの引数として渡すルーチンが driver.f90 の内部でモジュールとして定

義されている場合に STDCALL属性が与えられない事例があります.この制限は FTN95

の version 6.00.0で存在するようですが,この場合 NAGルーチンの引数として渡すルー

チンについては内部モジュールの代わりに外部ルーチンとして宣言してください.なお,

NAG ライブラリの Example プログラムの多くは,このような内部モジュールを持って

いることに注意してください.

また別の些細な制限として,FTN95は FLUSH文(Fortran 2003固有の機能)をサポー

トしていません.NAGライブラリの Exampleプログラムのいくつかは FLUSH文を利用

しています.これらの Exampleプログラムをコンパイルに通すためには,FLUSH文をコ

メントアウトする必要があります.

Page 13: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

12

Plato3は FTN95と共に提供される IDE(統合開発環境)です.Plato3からNAG Fortran

Library DLLを利用する場合は,以下のように行ってください.

1. FileメニューからNew Projectを選択してください.

2. Fortran Application を選択して,プロジェクト名と格納場所を設定してください.

3. Project Explorerウィンドウでソースファイルを右クリックして,プロジェクトを構

成するファイルを入力してください(例えば,NAGライブラリの Exampleプログラ

ム C05NBFE.F).

4. Project Explorerウィンドウの Referencesを右クリックして,NAG Fortran Library

DLLの名前を入力してください(例えば,FLDLL234M_nag.dll).

5. version 5.2 以前の FTN95 をご利用の場合には,Checkmate オプションの指定は行

わないようにしてください.version 5.2以前の FTN95と NAG STDCALL DLLは

Checkmate オプションでは正常に動作しません.ツールバーのドロップダウンメニ

ューから,例えば Release Win32を選択してください.

6. Project|Properties|Compiler Options|Miscellaneous|Extra compiler options

プロパティで /F_STDCALLを指定してください.または,Project Explorerウィン

ドウの ReferencesのNAG Fortran Library DLLを右クリックして,Propertiesの

STDCALLチェックボックスにチェックを入れてください.

7. Plato3は標準入出力のリダイレクションをサポートしていません.従って,入出力の

際にはメインプログラムの中で明示的にファイルをオープンする必要があります.

一例として,計算結果を c:¥test.res ファイルに書き出す場合,(装置番号 6 で

write文を使用する前に)以下のようにopen文でファイルをオープンしてください.

open(6,file='c:¥test.res')

Page 14: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

13

4.1.5. PGI Fortran

NAG Fortran Libraryインターフェースブロック(引用仕様宣言)を利用する場合には

(例えば,NAGライブラリの Exampleプログラムをコンパイルする場合など),先ずは

モジュールファイルを生成する必要があります.詳細は「4.3. インターフェースブロッ

ク」をご参照ください.

pgf90から NAG Fortran Library DLLを利用する場合は,以下のようにコンパイル/リ

ンクを行ってください(本ライブラリのインストール先を考慮して環境変数LIBとPATH

が正しく設定されていることが前提となります).

pgf90 driver.f90 -module nag_interface_blocks_pgi FLDLL234M_mkl.lib

-o driver.exe

または,

pgf90 driver.f90 -module nag_interface_blocks_pgi FLDLL234M_nag.lib

-o driver.exe

ここで driver.f90 はユーザープログラム,driver.exe は生成される実行形式,

nag_interface_blocks_pgiはモジュールファイルの格納フォルダです.

上記のコマンドは pgf90の version 11.2-0で検証されています.

4.1.6. Lahey / Fujitsu Fortran

Lahey / Fujitsu FortranからのNAG Fortran Library DLLのご利用方法を示すために,

D02CJFルーチンの Exampleプログラムを修正したファイル(lahey.f)が以下のフォ

ルダに提供されます.

install dir¥samples¥lahey_fortran_example

以下に示すご利用方法は Lahey Fortran version 7.2で検証されています.

Page 15: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

14

1. コードの変更

Lahey FortranからNAG Fortran Library DLLをご利用になる場合には,標準の

Fortranプログラムにいくつかの簡単な変更を加える必要があります.

a. NAGルーチンに対して,

呼び出し側のプログラムに DLL_IMPORT文を挿入してください.

例)

DLL_IMPORT D02CJF

b. NAGルーチンの引数となる NAGルーチンに対して,

呼び出し側のプログラムに DLL_IMPORT文を挿入してください.

例)

DLL_IMPORT D02CJW

c. NAGルーチンの引数となるユーザー提供のサブルーチン/関数に対して,

呼び出し側のプログラムに DLL_IMPORT文を挿入してください.

例)

DLL_IMPORT OUT

そして,そのユーザー提供のサブルーチン/関数に DLL_EXPORT 文を挿入

してください.

例)

DLL_EXPORT OUT

これらのサブルーチンと関数はすべて EXTERNAL宣言と(関数に対しては)

型の宣言が必要です.インポートされる関数は大文字/小文字の区別がありま

す.NAG名はすべて大文字でなければなりません.

文字引数についてはNAG Fortran Library DLLの規約に合わせる必要があり

ます.Laheyが全ての引数の最後に置く隠れた文字長を文字引数から取り除く

ために,引数のアドレスの値 VAL(POINTER(char_arg)) を渡してください.

そして,その後に文字長を加えてください.両方とも値渡しとなります.

例)

CALL D02CJF (X, XEND2, N, Y, FCN, TOL, VAL(POINTER('Default')),

VAL(LEN('Default')), OUT, G, W, IFAIL)

Page 16: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

15

2. コンパイルとリンク

コンパイラオプション -ml bc を付けてコンパイルを行ってください.これにより

stdcall呼び出し規約が使われるようになります.NAG Fortran Library DLLのイン

ポートライブラリ(FLDLL234M_nag.lib/FLDLL234M_mkl.lib)の格納フォル

ダのパスが環境変数 LIB に設定されているようにしてください.または,リンカー

オプション –LIBPATH を用いて指定することもできます.または,フルパスでの指

定も可能です.

例)

lf95 d02cjfe.f "install_dir¥lib¥FLDLL234M_mkl.lib" -ml bc

または,

lf95 d02cjfe.f "install_dir¥lib¥FLDLL234M_nag.lib" -ml bc

3. 実行

実行時にはDLLの格納フォルダのパスが環境変数 PATHに設定されている必要があ

ることに注意してください.

Page 17: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

16

4.1.7. GNU gfortran

警告:gfortran から NAG ライブラリを利用する際には,以降で説明される文字引数

(character型の引数)の取り扱いについて注意してください.

NAG Fortran Libraryインターフェースブロック(引用仕様宣言)を利用する場合には

(例えば,NAGライブラリの Exampleプログラムをコンパイルする場合など),先ずは

モジュールファイルを生成する必要があります.詳細は「4.3. インターフェースブロッ

ク」をご参照ください.

gfortranからNAG Fortran Library DLL を利用する場合は,以下のようにコンパイル/

リンクを行ってください.

Windowsコマンドプロンプトから gfortranを使う場合:

gfortran -mrtd -Inag_interface_blocks_gfortran driver.f90

"install_dir¥lib¥FLDLL234M_mkl.lib" -o driver.exe

または,

gfortran -mrtd -Inag_interface_blocks_gfortran driver.f90

"install_dir¥lib¥FLDLL234M_nag.lib" -o driver.exe

Cygwinターミナル(xterm)から gfortranを使う場合:

gfortran -mrtd -Inag_interface_blocks_gfortran driver.f90

"install_dir/lib/FLDLL234M_mkl.lib" -o driver.exe

または,

gfortran -mrtd -Inag_interface_blocks_gfortran driver.f90

"install_dir/lib/FLDLL234M_nag.lib" -o driver.exe

ここで driver.f90 はユーザープログラム,driver.exe は生成される実行形式,

nag_interface_blocks_gfortranはモジュールファイルの格納フォルダです.

Page 18: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

17

文字引数は特別な注意を要します.NAGライブラリは Intel ifortの/iface:cvf呼び出

し規約を使用します.これはコンパイラが Fortranの文字型(character型)引数の直

後に文字長を示す見えない引数を挿入することを意味します.しかしながら gfortranコ

ンパイラはこの文字長を示す見えない引数を引数列の一番最後に挿入するので,NAGラ

イブラリの呼び出し規約と整合性が取れません.現状の解決策としては,各文字引数の

直後に文字長を明示的に挿入することです.例えば,NAG関数 g01fafの第一引数 tail

は文字型で,呼び出しは以下のように行います.

例)

DEV = G01FAF(TAIL,%VAL(1),P,IFAIL)

ここで %VAL(1) は文字長 1を値渡しすることをコンパイラに指示しています.

この方法で呼び出しは可能となりますが,残念ながら NAG インターフェースブロック

(引用仕様宣言)との整合性は取れなくなります.USE 文でインターフェースブロック

を使う代わりに external宣言を使用してください.

もう一つの例として,Exampleプログラム d02cjfe.f90ではルーチン d02cjfが呼び

出されている全ての箇所で仮引数 relabs(実引数‘Default’)を以下に置き換える必

要があります.

‘Default’,%VAL(7)

そして USE文を使う代わりに d02cjfを external宣言する必要があります.

引数が文字配列の場合は,各々の配列要素の長さを渡す必要があります.

以上の情報は Cygwinのディストリビューションに含まれる GNU Fortran 4.3.4で検証

されています.

gfortranからのNAG Fortran Library DLLの利用方法を示すために,Exampleプログ

ラム d02cjfe.f90および g01fafe.fの修正版が以下のフォルダに提供されます.

install_dir¥samples¥gfortran_examples

Page 19: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

18

4.1.8. Microsoft Visual C++ / Visual Studio

NAG Fortran Library DLLはMicrosoft Visual Studio .NET 2003以降の CまたはC++

環境からも(いくつかの注意と共に)利用することができます.ご利用の支援として

Fortran と C の型のマッピング情報を持った C/C++ヘッダファイルが提供されます.必

要に応じてヘッダファイルの中から必要な部分をコピーするか,もしくは単純にヘッダ

ファイルをインクルードしてご利用ください.

CまたはC++からNAG Fortran Library DLLを利用するExampleが以下のフォルダに

提供されます.

install_dir¥samples¥c_examples

および,

install_dir¥samples¥cpp_examples

詳細についてはinstall_dir¥c_headersフォルダに提供されるtechdoc.htmlをご

参照ください.このドキュメントのショートカットがスタートメニューに提供されます.

すべてのプログラム|NAG|FL23|

NAG Fortran Library for Win32 Applications (FLDLL234ML)|

C & C++ Header File Information

キーとなる情報:

STDCALL呼び出し規約を指定する.

配列のアクセス順序が異なる.

(Cは行優先(Row Major),Fortranは列優先(Column Major))

提供されるヘッダファイルを利用する.

Fortranの文字列は二つのパラメータとして扱われる(文字列と文字列長).

CからNAG Fortran Library DLLを利用する Exampleが提供される.

(install_dir¥samples¥c_examples)

C++からNAG Fortran Library DLLを利用する Exampleが提供される.

(install_dir¥samples¥cpp_examples)

Cプログラムは.c拡張子,C++プログラムは.cpp拡張子を用いる.

Page 20: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

19

Cプログラムから NAG Fortran Library DLLを利用する場合は,以下のようにコンパイ

ル/リンクを行ってください(ここでは NAGインポートライブラリの格納フォルダが環

境変数 LIBに設定されていることを前提としています).

cl driver.c FLDLL234M_mkl.lib

または,

cl driver.c FLDLL234M_nag.lib

ここで driver.cはユーザープログラムです.

上記はヘッダファイルへのパスが環境変数 INCLUDE に含まれていることを前提として

います.含まれていない場合は,以下のようにコンパイル/リンクを行ってください.

cl /I"install_dir¥c_headers" driver.c FLDLL234M_mkl.lib

または,

cl /I"install_dir¥c_headers" driver.c FLDLL234M_nag.lib

以下の説明は Visual Studio .NET 2003,Visual Studio 2005,Visual Studio 2008を想

定しています.他のバージョンでは詳細が異なるかもしれません.

Visual Studio IDE(統合開発環境)を利用する場合,リンクが行えるようにするために

以下の設定を行ってください.プロジェクトのプロパティから「構成プロパティ|リン

カ|入力|追加の依存ファイル」に FLDLL234M_mkl.libまたは FLDLL234M_nag.lib

を追加してください.もし環境変数 LIB が他で設定されていなければ,プロジェクトの

プロパティから「構成プロパティ|リンカ|全般|追加のライブラリディレクトリ」に

install_dir¥libを追加してください.

注意:C++のコマンドライン Example

(install_dir¥samples¥cpp_examples¥commandline)を利用する場合は,

Microsoft C++では /EHscオプションの指定が必要です.

Page 21: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

20

4.1.9. Intel C/C++

セクション 4.1.8 で説明されているヘッダファイルについての情報は Intel Cについても

当てはまります.

Cプログラムから NAG Fortran Library DLLを利用する場合は,以下のようにコンパイ

ル/リンクを行ってください(ここでは NAGインポートライブラリの格納フォルダが環

境変数 LIBに設定されていることを前提としています).

icl /I"install_dir¥c_headers" driver.c FLDLL234M_mkl.lib

または,

icl /I"install_dir¥c_headers" driver.c FLDLL234M_nag.lib

ここで driver.cはユーザープログラムです.

4.1.10. GNU gcc / g++

セクション 4.1.8 で説明されているヘッダファイルについての情報は gcc / g++について

も当てはまります.

gccまたは g++からNAG Fortran Library DLL を利用する場合は,以下のようにコンパ

イル/リンクを行ってください.(ここで driver.c または driver.cppはユーザープ

ログラム,driver.exeは生成される実行形式です.)

Windowsコマンドプロンプトで Cプログラムのコンパイルに gccを使う場合:

gcc -D _WIN32 -I "install_dir¥c_headers" driver.c

"install_dir¥lib¥FLDLL234M_mkl.lib" -o driver.exe

または,

gcc -D _WIN32 -I "install_dir¥c_headers" driver.c

"install_dir¥lib¥FLDLL234M_nag.lib" -o driver.exe

Page 22: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

21

Cygwinターミナル(xterm)で Cプログラムのコンパイルに gccを使う場合:

gcc -D _WIN32 -I "install_dir/c_headers" driver.c

"install_dir/lib/FLDLL234M_mkl.lib" -o driver.exe

または,

gcc -D _WIN32 -I "install_dir/c_headers" driver.c

"install_dir/lib/FLDLL234M_nag.lib" -o driver.exe

Windowsコマンドプロンプトで C++プログラムのコンパイルに g++を使う場合:

g++ -D _WIN32 -I "install_dir¥c_headers" driver.cpp

"install_dir¥lib¥FLDLL234M_mkl.lib" -o driver.exe

または,

g++ -D _WIN32 -I "install_dir¥c_headers" driver.cpp

"install_dir¥lib¥FLDLL234M_nag.lib" -o driver.exe

Cygwinターミナル(xterm)で C++プログラムのコンパイルに g++を使う場合:

g++ -D _WIN32 -I "install_dir/c_headers" driver.cpp

"install_dir/lib/FLDLL234M_mkl.lib" -o driver.exe

または,

g++ -D _WIN32 -I "install_dir/c_headers" driver.cpp

"install_dir/lib/FLDLL234M_nag.lib" -o driver.exe

以上の情報は Cygwinのディストリビューションに含まれる gcc version 4.3.4で検証さ

れています.

Page 23: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

22

4.1.11. Microsoft Visual Basic for Applications / Excel(32-bit)

本製品で提供されるNAG Fortran Library DLLはExcelスプレッドシートからの利用に

適しています.NAGルーチンは Visual Basic for Applications(VBA)コードから呼び

出されます.(VBA と Visual Basic 6(VB 6)は類似しており,その両方で同じNAG宣

言文が使われます.)

本セクションの情報は 32-bit版の Excelに関するものです.

ExcelからNAG Fortran Library DLL を利用する Exampleが以下のフォルダに提供さ

れます.

install_dir¥samples¥excel_examples

install_dir¥samples¥excel_examples¥linear_algebra フォルダに提供され

る xls_demo.htmlには ExcelスプレッドシートからNAG Fortran Library DLLを利

用する際のヒントが記載されています.またVB6 / VBAからNAG Fortran Library DLL

を呼び出す際の例証として VB 6 の Exampleもご参照ください.

キーとなる情報:

Install_dir¥vb6_headers フォルダの flvb6-<チャプター名>.bas(例えば

flvb6-a.bas)ファイルには VB 6 / VBAで利用できる Declare文がチャプター毎

に定義されています.また flvb6-types.basファイルにはこれらのファイルで利

用 さ れ る 定 数 や ユ ー ザ ー 定 義 型 が 定 義 さ れ て い ま す . ま た

flvb6-f-blaslapack.basファイルにはチャプターFのルーチンが(NAG名では

なく)BLAS/LAPACK名で定義されています.

MKL提供のBLAS/LAPACKを利用するNAG Fortran Library DLLをご利用にな

る場合は,FLDLL234M_nag.dll と宣言されている部分を FLDLL234M_mkl.dll

に置き換えてください.

Declare文のご利用は,ファイルから必要な部分だけをコピーしてご自身のモジュー

ルにペーストするか,もしくはファイルをモジュールとして VBAプロジェクトにイ

ンポートしてください(場合によっては上述の flvb6-types.basも合わせてイン

ポートする必要があります).

Page 24: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

23

Fortranの配列は 1から始まるので,Option Base 1の設定を推奨します.

Variant 型は実際の引数として使用できません.Long,Double,String(および,

ごく稀な場合に Single)が必要です.Option Explicitを使用してください.

LongはFortranの INTEGERに,DoubleはFortranのDOUBLE PRECISIONに,

Singleは Fortranの REALにそれぞれ対応します.

Longは Fortranの LOGICALに対応します(NAGTRUEと NAGFALSE がそれぞ

れ -1と 0に対応します).

構造体 Complexと ComplexSimpleは Fortranの COMPLEX*16と COMPLEXに

それぞれ対応します.

Fortranの配列引数に対しては,VBA配列の最初の要素を指定します.

例えば A(1,1) .

数式は ByVal引数に渡されます.その他の引数はデフォルトでは ByRefです.この

点が明確になるように,ByRef と ByVal は Declare 文の全体を通して明示的に指定

されています.

Fortranの文字引数に対しては,2つの VBA引数が必要となります(ByVal文字引

数と ByVal length-of-string 引数(両方とも Long 型)).length-of-string 引数は文

字引数の直後に置く必要があります.

以上の情報はMicrosoft Office Excel 2003, 2007, 2010で検証されています.

4.1.12. Microsoft Visual Basic 6

Visual Basic 6(VB 6)と Visual Basic for Applications(VBA)は類似しているため,

上記の VBAについての情報は VB 6にも適用されます.特に,配列と文字列の扱いにご

注意ください.

Visual Basic 6から NAG Fortran Library DLLを利用する Exampleが以下のフォルダ

に提供されます.

Page 25: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

24

install_dir¥samples¥vb6_examples

また VB6 / VBA からNAG Fortran Library DLLを呼び出す際の例証として,Excelの

Exampleの内の VBAコードもご参照ください.

キーとなる情報:

Install_dir¥vb6_headers フォルダの flvb6-<チャプター名>.bas(例えば

flvb6-a.bas)ファイルには VB 6 / VBAで利用できる Declare文がチャプター毎

に定義されています.また flvb6-types.basファイルにはこれらのファイルで利

用 さ れ る 定 数 や ユ ー ザ ー 定 義 型 が 定 義 さ れ て い ま す . ま た

flvb6-f-blaslapack.basファイルにはチャプターFのルーチンが(NAG名では

なく)BLAS/LAPACK名で定義されています.

MKL提供のBLAS/LAPACKを利用するNAG Fortran Library DLLをご利用にな

る場合は,FLDLL234M_nag.dll と宣言されている部分を FLDLL234M_mkl.dll

に置き換えてください.

Declare文のご利用は,ファイルから必要な部分だけをコピーしてご自身のモジュー

ルにペーストするか,もしくはファイルをモジュールとして VB 6プロジェクトにイ

ンポートしてください(場合によっては上述の flvb6-types.basも合わせてイン

ポートする必要があります).

Fortranの配列は 1から始まるので,Option Base 1の設定を推奨します.

Variant 型は実際の引数として使用できません.Long,Double,String(および,

ごく稀な場合に Single)が必要です.Option Explicitを使用してください.

LongはFortranの INTEGERに,DoubleはFortranのDOUBLE PRECISIONに,

Singleは Fortranの REALにそれぞれ対応します.

Longは Fortranの LOGICALに対応します(NAGTRUEと NAGFALSE がそれぞ

れ -1と 0に対応します).

構造体 Complexと ComplexSimpleは Fortranの COMPLEX*16 と COMPLEXに

それぞれ対応します.

Page 26: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

25

Fortranの配列引数に対しては,VB 6配列の最初の要素を指定します.

例えば A(1,1) .

数式は ByVal引数に渡されます.その他の引数はデフォルトでは ByRefです.この

点が明確になるように,ByRef と ByVal は Declare 文の全体を通して明示的に指定

されています.

Fortranの文字引数に対しては,2つの VB 6引数が必要となります(ByVal文字引

数と ByVal length-of-string 引数(両方とも Long 型)).length-of-string 引数は文

字引数の直後に置く必要があります.

以上の情報はMicrosoft Visual Basic 6.0で検証されています.

4.1.13. Microsoft Visual Basic .NET

NAGライブラリルーチンの多くは Visual Basic .NET(VB.NET)から呼び出すことが

できます.VB.NETからNAG Fortran Library DLLを利用する Exampleが以下のフォ

ルダに提供されます.

install_dir¥samples¥vb.net_examples

(これらの Exampleは Visual Studio .NET 2003で生成されています.Visual Studio

2005以降でロードした場合は,ソリューションとプロジェクトファイルは Visual Studio

変換ウィザードでコンバートされます.)

キーとなる情報:

Install_dir¥vb.net_headers¥flvbdnet.vbファイルに VB.NETで利用でき

Declare文が定義されています.

MKL提供のBLAS/LAPACKを利用するNAG Fortran Library DLLをご利用にな

る場合は,FLDLL234M_nag.dll と宣言されている部分を FLDLL234M_mkl.dll

に置き換えてください.

Page 27: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

26

Declare文のご利用は,ファイルから必要な部分だけをコピーしてご自身のモジュー

ルにペーストするか,もしくはファイルをモジュールとして VB.NET プロジェクト

にインポートしてください.

提供される VB.NETヘッダファイルは以前のバージョン(Mark 22)とは異なりま

すので注意してください(特に,配列の渡し方).

Fortran配列は 1から始まりますが,VB.NET配列は 0から始まります.

型のマッピングは VB 6 の場合とは異なります.Integer は Fortran の INTEGER

に,Double は Fortran の DOUBLE PRECISION に,Single は Fortran の REAL

にそれぞれ対応します.

Integerは Fortranの LOGICALに対応します(NAGTRUEとNAGFALSE がそれ

ぞれ -1と 0に対応します).

構造体 Complexと ComplexSimpleは Fortranの COMPLEX*16 と COMPLEXに

それぞれ対応します.

全てのスカラー値は参照渡し(ByRef)です.VB.NET はデフォルトでは値渡し

(ByVal)なので,参照渡し(ByRef)を明示的に指定する必要があります.この点

が明確になるように,ByRef と ByVal は Declare 文の全体を通して明示的に指定さ

れています.

配列引数には配列名を渡してください.(以前のバージョン(Mark 22)や VB 6の

ように配列の最初の要素ではありません).全ての配列は値渡し(ByVal)です.ま

た宣言には Fortran 側の用途(入力,出力,入出力)によって<[In]()>,<Out()>,

<[In](),Out()> のいずれかの decorationが付加されています.具体例として,

various_routines ExampleのG02EEFE() Subプロシージャをご参照ください.

VB.NETではコールバック関数における配列は値渡しされた IntPtrによって表現さ

れます.具体例として,d02ejf_exampleのコードをご参照ください.

VB.NET配列は行優先です.VB 6や Fortranのように列優先ではありません.この

ため Fortranルーチンが正しく配列を解釈するためには配列の転置が必要です.

Page 28: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

27

配列の格納形式が異なるため,Fortranルーチンの Leading Dimensionは VB.NET

配列の第二次元に対応します.例えば,VB.NETの A(2,3) では Leading Dimension

として 4(配列は 0から始まるため)を渡します.

Fortran側で CHARACTER*型(例えば CHARACTER*(*)または CHARACTER*1)

のスカラー引数が求められる場合は,文字列をVB.NETのStringで渡してください.

そして,その String引数の直後に文字列の長さを Integerで渡してください.

Fortran 側で CHARACTER*型の配列引数が求められる場合は,VB.NET の一つの

Stringに全ての配列要素を結合したものを渡してください.そして,その String引

数の直後に配列の一つの要素の長さを Integerで渡してください.具体例として,

various_routine ExampleのM01CCFE() Subプロシージャをご参照ください.

Fortran側でコールバック関数が求められる場合は,VB.NETで interfaceの宣言と

して Delegate functionを定義する必要があります.引数はその Delegate function

型で値として渡してください.Delegate functionの実装を引数として渡す際には,

キーワード AddressOf を利用してください.具体例として,d01bdf_example の

コードまたは various_routines Exampleの D01BDFE() Subプロシージャをご

参照ください.

これらの宣言を VB.NETに認識させるために,VB.NETソースコードの一番上には

以下の行が必要です.

Imports System.Runtime.InteropServices

以上の情報は Visual Studio .NET 2003, 2005, 2008, 2010 で検証されています.

もし 64-bit システムで実行する場合は,BadImageFormatException を避けるために,

ターゲット CPUを x86に設定する必要があります.

Page 29: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

28

4.1.14. C#

C#からの NAG Fortran Library DLL のご利用方法については,以下のウェブサイトを

ご参照ください.

http://www.nag.co.uk/numeric/csharpinfo.asp

また .NET用のNAGライブラリ(NAG Library for .NET)も製品提供しております.

詳細は以下のウェブサイトをご参照ください.

http://www.nag.co.uk/microsoft_dotnet.asp

4.1.15. Java

Javaからの NAG C Library DLLおよびNAG Fortran Library DLL のご利用方法につ

いては,以下のウェブサイトをご参照ください.

http://www.nag.co.uk/doc/TechRep/html/Tr2_09/Tr2_09.asp

4.1.16. Python

F2PYを使用した Pythonからの NAG Fortran Library DLLのご利用方法については,

以下の PDFファイルをご参照ください.

http://www.nag.co.uk/doc/TechRep/pdf/TR1_08.pdf

4.1.17. R

Rからの NAG Fortran Library DLLのご利用方法については,以下のウェブサイトをご

参照ください.

http://www.nag.co.uk/numeric/RunderWindows.asp

Page 30: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

29

4.1.18. Simfit - NAG Library editon

Simfit - NAG Library editionはNAG Fortran Library DLLをアルゴリズムソースとし

て採用しています.詳細は以下のウェブサイトをご参照ください.

http://www.nag.co.uk/educationuk/simfit.asp

4.1.19. その他の環境

その他の環境からの NAG Fortran Library DLLのご利用方法については,以下のリリー

ス後の最新情報ページをご参照いただくか,もしくは日本 NAGまでお問い合せください.

http://www.nag.co.uk/doc/inun/fl23/dll4ml/postrelease.html

Page 31: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

30

4.2. アクセスチェック

診断プログラム NAG_Fortran_DLL_info.exe を用いて,ご利用のマシン環境から

NAG Fortran Library DLL(FLDLL234M_nag.dllおよび FLDLL234M_mkl.dll)に

アクセスができるかどうかを確認することができます.診断プログラムは以下の「スタ

ート」メニューのショートカットから実行することができます.

すべてのプログラム|NAG|FL23|

NAG Fortran Library for Win32 Applications (FLDLL234ML)|

Check NAG DLL Accessibility (FLDLL234ML)

診断プログラムの詳細はインストールノートの「4.2.3. アクセスチェック」をご参照く

ださい.

4.3. インターフェースブロック

NAG Fortran Libraryインターフェースブロック(引用仕様宣言)はライブラリルーチ

ンの型と引数を定義します.FortranプログラムからNAG Fortran Libraryを呼び出す

際に必ず必要という性質のものではありませんが,これを用いることで NAG Fortran

Library が正しく呼び出されているかどうかのチェックを Fortran コンパイラに任せる

事ができます.具体的にはコンパイラが以下のチェックを行うことを可能とします.

(a) サブルーチン呼び出しの整合性

(b) 関数宣言の型

(c) 引数の数

(d) 引数の型

これらのインターフェースブロックはNAG Fortran Libraryのソースコードから自動的

に生成されているため信頼性があります.

NAG Fortran Libraryインターフェースブロックファイルは,チャプター毎のモジュー

ルとして提供されます.以下にモジュール名を示します.

nag_precisions

nag_blas_consts

nag_a_ib

Page 32: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

31

nag_c_ib

nag_d_ib

nag_e_ib

nag_f_ib

nag_g_ib

nag_h_ib

nag_m_ib

nag_p_ib

nag_s_ib

nag_x_ib

nag_long_names

これらをまとめて一つにしたモジュールも提供されます.

nag_library

NAG ライブラリルーチンを使用するプログラムは,(そのルーチンが含まれる)特定の

チャプターのモジュール(例えば nag_s_lib)もしくは全てのチャプターを含むモジュ

ール(nag_library)を利用することができます.

これらのモジュールは Intel Fortranコンパイラ(ifort)を用いてプリコンパイルされ

た形式(*.modファイル)で提供されます.

Intel Fortranコンパイラ(ifort)を用いる際,ライブラリコマンドプロンプト(スタ

ートメニューのショートカットとして提供される)を利用する場合もしくはバッチファ

イル envvars.batを実行して環境変数の設定を行った場合は,環境変数 INCLUDEがあ

らかじめ設定されるため,「4.1.1.1. コマンドウィンドウ」で示される方法でこれらのモ

ジュールにアクセスすることができます.

Intel Fortranコンパイラ(ifort)以外の FortranコンパイラでこれらのNAGモジュ

ールを利用する場合は,ご利用の Fortran コンパイラでインターフェースブロックを再

コンパイルする必要があります.

Page 33: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

32

任意の名前でフォルダを作成し(例えば NAG Fortranコンパイラ(nagfor)を利用す

るのであれば nag_interface_blocks_nagforなど),nag_interface_blocksフ

ォルダから全ての .f90 ファイルをそのフォルダにコピーしてください.そして,全て

の .f90 ファイルをご利用の Fortran コンパイラでコンパイルしてください.その際,

インターフェースブロックには依存関係があるため,コンパイルの順序が重要となりま

す.以下に示す順序でコンパイルを行ってください.

(以下は例としてNAG Fortranコンパイラ(nagfor)を利用しています.)

nagfor -f77 -c nag_precisions.f90

nagfor -f77 -c nag_blas_consts.f90

nagfor -f77 -c nag_a_ib.f90

nagfor -f77 -c nag_c_ib.f90

nagfor -f77 -c nag_d_ib.f90

nagfor -f77 -c nag_e_ib.f90

nagfor -f77 -c nag_f_ib.f90

nagfor -f77 -c nag_g_ib.f90

nagfor -f77 -c nag_h_ib.f90

nagfor -f77 -c nag_m_ib.f90

nagfor -f77 -c nag_p_ib.f90

nagfor -f77 -c nag_s_ib.f90

nagfor -f77 -c nag_x_ib.f90

nagfor -f77 -c nag_long_names.f90

nagfor -f77 -c nag_library.f90

(ここで -f77は STDCALL呼び出し規約の使用を指示するコンパイラオプションです.

他のコンパイラでは他のオプションが必要となるかもしれません.)

コンパイルによって生成されるオブジェクトファイルは必要ありません.モジュールフ

ァイル(*.mod)のみが必要となります.

新しく生成されたモジュールファイルを利用するためには,モジュールファイルが存在

するフォルダをコンパイル時に与える必要があります.

例えば,NAG Fortranコンパイラ(nagfor)では以下のようなコマンドになります.

例)

nagfor –f77 –I nag_interface_blocks_nagfor

Page 34: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

33

4.4. Exampleプログラム

提供される Example結果は,インストールノートの「2.2. 開発環境」に記載されている

環境で生成されています.Example プログラムの実行結果は,異なる環境下(例えば,

異なるFortranコンパイラ,異なるコンパイラライブラリ,異なるBLASまたはLAPACK

ルーチンなど)で若干異なる場合があります.そのような違いが顕著な計算結果として

は,固有ベクトル(スカラー(多くの場合 -1 )倍の違い),反復回数や関数評価,残差

(その他マシン精度と同じくらい小さい量)などがあげられます.

Example プログラムは本ライブラリが想定する稼働環境に適した状態で提供されます.

そのため,ライブラリマニュアルに記載/提供されているExampleプログラムに比べて,

その内容が若干異なる場合があります.

Exampleプログラムは以下のバッチファイルを用いて簡単に利用することができます.

(これらのバッチファイルは環境変数 NAG_FLDLL234MLを参照します.)

nag_example_mkl.bat

NAG DLLインポートライブラリ FLDLL234M_mkl.libをリンクします.

実行は FLDLL234M_mkl.dllと本製品で提供されるMKLを利用します.

nag_example.bat

NAG DLLインポートライブラリ FLDLL234M_nag.libをリンクします.

実行は FLDLL234M_nag.dllを利用します.

インストーラは「スタート」メニューに以下のショートカットを作成します.

すべてのプログラム|NAG|FL23|

NAG Fortran Library for Win32 Applications (FLDLL234ML)|

FLDLL234ML Command Prompt

このショートカットは必要な環境変数(NAG_FLDLL234MLを含む)を設定した上でコマ

ンドプロンプトを開きます.

このショートカットを利用しない場合には,環境変数の設定を手動で行う必要がありま

す.環境変数の設定はバッチファイル envvars.bat を用いて行うことができます.こ

のバッチファイルのデフォルトの格納位置を以下に示します.

Page 35: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

34

c:¥Program Files¥NAG¥FL23¥fldll234ml¥batch¥envvars.bat

これらのバッチファイルは,カレントディレクトリに Exampleプログラムのソースファ

イル(必要に応じて,データファイルその他)のコピーを作成して,コンパイル/リン

ク/実行を行います.

ご利用のNAGライブラリルーチンの名前をバッチの引数に指定してください.

例)

nag_example_mkl e04ucf

この例では,カレントフォルダに e04ucfe.f(ソースファイル),e04ucfe.d(データ

ファイル)のコピーを作成して,コンパイル/リンク/実行を行い e04ucfe.r(結果フ

ァイル)を生成します.

提供される Example 結果は FLDLL234M_mkl.dll(MKL 提供の BLAS/LAPACK ル

ーチンを使用)を用いて算出されています.FLDLL234M_nag.dll(NAG提供の BLAS

/LAPACKルーチンを使用)を用いた場合は,結果が若干異なるかもしれません.

4.5. Fortran型と強調斜体文字の解釈

ライブラリとライブラリマニュアルでは浮動小数点変数を以下のようにパラメータ化さ

れた型を用いて記述しています.

REAL(KIND=nag_wp)

ここで nag_wp は Fortran の種別パラメータを表しています.nag_wp の値はライブラ

リ製品によって異なっており,その値は nag_libraryモジュールに定義されています.

これに加え,いくつかのルーチンで以下の型が使用されます.

REAL(KIND=nag_rp)

これらの型の使用例については各種 Exampleプログラムをご参照ください.

本ライブラリでは,これらの型は以下のような意味を持っています.

Page 36: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

35

REAL (kind=nag_rp) - REAL(単精度実数)

REAL (kind=nag_wp) - DOUBLE PRECISION

COMPLEX (kind=nag_rp) - COMPLEX(単精度複素数)

COMPLEX (kind=nag_wp) - 倍精度複素数(例えば COMPLEX*16)

上記に加え,ライブラリマニュアルでは強調斜体文字を用いていくつかの用語を表現し

ています.

一つ重要なものは machine precisionという表現で,これは double precision浮

動小数が計算機内で格納されている相対精度を意味します.例えば 10 進で約 16 桁の実

装であれば machine precisionは 1.0D-16に近い値を持ちます.

machine precisionの正確な値はルーチン X02AJFを使って確認できます.チャプタ

ーX02 のその他のルーチンを使うと,オーバーフロー用の閾値や表現可能な最大整数と

いった実装異存の定数値を求めることができます.

詳細については X02 Chapter Intoroductionをご参照ください.

brock sizeという表現はチャプターF07と F08の中でのみ使用されています.それは

これらのチャプターにおけるブロックアルゴリズムによって用いられているブロックサ

イズを表すものです.用意すべき作業エリアの量に影響が及ぶ場合にのみ,この値に留

意する必要があります.関係する Routine Documentと Chapter Intoroduction に記述

されているパラメータWORKと LWORKについてご参照ください.

4.6. NAGルーチンからの出力

いくつかのルーチンは,エラーメッセージやアドバイスメッセージを出力します.出力

装置番号は X04AAF(エラーメッセージの場合)または X04ABF(アドバイスメッセー

ジの場合)で再設定する事が可能です.デフォルト値は「5. ルーチン固有の情報」をご

参照ください.これらのメッセージの最大レコード長(コントロール文字などを含む)

は特に指定がない場合は 80文字です.

Page 37: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

36

5. ルーチン固有の情報

本ライブラリルーチン固有の情報を(チャプター毎に)以下に示します.

a. F06, F07, F08

チャプターF06, F07, F08においてはBLASと LAPACK由来のルーチンに対し別個のル

ーチン名が用意されています.これらの名称については関係するチャプターイントロダ

クションをご参照ください.パフォーマンス面を考えますと,NAGスタイルの名前より

も BLAS/LAPACKスタイルの名前でルーチンを使用してください.

多くの LAPACKルーチンは「workspace query」メカニズムを利用します.ルーチン呼

び出し側にどれだけのワークスペースが必要であるかを聞くメカニズムですが,NAG提

供の LAPACKとMKL提供の LAPACKではこのワークスペースサイズが異なる場合が

ありますので注意してください.

FLDLL234M_mkl.libでは,ベンダー提供の BLAS/LAPACKの問題を回避する為に,

以下の BLAS/LAPACKルーチンについては NAG提供のものが含まれています(呼び

出されます).

DBDSQR DGEBAL DGEESX DGEEVX DGEHRD

DGGESX DHSEQR ZBDSQR ZGEBAL ZGEEVX

ZHPEVD ZHSEQR ZTRSEN ZTRSV

b. G02

このチャプターで出てくる ACCの値(マシン依存の定数)は 1.0D-13です.

c. P01

エラー(hard failure)の際 P01ABFはエラーメッセージを X04AAFで指定される装置

番号へ出力し,停止します.

Page 38: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

37

d. S07 – S21

このチャプターの関数は,不正な引数で呼び出された場合にエラーメッセージを出力し

ます.ライブラリマニュアルに記載されている定数は,本ライブラリでは以下に示す値

を持ちます.

S07AAF F_1 = 1.0E+13

F_2 = 1.0E-14

S10AAF E_1 = 1.8715E+1

S10ABF E_1 = 7.080E+2

S10ACF E_1 = 7.080E+2

S13AAF x_hi = 7.083E+2

S13ACF x_hi = 1.0E+16

S13ADF x_hi = 1.0E+17

S14AAF IFAIL = 1 if X > 1.70E+2

IFAIL = 2 if X < -1.70E+2

IFAIL = 3 if abs(X) < 2.23E-308

S14ABF IFAIL = 2 if X > x_big = 2.55E+305

S15ADF x_hi = 2.65E+1

S15AEF x_hi = 2.65E+1

S15AFF underflow trap was necessary

S15AGF IFAIL = 1 if X >= 2.53E+307

IFAIL = 2 if 4.74E+7 <= X < 2.53E+307

IFAIL = 3 if X < -2.66E+1

S17ACF IFAIL = 1 if X > 1.0E+16

S17ADF IFAIL = 1 if X > 1.0E+16

IFAIL = 3 if 0 < X <= 2.23E-308

S17AEF IFAIL = 1 if abs(X) > 1.0E+16

S17AFF IFAIL = 1 if abs(X) > 1.0E+16

S17AGF IFAIL = 1 if X > 1.038E+2

IFAIL = 2 if X < -5.7E+10

Page 39: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

38

S17AHF IFAIL = 1 if X > 1.041E+2

IFAIL = 2 if X < -5.7E+10

S17AJF IFAIL = 1 if X > 1.041E+2

IFAIL = 2 if X < -1.9E+9

S17AKF IFAIL = 1 if X > 1.041E+2

IFAIL = 2 if X < -1.9E+9

S17DCF IFAIL = 2 if abs(Z) < 3.92223E-305

IFAIL = 4 if abs(Z) or FNU+N-1 > 3.27679E+4

IFAIL = 5 if abs(Z) or FNU+N-1 > 1.07374E+9

S17DEF IFAIL = 2 if Im(Z) > 7.00921E+2

IFAIL = 3 if abs(Z) or FNU+N-1 > 3.27679E+4

IFAIL = 4 if abs(Z) or FNU+N-1 > 1.07374E+9

S17DGF IFAIL = 3 if abs(Z) > 1.02399E+3

IFAIL = 4 if abs(Z) > 1.04857E+6

S17DHF IFAIL = 3 if abs(Z) > 1.02399E+3

IFAIL = 4 if abs(Z) > 1.04857E+6

S17DLF IFAIL = 2 if abs(Z) < 3.92223E-305

IFAIL = 4 if abs(Z) or FNU+N-1 > 3.27679E+4

IFAIL = 5 if abs(Z) or FNU+N-1 > 1.07374E+9

S18ADF IFAIL = 2 if 0 < X <= 2.23E-308

S18AEF IFAIL = 1 if abs(X) > 7.116E+2

S18AFF IFAIL = 1 if abs(X) > 7.116E+2

S18DCF IFAIL = 2 if abs(Z) < 3.92223E-305

IFAIL = 4 if abs(Z) or FNU+N-1 > 3.27679E+4

IFAIL = 5 if abs(Z) or FNU+N-1 > 1.07374E+9

S18DEF IFAIL = 2 if Re(Z) > 7.00921E+2

IFAIL = 3 if abs(Z) or FNU+N-1 > 3.27679E+4

IFAIL = 4 if abs(Z) or FNU+N-1 > 1.07374E+9

S19AAF IFAIL = 1 if abs(X) >= 5.04818E+1

S19ABF IFAIL = 1 if abs(X) >= 5.04818E+1

S19ACF IFAIL = 1 if X > 9.9726E+2

S19ADF IFAIL = 1 if X > 9.9726E+2

S21BCF IFAIL = 3 if an argument < 1.583E-205

Page 40: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

39

IFAIL = 4 if an argument >= 3.765E+202

S21BDF IFAIL = 3 if an argument < 2.813E-103

IFAIL = 4 if an argument >= 1.407E+102

e. X01

数学定数は以下のとおりです.

X01AAF (pi) = 3.1415926535897932

X01ABF (gamma) = 0.5772156649015328

f. X02

マシン定数は以下のとおりです.

浮動小数点演算の基本的なパラメータ:

X02BHF = 2

X02BJF = 53

X02BKF = -1021

X02BLF = 1024

X02DJF = .TRUE.

浮動小数点演算の派生的なパラメータ:

X02AJF = 1.11022302462516E-16

X02AKF = 2.22507385850721E-308

X02ALF = 1.79769313486231E+308

X02AMF = 2.22507385850721E-308

X02ANF = 4.45014771701441E-308

その他コンピュータ環境のパラメータ:

X02AHF = 1.42724769270596E+45

X02BBF = 2147483647

X02BEF = 15

X02DAF = .TRUE.

Page 41: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

40

g. X03

X03AAWと X03AAXは内部ルーチンですが NAG Fortran Library DLLから Exportさ

れています.これはExcelなどの環境からNAG Fortran Library DLLを利用する場合に,

これらの内部ルーチンが有効に活用できるからです.

X03AAWは浮動小数点制御ワードを変更して有効制度を double precision(53-bit仮数)

に設定し,丸めモードを最近接丸めに変更します.X03AAWは1つの INTEGER引数を

取ります.これは入力時に浮動小数点制御ワードを持ち,出力時に値を呼び出し側へ返

します.そのため,このルーチンで現在の値を取得することができます.

X03AAXは浮動小数点制御ワードを1つの INTEGER 引数に指定します.このルーチン

は通常 X03AAWで変更された浮動小数点制御ワードを元に戻す際に使用されますが,異

なる値を設定するために利用することも可能です.

本ライブラリは double precision(53-bit)モードで動作するように設計されていますが,

チップがサポートする extended precision モードで動作するようには設計されていませ

ん.通常の Intel Fortranプログラムは double precisionモードで動作しますが,他の環

境では浮動小数点制御ワードが extended precision モードに変更されて動作します.

Excelは extended precision モードで動作するソフトウェアの1つです.従って,結果の

整合性を求める場合に,X03AAW を他の NAG ライブラリルーチンを呼び出す前に呼び

double precisionで計算が行われるように指定することができます.

h. X04

エラーメッセージおよびアドバイスメッセージのデフォルトの出力先装置番号は 6 番と

なります.

Page 42: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

41

6. ドキュメント

ライブラリマニュアルは本製品の一部として提供されます.

またNAGのウェブサイトからダウンロードすることもできます.

ライブラリマニュアルの最新版は以下のウェブサイトをご参照ください.

http://www.nag.co.uk/numeric/FL/FLdocumentation.asp

ライブラリマニュアルは以下の形式で提供されます.

XHTML + MathML

PDF(PDFまたは HTML形式の目次ファイルからご利用ください.)

メインの目次ファイルが以下の形式で提供されます.

nagdoc_fl23¥xhtml¥FRONTMATTER¥manconts.xml

nagdoc_fl23¥pdf¥FRONTMATTER¥manconts.pdf

nagdoc_fl23¥html¥FRONTMATTER¥manconts.html

ライブラリマニュアルをインストールした場合,これらの目次ファイルは「スタート」

メニューから開くことができます.

すべてのプログラム|NAG|FL23|

NAG Fortran Library Manual (XHTML + MathML)

NAG Fortran Library Manual (PDF)

NAG Fortran Library Manual (PDF + HTML Index)

各形式の閲覧方法および操作方法については Online Documentationをご参照ください.

XHTML/MathML 形式のライブラリマニュアルの閲覧に Internet Explorer を用いる場

合は,Exampleソース/データ/結果ファイルおよび PDFファイルへのリンクはローカ

ルファイルではなく NAG社のウェブサイトに誘導されます.これは Internet Explorer

のセキュリティ制限によって,これらのページの閲覧が行えないためです.他のブラウ

ザをご利用の場合は,ローカルの Exampleおよび PDFファイルへリンクします.

Page 43: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

42

またHTMLヘルプ形式のライブラリマニュアル(nagdoc_fl23.chm)が提供されます.

数式を正しく表示するために Design Science社のMathPlayerプラグインが必要です.

ライブラリマニュアルのインストールの最後で MathPlayer をインストールするかどう

かを選択することができます.またMathPlayerは Design Science社のウェブサイトか

らダウンロードすることができます.

http://www.dessci.com/en/products/mathplayer/download.htm

HTML ヘルプ形式のライブラリマニュアル(nagdoc_fl23.chm)は「スタート」メニ

ューから開くことができます.

すべてのプログラム|NAG|FL23|NAG Fortran Library Manual HTML Help

(HTML ヘルプ形式のライブラリマニュアル(nagdoc_fl23.chm)をネットワークド

ライブからローカルドライブにコピーした場合など)もし「ウェブページのナビゲーシ

ョンは取り消されました」といったメッセージが表示される場合は,Windows または

Internet Explorerのセキュリティアップデートによってファイルがブロックされている

状態です.この場合,まず nagdoc_fl23.chmを右クリックして表示されるポップアッ

プメニューからプロパティを開いてください.次に,プロパティの下の方にある「ブロ

ックの解除」ボタンをクリックしてください.最後に OKボタンをクリックしてプロパテ

ィを閉じてください.

加えて,以下のドキュメントが提供されます.

in.html – インストールノート(英語版)

un.html – ユーザノート(英語版)

ユーザノート(英語版)は「スタート」メニューから開くことができます.

すべてのプログラム|NAG|FL23|

NAG Fortran Library for Win32 Applications (FLDLL234ML)|

Users' Note

Page 44: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

43

7. サポート

(a) ご質問等

保守サービスにご加入いただいているお客様は,電子メール(または電話|FAX)にて

「日本 NAGヘルプデスク」までお問い合わせください.

その際,ご利用の製品の製品コード(FLDLL234ML)および保守 IDを御明記いただきま

すようお願い致します.受付は平日 9:30~12:00,13:00~17:30となります.

日本NAGヘルプデスク

email: [email protected]

Tel: 03-5542-6311

Fax: 03-5542-6312

(b) NAGのウェブサイト

NAGのウェブサイトでは製品およびサービスに関する情報を定期的に更新しています.

http://www.nag-j.co.jp/ (日本)

http://www.nag.co.uk/ (英国本社)

http://www.nag.com/ (米国)

http://www.nag-gc.com/ (台湾)

Page 45: イントロダクション · 2019-10-17 · Fortranコンパイラを用いてビルドされています.それ以外のバージョンのIntel Fortran コンパイラでコンパイルされたプログラムからNAG

44

8. ユーザフィードバック

NAGではユーザ様からのフィードバックをバージョンアップなどに活かして行きたいと

考えています.フィードバックにご協力いただける場合は,下記のコンタクト先にご連

絡ください.

コンタクト先情報

日本ニューメリカルアルゴリズムズグループ株式会社

(略称:日本NAG)

〒104-0032

東京都中央区八丁堀 4-9-9 八丁堀フロンティアビル 2F

email: [email protected]

Tel: 03-5542-6311

Fax: 03-5542-6312

日本ニューメリカルアルゴリズムズグループ株式会社から提供されるサービス内容は,

(お問い合わせ先など)日本国内ユーザ様向けに独自のものとなっています.