Sun Studio 12: Fortran ライブラリ・リファレンス

2.3 非標準の Fortran 95 組み込み関数

次に挙げる関数は f95 コンパイラにより組み込み関数と見なされますが、Fortran 95 規格の一部ではありません。

2.3.1 基本線形代数関数 (BLAS)

-xknown_lib=blas でコンパイルすると、コンパイラは続くルーチンへの呼び出しを組み込みルーチンと認識し、最適化を行い、Sun Performance Library 実装へリンクします。コンパイラはこれらのルーチンのユーザー供給バージョンを無視します。

表 2–2 BLAS 組み込み関数

関数 

説明 

CAXPY

DAXPY

SAXPY

ZAXPY

スカラーの積およびベクトルプラスベクトル 

CCOPY

DCOPY

SCOPY

ZCOPY

ベクトルをコピー 

CDOTC

CDOTU

DDOT

SDOT

ZDOTC

ZDOTU

ドット積 (内部積) 

CSCAL

DSCAL

SSCAL

ZSCAL

ベクトルを伸縮 

これらのルーチンの詳細については、『Sun Performance Library User's Guide』を参照してください。

2.3.2 区間演算組み込み関数

次の表に、区間演算 (-xia) のコンパイル時に、コンパイラによって認識される組み込み関数を示します。詳細については、『Fortran 95 区間演算プログラミングリファレンス』を参照してください。

DINTERVAL

DIVIX

INF

INTERVAL

ISEMPTY

MAG

MID

MIG

NDIGITS

QINTERVAL

SINTERVAL

SUP

VDABS

VDACOS

VDASIN

VDATAN

VDATAN2

VDCEILING

VDCOS

VDCOSH

VDEXP

VDFLOOR

VDINF

VDINT

VDISEMPTY

VDLOG

VDLOG10

VDMAG

VDMID

VDMIG

VDMOD

VDNINT

VDSIGN

VDSIN

VDSINH

VDSQRT

VDSUP

VDTAN

VDTANH

VDWID

VQABS

VQCEILING

VQFLOOR

VQINF

VQINT

VQISEMPTY

VQMAG

VQMID

VQMIG

VQNINT

VQSUP

VQWID

VSABS

VSACOS

VSASIN

VSATAN

VSATAN2

VSCEILING

VSCOS

VSCOSH

VSEXP

VSFLOOR

VSINF

VSINT

VSISEMPTY

VSLOG

VSLOG10

VSMAG

VSMID

VSMIG

VSMOD

VSNINT

VSSIGN

VSSIN

VSSINH

VSSQRT

VSSUP

VSTAN

VSTANH

VSWID

WID

 

 

 

2.3.3 その他のベンダーの組み込み関数

f95 コンパイラは、Cray Research, Inc. などのほかのベンダーの Fortran コンパイラで定義された従来のさまざまな組み込み関数を認識します。これらは使用することはできません。

表 2–3 Cray CF90 およびほかのコンパイラの組み込み関数

関数 

引数 

説明 

CLOC

([C=]c) 

文字オブジェクトのアドレスを取得 

COMPL

([I=]i) 

単語のビットごとの補数。代わりに NOT(i) を使用 

COT

([X=]x) 

総称余接 (次も同様: DCOT、QCOT) 

CSMG

([I=]i,[J=]j,[K=]k) 

条件付スカラーマージ 

DSHIFTL

([I=]i,[J=]j,[K=]k) 

i と j を k ビット、倍オブジェクト左シフト 

DSHIFTR

([I=]i,[J=]j,[K=]k) 

i と j を k ビット、倍オブジェクト右シフト 

EQV

([I=]i,[J=]j) 

論理等価。代わりに IOER(i,j) を使用 

FCD

([I=]i,[J=]j) 

文字ポインタを構築 

GETPOS

([I=]i) 

ファイル位置を取得 

IBCHNG

([I=]i, [POS=]j) 

単語の中で指定のビットへ変更する総称関数 

ISHA

([I=]i, [SHIFT=]j) 

総称演算シフト 

ISHC

([I=]i, [SHIFT=]j) 

総称循環シフト 

ISHL

([I=]i, [SHIFT=]j) 

総称左シフト 

LEADZ

([I=]i) 

先頭の 0 ビットの数をカウント 

LENGTH

([I=]i) 

転送された Cray 単語の数を戻す 

LOC

([I=]i) 

変数のアドレスを戻す (「1.4.32 loc: オブジェクトのアドレスを戻す」を参照)

NEQV

([I=]i,[J=]j) 

論理非等価。代わりに IOER(i,j) を使用 

POPCNT

([I=]i) 

1 に設定されたビットの数をカウント 

POPPAR

([I=]i) 

ビット生成パリティを演算 

SHIFT

([I=]i,[J=]j) 

左循環をシフト。代わりに ISHFT(i,j) または ISHFTC(i,j,k) を使用。 

SHIFTA

([I=]i,[J=]j) 

符号拡張子付きの演算シフト 

SHIFTL

([I=]i,[J=]j) 

ゼロ充填で左シフト。代わりに ISHFT(i,j) または ISHFTC(i,j,k) を使用。 

SHIFTR

([I=]i,[J=]j) 

ゼロ充填で右シフト。代わりに ISHFT(i,j) または ISHFTC(i,j,k) を使用。 

TIMEF

() 

最初の呼び出し以降の経過時間を戻す 

UNIT

([I=]i) 

BUFFERIN または BUFFEROUT の状態を戻す 

XOR

([I=]i,[J=]j) 

排他的論理和。代わりに IOER(i,j) を使用 

VMS FORTRAN 77 組み込み関数のリストについては、「2.3.4.2 メモリー関数」 も参照してください。

2.3.4 その他の拡張子

Fortran 95 コンパイラは、次の組み込み関数を認識します。

2.3.4.1 MPI_SIZEOF

MPI_SIZEOF( x, size, error)

指定された変数、x のマシン表現のサイズをバイトで戻します。x が配列の場合、底要素のサイズを戻し、配列全体のサイズは戻しません。

入力、変数または任意の型の配列 

size

出力、整数、x のバイト数でのサイズ

error

出力、整数、エラーが検出されるとエラーコードへ設定、検出されない場合はゼロ 

2.3.4.2 メモリー関数

メモリー割り当て、再割り当て、割り当て解除関数 malloc()realloc()free()f95 組み込み関数として実装されます。詳細については、「1.4.35 mallocmalloc64 reallocfree: 記憶領域の割り当て/再割り当て/割り当て解除」を参照してください。