<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Hello Tianxiong and Guix, in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085702#M22966</link>
    <description>&lt;P&gt;Hello Tianxiong and Guix,&lt;/P&gt;

&lt;P&gt;The issue is fixed in Intel MKL 2017 Beta Update 1. Can you please check if the fix works for you with this version of the library?&lt;/P&gt;</description>
    <pubDate>Mon, 20 Jun 2016 14:58:51 GMT</pubDate>
    <dc:creator>VictoriyaS_F_Intel</dc:creator>
    <dc:date>2016-06-20T14:58:51Z</dc:date>
    <item>
      <title>Is there something wrong in DataFitting interpolate with user defined extrapolate call back routine?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085697#M22961</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;

&lt;P&gt;I meet a strange problem in DataFitting Module while call df?&lt;SPAN style=" color:#000000;"&gt;InterpolateEx1D function&lt;/SPAN&gt;. If I present the call back function for extrapolation&amp;nbsp;, the result was wrong. But if set them to NULL, result is right.&lt;/P&gt;

&lt;P&gt;My problem is:&lt;/P&gt;

&lt;P&gt;x[] = {1, 1.5, 2.5, 3.5, 4.5, 5}, and y[] = {100, 120, 150, 170, 200, 200}, Interpolate method is stepwise constant interpolant. And I need found y value at x=4.&lt;/P&gt;

&lt;P&gt;The following is the sample code. I hope that was something wrong in my code. Can you help me to explain it? thanks.&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;#include &amp;lt;stdio.h&amp;gt;
#include "mkl_df.h"


// fixed value extrapolate function parameters
struct fixvalue_extrap_params
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; float value;
};

// fixed value extrapolate function
int fixvalue_extrap( MKL_INT64* n, MKL_INT64 cell[], float site[], float r[],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void *params )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; fixvalue_extrap_params *p = (fixvalue_extrap_params*)params;
&amp;nbsp;&amp;nbsp;&amp;nbsp; r[0] = p-&amp;gt;value;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;
}


int main(int argc, char* argv[])
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; float x[] = { 1., 1.5, 2.5, 3.5, 4.5, 5 };
&amp;nbsp;&amp;nbsp;&amp;nbsp; float y[] = { 100., 120., 150., 170., 200., 200. };
&amp;nbsp;&amp;nbsp;&amp;nbsp; int nx = 6;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int ny = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; const int nsite = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; float site[nsite] = { 4 };
&amp;nbsp;&amp;nbsp;&amp;nbsp; float r[nsite];
&amp;nbsp;&amp;nbsp;&amp;nbsp; int cell[nsite];

&amp;nbsp;&amp;nbsp;&amp;nbsp; DFTaskPtr task;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Data Fitting task descriptor

&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT ndorder = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // size of array describing derivative
&amp;nbsp;&amp;nbsp;&amp;nbsp; MKL_INT dorder[] = { 1 };&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // only value to calculate

&amp;nbsp;&amp;nbsp;&amp;nbsp; int errcode = 0;

&amp;nbsp;&amp;nbsp;&amp;nbsp; /***** Create Data Fitting task *****/
&amp;nbsp;&amp;nbsp;&amp;nbsp; errcode = dfsNewTask1D(&amp;amp;task, nx, x, DF_NON_UNIFORM_PARTITION, ny, y, DF_NO_HINT);

&amp;nbsp;&amp;nbsp;&amp;nbsp; /***** Edit task parameters for look up interpolant *****/
&amp;nbsp;&amp;nbsp;&amp;nbsp; errcode = dfsEditPPSpline1D(task, DF_PP_STD, DF_CL_STEPWISE_CONST_INTERPOLANT, 0, 0, 0, 0, 0, 0);

&amp;nbsp;&amp;nbsp;&amp;nbsp; /***** Interpolate using lookup method without extrapolate *****/
&amp;nbsp;&amp;nbsp;&amp;nbsp; errcode = dfsInterpolateEx1D(task, (DF_CELL | DF_INTERP), DF_METHOD_PP,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nsite, site, 0, ndorder,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dorder, 0, r, 0, cell,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0, 0, 0, 0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0, 0, 0, 0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; // this answer is right
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("interpolate reuslt for [%f] = [%f] in section %d\n", site[0], r[0], cell[0]);

&amp;nbsp;&amp;nbsp;&amp;nbsp; dfsInterpCallBack le_cb, re_cb;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // interpolation call backs
&amp;nbsp;&amp;nbsp;&amp;nbsp; void * le_params, *re_params;&amp;nbsp;&amp;nbsp;&amp;nbsp; // interpolation call backs parameters
&amp;nbsp;&amp;nbsp;&amp;nbsp; fixvalue_extrap_params le_fixparams, re_fixparams;

&amp;nbsp;&amp;nbsp;&amp;nbsp; le_cb = fixvalue_extrap;
&amp;nbsp;&amp;nbsp;&amp;nbsp; re_cb = fixvalue_extrap;
&amp;nbsp;&amp;nbsp;&amp;nbsp; le_fixparams.value = y[0];
&amp;nbsp;&amp;nbsp;&amp;nbsp; re_fixparams.value = y[nx-1];
&amp;nbsp;&amp;nbsp;&amp;nbsp; le_params = &amp;amp;le_fixparams;
&amp;nbsp;&amp;nbsp;&amp;nbsp; re_params = &amp;amp;re_fixparams;

&amp;nbsp;&amp;nbsp;&amp;nbsp; /***** Interpolate using lookup method *****/
&amp;nbsp;&amp;nbsp;&amp;nbsp; errcode = dfsInterpolateEx1D(task, (DF_CELL | DF_INTERP), DF_METHOD_PP,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nsite, site, 0, ndorder,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dorder, 0, r, 0, cell,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; le_cb, le_params, re_cb, re_params,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0, 0, 0, 0);

&amp;nbsp;&amp;nbsp;&amp;nbsp; // this answer is wrong
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("interpolate reuslt with extrapolate for [%f] = [%f] in section %d\n", site[0], r[0], cell[0]);

&amp;nbsp;&amp;nbsp;&amp;nbsp; /***** Delete Data Fitting task *****/
&amp;nbsp;&amp;nbsp;&amp;nbsp; errcode = dfDeleteTask(&amp;amp;task);

&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;
}
&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;My output is :&lt;/P&gt;

&lt;PRE class="brush:plain;"&gt;interpolate reuslt for [4.000000] = [170.000000] in section 4
interpolate reuslt with extrapolate for [4.000000] = [150.000000] in section 4&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2016 14:42:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085697#M22961</guid>
      <dc:creator>Tianxiong_Lu</dc:creator>
      <dc:date>2016-01-13T14:42:24Z</dc:date>
    </item>
    <item>
      <title>By the way, My MKL version is</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085698#M22962</link>
      <description>&lt;P&gt;By the way, My MKL version is 11.3.&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2016 14:53:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085698#M22962</guid>
      <dc:creator>Tianxiong_Lu</dc:creator>
      <dc:date>2016-01-13T14:53:07Z</dc:date>
    </item>
    <item>
      <title>Thanks for providing a test</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085699#M22963</link>
      <description>&lt;P&gt;Thanks for providing a test case!&lt;/P&gt;

&lt;P&gt;Yes, this looks weird. Even if you make the user-defined extrapolation function a "no-op" (delete everything and only return 0), you still don't get the same result as you would get without passing an extrapolation function at all. MK dev team is taking a look and will let us know soon.&lt;/P&gt;</description>
      <pubDate>Wed, 13 Jan 2016 20:05:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085699#M22963</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2016-01-13T20:05:50Z</dc:date>
    </item>
    <item>
      <title>Thank you for your</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085700#M22964</link>
      <description>&lt;P&gt;Thank you for your information. So I need to try another way to reach my objective and hope to hear good news from dev team.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Jan 2016 04:48:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085700#M22964</guid>
      <dc:creator>Tianxiong_Lu</dc:creator>
      <dc:date>2016-01-14T04:48:19Z</dc:date>
    </item>
    <item>
      <title>We reproduced this behavior,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085701#M22965</link>
      <description>&lt;P&gt;We reproduced this behavior, and it looks like a bug. We plan to analyze/fix it in one of the future releases of the library. Will keep you updated. Thanks, Andrey&lt;/P&gt;</description>
      <pubDate>Thu, 14 Jan 2016 08:39:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085701#M22965</guid>
      <dc:creator>Andrey_N_Intel</dc:creator>
      <dc:date>2016-01-14T08:39:52Z</dc:date>
    </item>
    <item>
      <title>Hello Tianxiong and Guix,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085702#M22966</link>
      <description>&lt;P&gt;Hello Tianxiong and Guix,&lt;/P&gt;

&lt;P&gt;The issue is fixed in Intel MKL 2017 Beta Update 1. Can you please check if the fix works for you with this version of the library?&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jun 2016 14:58:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Is-there-something-wrong-in-DataFitting-interpolate-with-user/m-p/1085702#M22966</guid>
      <dc:creator>VictoriyaS_F_Intel</dc:creator>
      <dc:date>2016-06-20T14:58:51Z</dc:date>
    </item>
  </channel>
</rss>

