補間関数#
補間関数は、補間サイトで関数と導関数の値の計算を実行します。
サイトが補間区間 [a, b] に属していない場合、ライブラリーは以下を使用します。
aの左辺のサイトで計算区間 \([x_0, x_1)\) に対して求められた補間 \(I_0\) 係数。
bの右辺のサイトで計算区間 \([x_{n-2}, x_{n-1})\) に対して求められた補間 \(I_{n-2}\) 係数。
補間アルゴリズムは補間の種類によって異なります (たとえば、3 次スプライン補間の場合、関数値を取得するために 3 次多項式の評価が実行されます)。
ヘッダーファイル#
#include<oneapi/mkl/experimental/data_fitting.hpp>名前空間#
oneapi::mkl::experimental::data_fitiing構文#
template <typename Interpolant>
sycl::event interpolate(
Interpolant& interpolant,
typename Interpolant::fp_type* sites,
std::int64_t n_sites,
typename Interpolant::fp_type* results,
const std::vector<sycl::event>& dependencies,
interpolate_hint ResultHint = interpolate_hint::funcs_sites_ders,
site_hint SiteHint = site_hint::non_uniform); // (1)
template <typename Interpolant>
sycl::event interpolate(
Interpolant& interpolant,
typename Interpolant::fp_type* sites,
std::int64_t n_sites,
typename Interpolant::fp_type* results,
std::bitset<32> der_indicator,
const std::vector<sycl::event>& dependencies = {},
interpolate_hint ResultHint = interpolate_hint::funcs_sites_ders,
site_hint SiteHint = site_hint::non_uniform); // (2)
template <typename Interpolant>
sycl::event interpolate(
sycl::queue& q,
const Interpolant& interpolant,
typename Interpolant::fp_type* sites,
std::int64_t n_sites,
typename Interpolant::fp_type* results,
const std::vector<sycl::event>& dependencies,
interpolate_hint ResultHint = interpolate_hint::funcs_sites_ders,
site_hint SiteHint = site_hint::non_uniform); // (3)
template <typename Interpolant>
sycl::event interpolate(
sycl::queue& q,
const Interpolant& interpolant,
typename Interpolant::fp_type* sites,
std::int64_t n_sites,
typename Interpolant::fp_type* results,
std::bitset<32> der_indicator,
const std::vector<sycl::event>& dependencies = {},
interpolate_hint ResultHint = interpolate_hint::funcs_sites_ders,
site_hint SiteHint = site_hint::non_uniform); // (4)すべての関数おいて、ユーザーは SiteHint と ResultHintを提供して、それぞれ sites と results のレイアウトを指定できます。results レイアウトが ResultHint を満たしていない場合、および/または sites レイアウトが SiteHint を満たしていない場合、動作は未定義になります。送信されたタスクの SYCL* イベントを返します。
interpolantに関連付けられた SYCL* キューのみを使用して関数値の計算を実行します。interpolantに関連付けられた SYCL* キューを使用して、der_indicatorで示される特定の導関数 (関数値はゼロ導関数として扱われます) の計算を行います (各ビットは下位ビットから始まる特定の導関数に対応します)。interpolantに関連付けられた SYCL* キューと同じコンテキストとデバイスから作成される入力引数としてqのみを使用して、関数値の計算を行います。interpolantに関連付けられた SYCL* キューと同じコンテキストとデバイスから作成される入力引数としてqを使用して、der_indicatorで示される特定の導関数 (各ビットは下位ビットから始まる特定の導関数に対応します) の計算を行います (関数値はゼロ導関数と見なされます)。
補間関数の使用例については、例のセクションを参照してください。