次の関数とサブルーチンは、Fortran 数学ライブラリの一部です。これらの関数とサブルーチンは、f95 でコンパイルしたすべてのプログラムで使用することができます。ルーチンには、引数として特定のデータ型をとり、それと同じデータ型を戻す非組み込み関数があります。非組み込み関数は、これを参照するルーチン内で宣言する必要があります。
こうしたルーチンの大半は、C 言語ライブラリのルーチンに対する Fortran のインタフェースである「ラッパー」であり、したがって、標準の Fortran ではありません。この中には、IEEE 推奨のサポート関数や特殊な乱数発生関数があります。これらのライブラリの詳細については、『数値計算ガイド』やマニュアルページ libm_single(3F)、libm_double(3F)、libm_quadruple(3F) を参照してください。
これらの副プログラムは、単精度の数学関数およびサブルーチンです。
通常、次に示す数学単精度関数にアクセスする関数は、Fortran 規格の総称組み込み関数とは対応していません。データ型は通常の型決定規則によって決定されます。
デフォルトの型宣言を保持しているかぎり、REAL 文でこれらの関数の型を明示的に指定する必要はありません。r で始まる名前は REAL 型、i で始まる名前は INTEGER 型になります。
これらのルーチンの詳細については、C 数学ライブラリのマニュアルページ (3M) を参照してください。たとえば、r_acos(x) の場合は、マニュアルページの acos(3M) を参照します。
表 1–2 数学単精度関数| 関数名 | 結果の型 | 説明 | 
|---|---|---|
| REAL REAL REAL REAL REAL | -- -- -- | |
| REAL REAL REAL REAL REAL | 逆正接 -- 逆双曲正接 -- -- | |
| REAL REAL REAL REAL REAL | -- -- -- | |
| REAL REAL REAL | -- -- | |
| REAL REAL REAL | -- | |
| REAL REAL REAL REAL REAL | 余弦 -- -- -- | |
| REAL REAL | -- | |
| REAL REAL REAL REAL | -- | |
| REAL REAL REAL | -- | |
| INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER | -- -- -- -- -- -- -- -- -- -- | |
| REAL サブルーチン REAL サブルーチン サブルーチン | ||
| REAL REAL REAL REAL | -- -- -- | |
| REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL REAL | 
 | |
| REAL REAL REAL REAL REAL | -- 双曲正弦 -- -- | |
| サブルーチン サブルーチン サブルーチン サブルーチン | 正弦と余弦 -- -- -- | |
| REAL REAL REAL REAL REAL | -- -- -- | |
| REAL REAL REAL | -- -- | 
変数 c、l、p、s、u、x、y は、REAL 型です。変数 n は INTEGER 型です。
IMPLICIT 文が有効で、r で始まる名前を別のデータ型に対して指定する場合、これらの関数を REAL として明示的に指定します。
sind(x) や asind(x) などでは、ラジアンではなく度が使用されます。
参照: intro(3M)、『数値計算ガイド』
次の副プログラムは、倍精度の数学関数およびサブルーチンです。
通常、これらの関数は Fortran 規格の総称的な組み込み関数とは対応していません。データ型は、通常のデータ型決定規則によって決定されます。
これらの DOUBLE PRECISION 関数は DOUBLE PRECISION 文に指定する必要があります。
詳細については、C ライブラリのマニュアルページを参照してください。d_acos(x) のマニュアルページは acos(3M) です。
表 1–3 数学倍精度関数| 関数名 | 結果の型 | 説明 | 
|---|---|---|
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 逆余弦 -- -- -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 逆正接 -- -- -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 逆正弦 -- 逆双曲正弦 -- -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 逆正接 -- -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 立方根 小数点以下切り上げ -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 余弦 -- 双曲余弦 -- -- | |
| DOUBLE PRECISION DOUBLE PRECISION | 誤差関数 -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 小数点以下切り捨て 斜辺 -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | -- -- | |
| INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER | 
 | |
| DOUBLE PRECISION サブルーチン DOUBLE PRECISION サブルーチン サブルーチン | 乱数発生関数 | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | ガンマの対数 -- -- -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 
 | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 正弦 -- 双曲正弦 -- -- | |
| サブルーチン サブルーチン サブルーチン サブルーチン | 正弦と余弦 -- -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | 正接 -- -- -- | |
| DOUBLE PRECISION DOUBLE PRECISION DOUBLE PRECISION | -- -- | 
変数 c、l、p、s、u、x、y は、DOUBLE PRECISION 型です。変数 n は INTEGER 型です。
DOUBLE PRECISION 文に、または適当な IMPLICIT 文でこれらの関数の型を明示的に指定します。
sind(x) や asind(x) などでは、ラジアンではなく度が使用されます。
参照: intro(3M)、『数値計算ガイド』
これらの副プログラムは、4 倍精度 (REAL*16) の数学関数およびサブルーチンです。
通常、これらの関数は標準の総称組み込み関数とは対応していません。データ型は通常の型決定規則によって決定されます。
4 倍精度関数は REAL*16 文に指定してください。
表 1–4 4 倍精度 libm 関数| 関数名 | 結果の型 | 
|---|---|
| REAL*16 REAL*16 REAL*16 REAL*16 | |
| INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER INTEGER | |
| REAL*16 REAL*16 REAL*16 REAL*16 REAL*16 REAL*16 REAL*16 REAL*16 REAL*16 | 
変数 c、l、p、s、u、 x、y は 4 倍精度です。変数 n は INTEGER 型です。
REAL*16 文または適当な IMPLICIT 文でこれらの関数の型を明示的に指定します。
sind(x) や asind(x) などでは、ラジアンではなく度が使用されます。
そのほかの 4 倍精度 libm 関数を使用する必要がある場合、その呼び出しの前に $PRAGMA C <関数名> を使用してください。詳細については、『Fortran プログラミングガイド』の「C と Fortran のインタフェース」の章を参照してください。