補間関数#

補間関数は、補間サイトで関数と導関数の値の計算を実行します。

サイトが補間区間 [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)

すべての関数おいて、ユーザーは SiteHintResultHintを提供して、それぞれ sitesresults のレイアウトを指定できます。results レイアウトが ResultHint を満たしていない場合、および/または sites レイアウトが SiteHint を満たしていない場合、動作は未定義になります。送信されたタスクの SYCL* イベントを返します。

  1. interpolant に関連付けられた SYCL* キューのみを使用して関数値の計算を実行します。

  2. interpolant に関連付けられた SYCL* キューを使用して、der_indicator で示される特定の導関数 (関数値はゼロ導関数として扱われます) の計算を行います (各ビットは下位ビットから始まる特定の導関数に対応します)。

  3. interpolant に関連付けられた SYCL* キューと同じコンテキストとデバイスから作成される入力引数として q のみを使用して、関数値の計算を行います。

  4. interpolant に関連付けられた SYCL* キューと同じコンテキストとデバイスから作成される入力引数として q を使用して、der_indicator で示される特定の導関数 (各ビットは下位ビットから始まる特定の導関数に対応します) の計算を行います (関数値はゼロ導関数と見なされます)。

補間関数の使用例については、のセクションを参照してください。