# マニュアルページ clibmvec.3m

## 名前

         clibmvec - ベクトル版複素数関数

## 形式

         f77 [ flag ... ] file ...  -lmvec [ library ... ]

         または

         f77 [ flag ... ] file ...  -lmvec_mt [ library ... ]

         subroutine vc_abs(n, a, stridea, r, strider)

         subroutine vc_exp(n, a, stridea, b, strideb, rtmp)

         subroutine vc_log(n, a, stridea, b, strideb)

         subroutine vc_pow(n, a, stridea,  b,  strideb,  c,  stridec,
         rtmp3)

         subroutine vz_abs(n, x, stridex, d, strided)

         subroutine vz_exp(n, x, stridex, y, stridey, dtmp)

         subroutine vz_log(n, x, stridex, y, stridey)

         subroutine vz_pow(n, x, stridex,  y,  stridey,  z,  stridez,
         dtmp3)

         integer n, stridea, strideb, stridec, strider

         integer stridex, stridey, stridez, strided

         complex  a(1+(n-1)*stridea),   b(1+(n-1)*strideb),   c(1+(n-
         1)*stridec)

         real r(1+(n-1)*strider), rtmp(n), rtmp3(3*n)

         complex*16 x(1+(n-1)*stridex),  y(1+(n-1)*stridey),  z(1+(n-
         1)*stridez)

         real*16 d(1+(n-1)*strided), dtmp(n), dtmp3(3*n)

## 機能説明

         これらのルーチンは、値のベクトル全体に対して同時に、共通複素
         数基本関数を評価します。最初のパラメータは計算する値の数を示
         します。後続のパラメータは引数ベクトルと結果ベクトルを指定し
         ます。各ベクトルは、使用される最初の配列要素と刻み幅 (連続す
         る要素間の増分) で記述されます。

         vc_abs(n, a, stridea, r, strider) は、i = 1,2, ..., n のそれ
         ぞ れ に対して、r(1+(i-1)*strider) = abs(a(1+(i-1)*stridea))
         を計算します。出力ベクトルは実数型であることに注意してくださ
         い。

         vc_exp(n,   a,   stridea,    b,    strideb,    rtmp)    は、
         b(1+(i-1)*strideb)  = exp(a(1+(i-1)*stridea)) を計算します。
         rtmp パラメータには、実数型の要素 n 個分を格納できる一時領域
         を指定します。

         vc_log(n, a, stridea, b, strideb)  は  b(1+(i-1)*strideb)  =
         log(a(1+(i-1)*stridea)) を計算します。

         vc_pow(n, a, stridea, b,  strideb,  c,  stridec,  rtmp3)  は
         c(1+(i-1)*stridec)  = a(1+(i-1)*stridea)**b(1+(i-1)*strideb)
         を計算します。rtmp3 パラメータには、実数型の要素 3*n 個分 を
         格納できる一時領域を指定します。

         サブルーチン、vc_abs 、vc_exp、vc_log および vc_pow は上記の
         単精度複素数関数の倍精度複素数版です。

         各関数において、要素数 n はゼロより大きくなければな り ま せ
         ん。 引 数配列と結果配列に対する刻み幅は任意の整数です。しか
         し、引数配列と結果配列の一部またはすべてが重複してはなりませ
         ん。たとえば、vc_log(n, a, 1, a, 1) の呼び出しの結果は正しく
         ありません。刻み幅にはゼロも指定できることに注意してく だ さ
         い。 こ の場合、ベクトル全体が単一の要素に効果的に縮小されま
         す。したがって、たとえば、vc_pow を使用して、b の値 を 固 定
         し、strideb をゼロに設定して、a(i)**b の値を計算できます。最
         後に、刻み幅には負の値も指定できることに注意してください。た
         だし、対応する配列パラメータはベクトル内でアクセスされる最初
         の要素を参照する必要があります。刻み幅が負の場合、これはメモ
         リー内で最も高いアドレスの要素となります (この規約は Level 1
         BLAS とは異なります。Level 1 BLAS では、負の増分を使用する場
         合でも、配列パラメータは常に、メモリー内で最も低いアドレスの
         要素を参照します)。たとえば、b(i) = exp(a(n-i+1)) を設定する
         には、vc_exp(n, a(n), -1, b, 1, rtmp) を呼び出します。

## 属性

         次の属性については、 attributes(5) を参照してください。

        __________________________________
        |  属性タイプ　        | 属性値    |
        |______________________|___________|
        | 使用条件             |  SPROlang |
        | インタフェース安定性 |  開発中   |
        | MT レベル            |  MT-安全  |
        |______________________|___________|

## 関連項目

         libmvec(3M) 、 attributes(5)

## 診断

         ベクトル関数は、例外を IEEE 754 の考え方で扱い、 対 応 す る
         Fortran スカラー関数と本質的には同じ結果を作成します。ベクト
         ル関数によっては、引数配列のすべての要素について数値結果が正
         しい場合でも、不正確な例外を発生することがあります。

## 注意事項

         上記ベクトル関数 は、 2  つ の ラ イ ブ ラ リ  libmvec.a  と
         libmvec_mt.a  で提供されます。後者には、コンパイラが提供する
         自動並列化と連結して動作する、並列化バージョンの関数が入って
         い ま す。 libmvec_mt.a  を 使 用 するには、並列化オプション
         -xparallel、-xexplicitpar、または -xautopar の 1 つとリン ク
         しなければなりません。

         ベクトルおよび並列実行では、 要 素 は  x(1)、 x[1*stridex]、
         x[1+2*stridex]、などの自然な順序で評価する必要はありません。
         そのため、発生する例外も順序通りになるとは限りません。たとえ
         ば、 引 数  exp(x(1))  で オー バー フロー例外が発生し、また
         exp(x(9)) で無効な演算例外が発生する場合は、vc_exp の呼び 出
         しでオーバーフローが最初に発生する保証はありません。