次の関数とサブルーチンは、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 のインタフェース」の章を参照してください。