modf#

ベクトル要素の要素ごとに切り捨てられた整数部分と残りの小数部分を計算します。

説明#

modf(a) 関数は、各ベクトル要素の切り捨てられた整数値と残りの小数部分を計算します。

\[\begin{split}a_i \geq 0, \begin{cases} y_i = \lfloor a_i \rfloor \\ z_i = a_i - \lfloor a_i \rfloor \end{cases}\end{split}\]
\[\begin{split}a_i < 0, \begin{cases} y_i = \lceil a_i \rceil \\ z_i = a_i - \lceil a_i \rceil \end{cases}\end{split}\]

引数

Result 1

Result 2

エラーコード

+0

+0

+0

-0

-0

-0

+\(\infty\)

+\(\infty\)

+0

-\(\infty\)

-\(\infty\)

-0

SNAN

QNAN

QNAN

QNAN

QNAN

QNAN

modf 関数はエラーを生成しません。

API#

構文#

バッファー API

namespace oneapi::mkl::vm { 

sycl::event modf(sycl::queue & exec_queue, 
      std::int64_t n, 
      sycl::buffer<T> & a, 
      sycl::buffer<T> & y, 
      sycl::buffer<T> & z, 
      oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined); 

}
namespace oneapi::mkl::vm { 

sycl::event modf(sycl::queue & exec_queue, 
      sycl::buffer<T> & a, 
      oneapi::mkl::slice sa, 
      sycl::buffer<T> & y, oneapi::mkl::slice sy, 
      sycl::buffer<T> & z, 
      oneapi::mkl::slice sz, 
      oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined); 

}

USM API

namespace oneapi::mkl::vm { 

sycl::event modf(sycl::queue & exec_queue, 
      std::int64_t n, 
      T const * a, 
      T * y, 
      T * z, 
      std::vector<sycl::event> const & depends = {}, 
      oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined); 

}
namespace oneapi::mkl::vm { 

sycl::event modf(sycl::queue & exec_queue, 
      T const * a, 
      oneapi::mkl::slice sa, 
      T * y, 
      oneapi::mkl::slice sy, 
      T * z, 
      oneapi::mkl::slice sz, 
      std::vector<sycl::event> const & depends = {}, 
      oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::not_defined); 

}

modf は次の精度とデバイスをサポートしています。

T

デバイスサポート

sycl::half

GPU

_Float16

CPU

float

CPU および GPU

double

CPU および GPU

入力パラメーター#

バッファー API

exec_queue

ルーチンが実行されるキュー。

n

計算する要素の数を指定します。

a

入力ベクトルを含むバッファー。

sa

a のスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。

sy

y のスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。

sz

z のスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。

mode

この関数呼び出しのグローバル VM モード設定をオーバーライドします。指定可能な値とその説明については、set_mode 関数を参照してください。これはオプションのパラメーターです。デフォルト値は mode::not_defined です。

USM API

exec_queue

ルーチンが実行されるキュー。

n

計算する要素の数を指定します。

a

入力ベクトルへのポインター。

sa

a のスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。

sy

y のスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。

sz

z のスライスセレクター。oneMKL スライスタイプの説明については、データタイプを参照してください。

depends

依存イベントのベクトル (入力データの準備ができるまで待機)。これはオプションのパラメーターです。デフォルトは空のベクトルです。

mode

この関数呼び出しのグローバル VM モード設定をオーバーライドします。指定可能な値とその説明については、set_mode 関数を参照してください。これはオプションのパラメーターです。デフォルト値は mode::not_defined です。

出力パラメーター#

バッファー API

y

切り捨てられた整数値の出力ベクトルを格納するバッファー。

z

残りの小数部分の出力ベクトルを格納するバッファー。

戻り値 (event)

計算終了イベント。

USM API

y

切り捨てられた整数値の出力ベクトルへのポインター。

z

残りの小数部分の出力ベクトルへのポインター。

戻り値 (event)

計算終了イベント。

#

modf の使用例は、oneMKL インストール・ディレクトリーの以下の場所にあります。

share/doc/mkl/examples/sycl/vml/source/vmodf.cpp