<?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 MKL library (Data Fitting Component)- substitute of P-chip function in MKL library in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-library-Data-Fitting-Component-substitute-of-P-chip-function/m-p/1121714#M25009</link>
    <description>&lt;DIV class="forum-post-header"&gt;
	&lt;DIV class="forum-post-author"&gt;&lt;SPAN style="font-size: 1em;"&gt;Dear Experts,&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;

&lt;DIV class="forum-post-content"&gt;
	&lt;DIV class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;
		&lt;DIV class="field-items"&gt;
			&lt;DIV class="field-item even" property="content:encoded"&gt;
				&lt;P&gt;I want to implement the p-chip MATLAB function using the Intel MKL library. The details of the pchip function can be found at :&lt;A href="https://in.mathworks.com/help/matlab/ref/pchip.html"&gt;https://in.mathworks.com/help/matlab/ref/pchip.html&lt;/A&gt;&lt;/P&gt;

				&lt;P&gt;I tried using the Hermite Cubic Spline but it returns zero values in the interpolated function. Why does it return zero values.&lt;/P&gt;

				&lt;P&gt;Can someone point to such an implementation, if you have tried previously ?&lt;/P&gt;

				&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;The Code&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

				&lt;P&gt;// This is the main DLL file.&lt;/P&gt;

				&lt;P&gt;#include &amp;lt;algorithm&amp;gt;&lt;BR /&gt;
					#include &amp;lt;iostream&amp;gt;&lt;/P&gt;

				&lt;P&gt;#include "mkl_df.h"&lt;/P&gt;

				&lt;P&gt;#include "MKLWrapper64.h"&lt;BR /&gt;
					#include "Utils.h"&lt;/P&gt;

				&lt;P&gt;using namespace MKLWrapper64;&lt;/P&gt;

				&lt;P&gt;/// Performs interpolation of up to order 3,&lt;BR /&gt;
					/// with free-end boundary condition (i.e. second derivative of both ends = 0)&lt;BR /&gt;
					/// INPUT PARAMETER RESTRICTIONS:&lt;BR /&gt;
					/// --&amp;gt; x[] must be in ascending order&lt;BR /&gt;
					/// --&amp;gt; r[] must be of the format {lowerBound,upperBound} if isUniform&lt;BR /&gt;
					///&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;or contain outsize number of x-values if !isUniform&lt;BR /&gt;
					/// --&amp;gt; order should be within the range [1, 3]&lt;BR /&gt;
					/// OUTPUT PARAMETERS:&lt;BR /&gt;
					/// --&amp;gt; out[] contains output interpolated y-values&lt;BR /&gt;
					/// --&amp;gt; return int signifies no error (0) or error (non-zero status number)&lt;/P&gt;

				&lt;P&gt;int Interpolator::Interpolate(int nx, array&amp;lt;float&amp;gt;^ x, array&amp;lt;float&amp;gt;^ y,&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;array&amp;lt;float&amp;gt;^ r, int outsize, array&amp;lt;float&amp;gt;^ out, int order, bool isUniform)&lt;BR /&gt;
					{&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int status;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int ny = 1; // y-axis is 1 dimensional&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;DFTaskPtr taskPtr;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;pin_ptr&amp;lt;float&amp;gt; xPtr = &amp;amp;x[0];&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;pin_ptr&amp;lt;float&amp;gt; yPtr = &amp;amp;y[0];&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;pin_ptr&amp;lt;float&amp;gt; interpolationRange = &amp;amp;r[0];&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// create new data fitting task&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfsNewTask1D(&amp;amp;taskPtr, nx, xPtr, DF_UNIFORM_PARTITION, ny, yPtr, DF_NO_HINT);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfsNewTask1D") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// specify type of spline&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int splineOrder;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (order) {&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;case 1: &amp;nbsp;splineOrder = DF_PP_LINEAR;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;case 2: &amp;nbsp;splineOrder = DF_PP_QUADRATIC; break;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;case 3: &amp;nbsp;splineOrder = DF_PP_CUBIC;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;default: splineOrder = DF_PP_CUBIC;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int sorder = DF_PP_CUBIC;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int stype = DF_PP_HERMITE;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int bc_type = DF_BC_1ST_LEFT_DER | DF_BC_1ST_RIGHT_DER;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int ic_type = DF_IC_1ST_DER;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;float* splineCoeff = new float[ny*splineOrder*(nx - 1)];&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfsEditPPSpline1D(taskPtr, sorder, stype,&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bc_type, NULL, ic_type, NULL, splineCoeff, DF_NO_HINT);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfsEditPPSpline1D") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// construct spline&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfsConstruct1D(taskPtr, DF_PP_SPLINE, DF_METHOD_STD);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfsConstruct1D") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// interpolate&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int intUniform = isUniform ? DF_UNIFORM_PARTITION : DF_NON_UNIFORM_PARTITION;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT evalOrder = DF_PP_STD + 1; // evaluate 0th derivative of spline (i.e. spline value itself)&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT* dataOrder = new MKL_INT[outsize]; // instructs dfdInterpolate1D to evaluate 0th derivative at all points&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;std::fill_n(dataOrder, outsize, evalOrder);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;float* resultArr = new float[outsize];&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfsInterpolate1D(taskPtr, DF_INTERP, DF_METHOD_PP, outsize, interpolationRange,&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;intUniform, evalOrder, dataOrder, nullptr, resultArr, DF_MATRIX_STORAGE_ROWS, NULL);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfsInterpolate1D") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// delete data fitting task&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfDeleteTask(&amp;amp;taskPtr);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfDeleteTask") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; outsize; i++)&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;out&lt;I&gt; = resultArr&lt;I&gt;;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;
					}&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;
			&lt;/DIV&gt;
		&lt;/DIV&gt;
	&lt;/DIV&gt;
&lt;/DIV&gt;</description>
    <pubDate>Fri, 17 Mar 2017 11:37:16 GMT</pubDate>
    <dc:creator>Arnab_D_</dc:creator>
    <dc:date>2017-03-17T11:37:16Z</dc:date>
    <item>
      <title>MKL library (Data Fitting Component)- substitute of P-chip function in MKL library</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-library-Data-Fitting-Component-substitute-of-P-chip-function/m-p/1121714#M25009</link>
      <description>&lt;DIV class="forum-post-header"&gt;
	&lt;DIV class="forum-post-author"&gt;&lt;SPAN style="font-size: 1em;"&gt;Dear Experts,&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;

&lt;DIV class="forum-post-content"&gt;
	&lt;DIV class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;
		&lt;DIV class="field-items"&gt;
			&lt;DIV class="field-item even" property="content:encoded"&gt;
				&lt;P&gt;I want to implement the p-chip MATLAB function using the Intel MKL library. The details of the pchip function can be found at :&lt;A href="https://in.mathworks.com/help/matlab/ref/pchip.html"&gt;https://in.mathworks.com/help/matlab/ref/pchip.html&lt;/A&gt;&lt;/P&gt;

				&lt;P&gt;I tried using the Hermite Cubic Spline but it returns zero values in the interpolated function. Why does it return zero values.&lt;/P&gt;

				&lt;P&gt;Can someone point to such an implementation, if you have tried previously ?&lt;/P&gt;

				&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;The Code&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;

				&lt;P&gt;// This is the main DLL file.&lt;/P&gt;

				&lt;P&gt;#include &amp;lt;algorithm&amp;gt;&lt;BR /&gt;
					#include &amp;lt;iostream&amp;gt;&lt;/P&gt;

				&lt;P&gt;#include "mkl_df.h"&lt;/P&gt;

				&lt;P&gt;#include "MKLWrapper64.h"&lt;BR /&gt;
					#include "Utils.h"&lt;/P&gt;

				&lt;P&gt;using namespace MKLWrapper64;&lt;/P&gt;

				&lt;P&gt;/// Performs interpolation of up to order 3,&lt;BR /&gt;
					/// with free-end boundary condition (i.e. second derivative of both ends = 0)&lt;BR /&gt;
					/// INPUT PARAMETER RESTRICTIONS:&lt;BR /&gt;
					/// --&amp;gt; x[] must be in ascending order&lt;BR /&gt;
					/// --&amp;gt; r[] must be of the format {lowerBound,upperBound} if isUniform&lt;BR /&gt;
					///&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;or contain outsize number of x-values if !isUniform&lt;BR /&gt;
					/// --&amp;gt; order should be within the range [1, 3]&lt;BR /&gt;
					/// OUTPUT PARAMETERS:&lt;BR /&gt;
					/// --&amp;gt; out[] contains output interpolated y-values&lt;BR /&gt;
					/// --&amp;gt; return int signifies no error (0) or error (non-zero status number)&lt;/P&gt;

				&lt;P&gt;int Interpolator::Interpolate(int nx, array&amp;lt;float&amp;gt;^ x, array&amp;lt;float&amp;gt;^ y,&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;array&amp;lt;float&amp;gt;^ r, int outsize, array&amp;lt;float&amp;gt;^ out, int order, bool isUniform)&lt;BR /&gt;
					{&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int status;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int ny = 1; // y-axis is 1 dimensional&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;DFTaskPtr taskPtr;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;pin_ptr&amp;lt;float&amp;gt; xPtr = &amp;amp;x[0];&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;pin_ptr&amp;lt;float&amp;gt; yPtr = &amp;amp;y[0];&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;pin_ptr&amp;lt;float&amp;gt; interpolationRange = &amp;amp;r[0];&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// create new data fitting task&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfsNewTask1D(&amp;amp;taskPtr, nx, xPtr, DF_UNIFORM_PARTITION, ny, yPtr, DF_NO_HINT);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfsNewTask1D") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// specify type of spline&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int splineOrder;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (order) {&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;case 1: &amp;nbsp;splineOrder = DF_PP_LINEAR;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;case 2: &amp;nbsp;splineOrder = DF_PP_QUADRATIC; break;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;case 3: &amp;nbsp;splineOrder = DF_PP_CUBIC;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;default: splineOrder = DF_PP_CUBIC;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int sorder = DF_PP_CUBIC;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int stype = DF_PP_HERMITE;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int bc_type = DF_BC_1ST_LEFT_DER | DF_BC_1ST_RIGHT_DER;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int ic_type = DF_IC_1ST_DER;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;float* splineCoeff = new float[ny*splineOrder*(nx - 1)];&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfsEditPPSpline1D(taskPtr, sorder, stype,&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bc_type, NULL, ic_type, NULL, splineCoeff, DF_NO_HINT);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfsEditPPSpline1D") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// construct spline&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfsConstruct1D(taskPtr, DF_PP_SPLINE, DF_METHOD_STD);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfsConstruct1D") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// interpolate&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;int intUniform = isUniform ? DF_UNIFORM_PARTITION : DF_NON_UNIFORM_PARTITION;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT evalOrder = DF_PP_STD + 1; // evaluate 0th derivative of spline (i.e. spline value itself)&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;MKL_INT* dataOrder = new MKL_INT[outsize]; // instructs dfdInterpolate1D to evaluate 0th derivative at all points&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;std::fill_n(dataOrder, outsize, evalOrder);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;float* resultArr = new float[outsize];&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfsInterpolate1D(taskPtr, DF_INTERP, DF_METHOD_PP, outsize, interpolationRange,&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;intUniform, evalOrder, dataOrder, nullptr, resultArr, DF_MATRIX_STORAGE_ROWS, NULL);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfsInterpolate1D") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// delete data fitting task&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;status = dfDeleteTask(&amp;amp;taskPtr);&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;if (Utils::checkError(status, "dfDeleteTask") != 0) return status;&lt;/P&gt;

				&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; outsize; i++)&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;out&lt;I&gt; = resultArr&lt;I&gt;;&lt;BR /&gt;
					&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;
					}&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;
			&lt;/DIV&gt;
		&lt;/DIV&gt;
	&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Fri, 17 Mar 2017 11:37:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-library-Data-Fitting-Component-substitute-of-P-chip-function/m-p/1121714#M25009</guid>
      <dc:creator>Arnab_D_</dc:creator>
      <dc:date>2017-03-17T11:37:16Z</dc:date>
    </item>
    <item>
      <title>Hello Arnab,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-library-Data-Fitting-Component-substitute-of-P-chip-function/m-p/1121715#M25010</link>
      <description>&lt;P&gt;Hello Arnab,&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;Per our analysis of your test case, it requires several modifications:&lt;/SPAN&gt;&lt;/P&gt;

&lt;OL&gt;
	&lt;LI&gt;As it was mentioned in the previous response, to construct Hermite cubic spline coefficients one is required to provide the array of internal conditions (ic). You can find the implementation details in dfshermitecubicspline.c example available in Intel MKL.&lt;/LI&gt;
	&lt;LI&gt;When the boundary condition is set to DF_BC_1ST_LEFT_DER | DF_BC_1ST_RIGHT_DER you should provide an array of two elements which specifies the values of the function’s first derivatives in the endpoints of the interpolation interval.&lt;/LI&gt;
	&lt;LI&gt;If you create Data Fitting task by providing uniform partition of the interpolation interval [a,b]:&lt;/LI&gt;
&lt;/OL&gt;

&lt;P style="margin-left:1.0in;"&gt;status = dfsNewTask1D(&amp;amp;taskPtr, nx, xPtr, &lt;STRONG&gt;DF_UNIFORM_PARTITION&lt;/STRONG&gt;, ny, yPtr, DF_NO_HINT);&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; you are required to provide the array x that defines the partition as a two-element array that represents the endpoints of the interpolation interval [a, b].&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;Please find the additional details about setting internal and boundary conditions for the different types of splines at &lt;/SPAN&gt;&lt;A href="https://software.intel.com/en-us/node/522222#D69BA4E7-E8BD-4413-A2A9-769D5002F832" style="font-size: 1em;"&gt;https://software.intel.com/en-us/node/522222#D69BA4E7-E8BD-4413-A2A9-769D5002F832&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;Extra details about using different types of partitions for splines construction and spline-based interpolation are available at &lt;A href="https://software.intel.com/en-us/node/522220"&gt;https://software.intel.com/en-us/node/522220&lt;/A&gt;&lt;/P&gt;

&lt;P&gt;Please, let us know, if it helps address your questions on your test case. Also, let us know, if you have more comments or questions on the Data Fitting component of Intel MKL.&lt;/P&gt;</description>
      <pubDate>Mon, 20 Mar 2017 16:02:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-library-Data-Fitting-Component-substitute-of-P-chip-function/m-p/1121715#M25010</guid>
      <dc:creator>VictoriyaS_F_Intel</dc:creator>
      <dc:date>2017-03-20T16:02:46Z</dc:date>
    </item>
  </channel>
</rss>

