表B.102 表:ワークアイテム・グループ関数
関数 | 解説 |
uint get_work_dim() | 指定した次元数を返します。 次元数はclEnqueueND RangeKernelのwork_dim 引数で指定したものです。 clEnqueueTaskの場合は、 常に1を返します。 |
size_t get_global_ size(uint dimindx) | dimindexで指定した次 元のグローバル・ワーク アイテム(work item) の数を返します。clEnqueue NDRangeKernelの global_work_size引数で 指定したものが該当します。 dimindexの指定可能値は 0〜get_work_dim()-1で、 これ以外の値については1を 返します。 |
size_t get_ global_id(uint dimindx) | dimindexで指定した 次元で固有のグローバル・ ワークアイテム(work item)IDを返します。 |
size_t get_local_ size(uint dimindx) | dimindexで指定した次 元のローカル・ワークア イテム(work item)の数 を返します。clEnqueueND RangeKernelのlocal_ work_size引数で指定した ものが該当します。 |
size_t get_local_ id(uint dimindx) | dimindexで指定した次元 で固有のローカル・ワーク アイテム(work item) IDを返します。 |
size_t get_num_ groups(uint dimindx) | dimindexで指定した 次元のワークグループ (work group)の数を返 します。clEnqueueND RangeKernelのlocal_ work_size引数で指定し たものが該当します。 |
size_t get_group_ id(uint dimindx) | dimindexで指定した 次元でワークグループ( work group)IDを返し ます。 |
size_t get_global_ offset(uint dimindx) | dimindexで指定した 次元のオフセット( offset)を返します。 clEnqueueNDRange Kernelのglobal_work_ offset引数で指定したも のが該当します。 |
表B.103 表:数学関数
関数 | 解説 |
---|---|
gentype acos (gentype)   | Arc cosine関数 (逆三角関数)。  |
gentype acosh (gentype) | Inverse hyperbolic cosine関数(逆双曲線関数)。 |
gentype acospi (gentype x)  | acos (x) / πを 計算します。  |
gentype asin (gentype) | 逆余弦(Arc sine)を計算します。 |
gentype asinh (gentype) | 逆双曲線正弦(Inverse hyperbolic sine)を計算します。  |
gentype asinpi (gentype x)  | asin (x) / πを 計算します。 |
gentype atan (gentype y_over_x) | 逆正接(Arc tangent) を計算します。  |
gentype atan2 (gentype y, gentype x) | atan(y / x)を 計算します。 |
gentype atanh (gentype) | 逆双曲線正接(Hyperbolic arc tangent)を計算します。  |
gentype atanpi (gentype x) | atan (x) / πを 計算します。  |
gentype atan2pi (gentype y, gentype x) | atan2 (y, x) / πを 計算します。  |
gentype cbrt (gentype) | 立方根・三乗根を計算し ます。 |
gentype ceil (gentype) | 正の無限大への丸めモー ドで天井値を計算。 |
gentype copysign (gentype x, gentype y) | xの符号をyの符号に合 わせて返します。 |
gentype cos (gentype) | 余弦(cosine)を計算 します。  |
gentype cosh (gentype) | 双曲線余弦(hyperbolic cosine)を計算します。 |
gentype cospi (gentype x) | cos (π x)を計算します。 |
gentype erfc (gentype) | 相補誤差関数を計算します。  |
gentype erf (gentype) | 誤差関数の計算をします。  |
gentype exp (gentype x) | eを底とする指数関数の 計算をします。 |
gentype exp2 (gentype) | 2を底とする指数関数の 計算をします。  |
gentype exp10 (gentype) | 10を底とする指数関数 の計算をします。  |
gentype expm1 (gentype x)  | exp- 1.0の計算を します。   |
gentype fabs (gentype) | 浮動小数点数の絶対 値を計算します。  |
gentype fdim (gentype x, gentype y) | x > yのとき、x - y x <= yのとき、+0  |
gentype floor (gentype) | 負の無限大への丸め モードで床関数を計算 |
gentype fma (gentype a, gentype b, gentype c) | aとbの無限精度の積と cの和(a*b+c)を丸めた値 を計算します。途中の積 を求める過程では丸めず、 エッジケースにおける振る 舞いは IEEE754-2008に 準拠します。  |
gentype fmax (gentype x, gentype y) gentypef fmax (gentypef x, float y) gentyped fmax (gentyped x, double y) | x < yのときに、y それ以外のときに、x を返します。引数の片方 がNaNのときは、もう片方 の値を返します。 両方の引数がNaNのと きは、NaNを返します。 |
gentype fmin(gentype x,gentype y) gentypef fmin(gentypef x, float y) gentyped fmin(gentyped x, double y) | y < xのときに、y それ以外のときに、x を返します。引数の片方がNaNのときは、もう片方の値を返します。 両方の引数がNaNのときは、NaNを返します。 |
gentype fmod(gentype x,gentype y) | x – y * trunc(x/y) を計算します。 |
gentype fract(gentype x, global gentype *iptr) gentype fract (gentype x, local gentype *iptr) gentype fract (gentype x, private gentype *iptr) | fmin(x – floor(x), 0x1.fffffep-1f)を計算します。 floor(x)はiptrで返されます。 |
gentype frexp(gentype x, global intn *exp) gentype frexp (gentype x, local intn *exp) gentype frexp (gentype x, private intn *exp) | x の仮数(mantissa、小数点 以下)と指数を計算します。各要 素に返される仮数は[1/2, 1)か 0の間の値となります。xの各値 は(仮数 * 2^exp)となります。 |
gentype hypot(gentype x, gentype y) | オーバーフローまたはアンダ ーフローを回避しつつ、 x^2 + y^2の平方根値を求 めます。 |
intn ilogb(gentype x) | xの指数を整数値で返します。 |
gentype ldexp(gentypex, intn exp) gentype ldexp(gentype x, int exp) | xの指数を整数値として計 算します。x * 2^expの計 算結果を返します。 |
gentype lgamma(gentype x) gentype lgamma_r(gentype x, global intn *signp) gentype lgamma_r(gentype x, local intn *signp) gentype lgamma_r(gentype x, private intn *signp) | ガンマ関数の自然対数(log Γ(x))を計算します。 lgamma_rのsignp引数のポ インタは算出したガンマ関数 の値の符号を返します。 |
gentype log(gentype x) | xの自然対数を計算します。 |
gentype log2(gentype x) | xの対数(底は2)を計算します。 |
gentype log10(gentype x) | xの対数(底は10)を計算します。 |
gentype log1p(gentype x) | `1.0 + x`の自然対数、 `log_e(1.0 + x)`を 計算します。 |
gentype logb(gentype x) | xの指数を計算 (log_r|x|の整数部分) します。 |
gentype mad(gentype a, gentype b, gentype c) | madは(a*b+c)の近似計算 をします。精度よりも速度を 重視するときに使います。 |
gentype maxmag(gentype x, gentype y) | |x| > |y|のときに、x |y| > |x|のときに、y それ以外はfmax(x, y) を計算します。 |
gentype minmag(gentype x, gentype y) | |x| < |y|のときに、x |y| < |x|のときに、y それ以外はfmin(x, y)を 計算します。 |
gentype modf(gentype x, global gentype *iptr) gentype modf(gentype x, local gentype *iptr) gentype modf(gentype x, private gentype *iptr) | 浮動小数点を分解します。 modf関数は引数xを整数と 少数部分に分けます。各部分 は引数と同じ符号を持ちます。 iptrポインタが指すオブジェ クトに算出した整数部分を保 存し、少数部分を返します。 |
float nan(uint nancode) floatn nan(uintn nancode) double nan(uint nancode) doublen nan(uintn nancode) | quiet NaN(qNaN)を返します。 |
gentype nextafter(gentype x, gentype y); | 単精度浮動小数点または倍 精度浮動小数点でy方向のx の次の数値を計算します。 yがxより小さければ、xより 小さい値の最大浮動小数点 値を返します。 |
gentype pow(gentype x, gentype y) | xのy乗を計算します。 |
gentype pown(gentype x, intn y) | xのy乗を計算します。 yは整数とする。 |
gentype powr(gentype x, gentype y) | x >= 0の制限下で xのy乗を計算します。 |
gentype remainder(gentype x, gentype y) | r = x – n * yを計算 します。nはx/yに最も近い 整数です。もしx/yに最も 近い整数が2つあるときは、 偶数値を選びます。rが0の ときは、xと同じ符号に なります。 |
floatn remquo (floatn x, floatn y, __global intn *quo) floatn remquo (floatn x, floatn y, __local intn *quo) floatn remquo (floatn x, floatn y, __private intn *quo) float remquo (float x, float y, __global int *quo) float remquo (float x, float y, __local int *quo) float remquo (float x, float y, __private int *quo) | r = x - k*yを計算します。 kはx/yに最も近い整数です。 もしx/yに最も近い整数が2つ あるときは、偶数値を選びます。 rが0のときは、xと同じ符号に なります。reminder()と異 なり、x/yの商(整数)の 下位7ビットを計算し、符号 はx/yの符号と同じになりま す。quoポインタが指すオブ ジェクトに返されます。 |
doublen remquo (doublen x, doublen y, __global intn *quo) doublen remquo (doublen x, doublen y, __local intn *quo) doublen remquo (doublen x, doublen y, __private intn *quo) double remquo (double x, double y, __global int *quo) double remquo (double x, double y, __local int *quo) double remquo (double x, double y, __private int *quo) | r = x - k*yを計算します。 kはx/yに最も近い整数です。も しx/yに最も近い整数が2つあると きは、偶数値を選びます。rが0の ときは、xと同じ符号になります。 reminder()と異なり、x/yの商 (整数)の下位7ビットを計算し、 符号はx/yの符号と同じになります。 quoポインタが指すオブジェクト に返されます。 |
gentype rint (gentype) | 最近接偶数への丸め (round to the nearest even) モードで 整数値への丸めを行います。 |
floatn rootn (floatn x, intn y) float rootn (float x, int y) doublen rootn (doublen x, intn y) doublen rootn (double x, int y) | xの(1/y)乗を計算 します。 |
gentype round (gentype x) | 丸め方向と関係なくxに最 も近い整数値への丸め(中間 値は0より遠い方向)を行います。 |
gentype rsqrt (gentype) | 平方根の逆数を計算します。 |
gentype sin (gentype) | 正弦(sine)を計算します。 |
gentype sincos (gentype x, __global gentype *cosval) gentype sincos (gentype x, __local gentype *cosval) gentype sincos (gentype x, __private gentype *cosval) | 正弦(sine)と余弦(cosine) を計算します。正弦を戻り値 として返し、余弦をcosvalポ インタを指すオブジェクトに 返します。 |
gentype sinh (gentype)  | 双曲線正弦(ハイパボリック サイン)を計算します。  |
gentype sinpi (gentype x)  | sin (π x)を計算します。  |
gentype sqrt (gentype)  | 平方根を計算します。  |
gentype tan (gentype) | 正接(tangent)を計算します。 |
gentype tanh (gentype)  | 双曲線正接(hyperbolic tangent)を計算します。  |
gentype tanpi (gentype x) | tan (π x)の計算をします。 |
gentype tgamma (gentype) | ガンマ関数の計算をします。 |
gentype trunc (gentype) | 0への丸め (rounding toward zero)モードで整数 への丸めを計算します。 |
表B.104 表:half型、native型の数学関数
関数 | 詳細 |
---|---|
gentype half_cos (gentype x) | 余弦(cosine)の計算 をします。引数xの範囲は -216 ... +216とします。  |
gentype half_divide (gentype x, gentype y) | x / yを計算します。  |
gentype half_exp (gentype x)  | eを底とする指数関数 の計算をします。  |
gentype half_exp2 (gentype x)  | 2を底とする指数関数 の計算をします。  |
gentype half_exp10 (gentype x) | 10を底とする指数関数の計算をします。  |
gentype half_log (gentype x)  | 自然対数を計算します。  |
gentype half_log2 (gentype x) | 2を底とする対数の計算 をします。  |
gentype half_log10 (gentype x) | 10を底とする対数の計算 をします。 |
gentype half_powr (gentype x, gentype y) | x >= 0の制限下でxのy 乗を計算します。  |
gentype half_recip (gentype x)  | 逆数の計算をします。  |
gentype half_rsqrt (gentype x) | 平方根の逆数を計算します。  |
gentype half_sin (gentype x) | 正弦(sine)の計算を します。引数xの範囲は -216 ... +216とします。  |
gentype half_sqrt (gentype x)  | 平方根を計算します。  |
gentype half_tan (gentype x) | 正接(tangent)の計算 をします。引数xの範囲は -216 ... +216とします。 |
gentype native_cos (gentype x) | 余弦(cosine)の計算 をします。範囲は実装シ ステムによります。  |
gentype native_divide (gentype x, gentype y)  | x / yの計算をします。 範囲は実装システムに よります。 |
gentype native_exp (gentype x) | eを底とする指数関数の 計算をします。引数xの 範囲は実装システムによ り異なります。 |
gentype native_exp2 (gentype x) | 2を底とする指数関数の 計算をします。引数xの 範囲は実装システムによ り異なります。 |
gentype native_exp10 (gentype x) | 10を底とする対数の計 算をします。引数xの範 囲は実装システムにより 異なります。 |
gentype native_log (gentype x) | 自然対数を計算します。 範囲は実装システムによ り異なります。 |
gentype native_log2 (gentype x) | 2を底とする対数の計算 をします。範囲は実装シ ステムにより異なります。 |
gentype native_log10 (gentype x) | 10を底とする対数の 計算をします。範囲は実 装システムにより異なり ます。 |
gentype native_powr (gentype x, gentype y) | x >= 0の制限下でxの y乗を計算します。引数x とyの範囲は実装システム により異なります。 |
gentype native_recip (gentype x)  | 逆数の計算をします。 範囲は実装システムによ り異なります。  |
gentype native_rsqrt (gentype x) | 平方根の逆数を計算し ます。範囲は実装シス テムにより異なります。 |
gentype native_sin (gentype x)  | 正弦(sine)の計算 をします。範囲は実装 システムにより異なり ます。  |
gentype native_sqrt (gentype x) | 平方根を計算します。 範囲は実装システムに より異なります。  |
gentype native_tan (gentype x)  | 正接(tangent)の計 算をします。範囲は実装 システムにより異なり ます。  |
表B.105 表:浮動小数点境界値
関数 | 詳細 |
---|---|
MAXFLOAT | 単精度浮動小数点数 の有限の最大値です。 |
HUGE_VALF | +infinityと等号する float型の定数です。 数値関数のエラー値とし て使われます。 |
INFINITY | 正の符号または符号な しの無限を表すfloat型 の定数。  |
NAN | quiet NaN(qNaN) を表すfloat型の定数。 |
HUGE_VAL | +infinityと等号する double型の定数です。 数値関数のエラー値とし て使われます。 |
#define FLT_DIG 6 #define FLT_MANT_DIG 24 #define FLT_MAX_10_EXP +38 #define FLT_MAX_EXP +128 #define FLT_MIN_10_EXP -37 #define FLT_MIN_EXP -125 #define FLT_RADIX 2 #define FLT_MAX 0x1.fffffep127f #define FLT_MIN 0x1.0p-126f #define FLT_EPSILON 0x1.0p-23f
表B.106 表:浮動小数点との互換性
OpenCL Cマクロ | OpenCL APIマクロ  |
---|---|
FLT_DIG | CL_FLT_DIG  |
FLT_MANT_DIG  | CL_FLT_MANT_DIG |
FLT_MAX_10_EXP | CL_FLT_MAX_10_EXP  |
FLT_MAX_EXP | CL_FLT_MAX_EXP |
FLT_MIN_10_EXP | CL_FLT_MIN_10_EXP  |
FLT_MIN_EXP  | CL_FLT_MIN_EXP |
FLT_RADIX | CL_FLT_RADIX |
FLT_MAX | CL_FLT_MAX  |
FLT_MIN | CL_FLT_MIN  |
FLT_EPSILSON  | CL_FLT_EPSILON |
表B.107 表:浮動小数点定数
定数  | 詳細  |
---|---|
M_E_F | eの値 |
M_LOG2E_F | log2eの値  |
M_LOG10E_F  | log10eの値 |
M_LN2_F | loge2の値  |
M_LN10_F  | loge10の値 |
M_PI_F | πの値  |
M_PI_2_F  | π / 2の値  |
M_PI_4_F  | π / 4の値 |
M_1_PI_F | 1 / πの値 |
M_2_PI_F | 2 / πの値 |
M_2_SQRTPI_F | 2 / √πの値 |
M_SQRT2_F | √2の値 |
M_SQRT1_2_F | 1 / √2の値 |
詳しくは「表:倍精度型マクロ」(表:倍精度型マクロ)と「表:倍精度型の互換性」(表B.108「表:倍精度型の互換性」)と「表:倍精度定数」(表B.109「表:倍精度定数」)を参照ください。
#define DBL_DIG 15 #define DBL_MANT_DIG 53 #define DBL_MAX_10_EXP +308 #define DBL_MAX_EXP +1024 #define DBL_MIN_10_EXP -307 #define DBL_MIN_EXP -1021 #define DBL_MAX 0x1.fffffffffffffp1023 #define DBL_MIN 0x1.0p-1022 #define DBL_EPSILON 0x1.0p-52
表B.108 表:倍精度型の互換性
OpenCL Cマクロ  | OpenCL APIマクロ  |
---|---|
DBL_DIG | CL_DBL_DIG  |
DBL_MANT_DIG | CL_DBL_MANT_DIG  |
DBL_MAX_10_EXP  | CL_DBL_MAX_10_EXP |
DBL_MAX_EXP | CL_DBL_MAX_EXP  |
DBL_MIN_10_EXP | CL_DBL_MIN_10_EXP  |
DBL_MIN_EXP | CL_DBL_MIN_EXP  |
DBL_MAX | CL_DBL_MAX  |
DBL_MIN | CL_DBL_MIN  |
DBL_EPSILSON  | CL_DBL_EPSILON |
表B.109 表:倍精度定数
定数 | 詳細 |
---|---|
M_E | eの値 |
M_LOG2E  | log2eの値  |
M_LOG10E | log10eの値 |
M_LN2 | loge2の値 |
M_LN10 | loge10の値 |
M_PI | πの値 |
M_PI_2 | π / 2の値 |
M_PI_4 | π / 4の値  |
M_1_PI | 1 / πの値 |
M_2_PI | 2 / πの値 |
M_2_SQRTPI | 2 / √πの値  |
M_SQRT2  | √2の値  |
M_SQRT1_2 | 1 / √2の値 |
Copyright 2018-2019, by Masaki Komatsu