<?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 Add test file in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Convert-FFT-to-IPP/m-p/972145#M20666</link>
    <description>&lt;P&gt;Add test file&lt;/P&gt;</description>
    <pubDate>Fri, 01 Nov 2013 08:08:42 GMT</pubDate>
    <dc:creator>jupiter_s_</dc:creator>
    <dc:date>2013-11-01T08:08:42Z</dc:date>
    <item>
      <title>Convert FFT to IPP</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Convert-FFT-to-IPP/m-p/972144#M20665</link>
      <description>&lt;P&gt;I want to convert a source script in c/c++ to IPP, but output's not right.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;[&lt;EM&gt;cpp&lt;/EM&gt;]void four1(double data[], int nn, int isign)&lt;/P&gt;
&lt;P&gt;{&lt;BR /&gt; int n, mmax, m, j, istep, i;&lt;BR /&gt; double wtemp, wr, wpr, wpi, wi, theta;&lt;BR /&gt; double tempr, tempi;&lt;BR /&gt; &lt;BR /&gt; n = nn &amp;lt;&amp;lt; 1;&lt;BR /&gt; j = 1;&lt;BR /&gt; for (i = 1; i &amp;lt; n; i += 2) {&lt;BR /&gt; if (j &amp;gt; i) {&lt;BR /&gt; tempr = data&lt;J&gt;; data&lt;J&gt; = data&lt;I&gt;; data&lt;I&gt; = tempr;&lt;BR /&gt; tempr = data[j+1]; data[j+1] = data[i+1]; data[i+1] = tempr;&lt;BR /&gt; }&lt;BR /&gt; m = n &amp;gt;&amp;gt; 1;&lt;BR /&gt; while (m &amp;gt;= 2 &amp;amp;&amp;amp; j &amp;gt; m) {&lt;BR /&gt; j -= m;&lt;BR /&gt; m &amp;gt;&amp;gt;= 1;&lt;BR /&gt; }&lt;BR /&gt; j += m;&lt;BR /&gt; }&lt;BR /&gt; mmax = 2;&lt;BR /&gt; while (n &amp;gt; mmax) {&lt;BR /&gt; istep = 2*mmax;&lt;BR /&gt; theta = TWOPI/(isign*mmax);&lt;BR /&gt; wtemp = sin(0.5*theta);&lt;BR /&gt; wpr = -2.0*wtemp*wtemp;&lt;BR /&gt; wpi = sin(theta);&lt;BR /&gt; wr = 1.0;&lt;BR /&gt; wi = 0.0;&lt;BR /&gt; for (m = 1; m &amp;lt; mmax; m += 2) {&lt;BR /&gt; for (i = m; i &amp;lt;= n; i += istep) {&lt;BR /&gt; j =i + mmax;&lt;BR /&gt; tempr = wr*data&lt;J&gt; - wi*data[j+1];&lt;BR /&gt; tempi = wr*data[j+1] + wi*data&lt;J&gt;;&lt;BR /&gt; data&lt;J&gt; = data&lt;I&gt; - tempr;&lt;BR /&gt; data[j+1] = data[i+1] - tempi;&lt;BR /&gt; data&lt;I&gt; += tempr;&lt;BR /&gt; data[i+1] += tempi;&lt;BR /&gt; }&lt;BR /&gt; wr = (wtemp = wr)*wpr - wi*wpi + wr;&lt;BR /&gt; wi = wi*wpr + wtemp*wpi + wi;&lt;BR /&gt; }&lt;BR /&gt; mmax = istep;&lt;BR /&gt; }&lt;BR /&gt;}[/&lt;EM&gt;cpp&lt;/EM&gt;]&lt;/I&gt;&lt;/I&gt;&lt;/J&gt;&lt;/J&gt;&lt;/J&gt;&lt;/I&gt;&lt;/I&gt;&lt;/J&gt;&lt;/J&gt;&lt;/P&gt;
&lt;P&gt;I convert to below source but output data is not right.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;[&lt;EM&gt;cpp&lt;/EM&gt;]&lt;/P&gt;
&lt;P&gt;void fft_ipp( double data[], int nn, int isign )&lt;BR /&gt;{&lt;BR /&gt; const int order = (int)log(((double)(nn)) / log(2.0));&lt;BR /&gt; Ipp64fc *pTmp = ippsMalloc_64fc((1&amp;lt;&amp;lt;order)+2);&lt;/P&gt;
&lt;P&gt;// Spec and working buffers&lt;BR /&gt; IppsFFTSpec_C_64fc * pFFTSpec=0;&lt;BR /&gt; Ipp8u *pFFTSpecBuf, *pFFTInitBuf, *pFFTWorkBuf;&lt;BR /&gt; // Query to get buffer sizes&lt;BR /&gt; int sizeFFTSpec,sizeFFTInitBuf,sizeFFTWorkBuf;&lt;BR /&gt; ippsFFTGetSize_C_64fc(order, IPP_FFT_NODIV_BY_ANY, &lt;BR /&gt; ippAlgHintAccurate, &amp;amp;sizeFFTSpec, &amp;amp;sizeFFTInitBuf, &amp;amp;sizeFFTWorkBuf);&lt;BR /&gt; // Alloc FFT buffers&lt;BR /&gt; pFFTSpecBuf = ippsMalloc_8u(sizeFFTSpec);&lt;BR /&gt; pFFTInitBuf = ippsMalloc_8u(sizeFFTInitBuf);&lt;BR /&gt; pFFTWorkBuf = ippsMalloc_8u(sizeFFTWorkBuf);&lt;BR /&gt; // Initialize FFT&lt;BR /&gt; ippsFFTInit_C_64fc(&amp;amp;pFFTSpec, order, IPP_FFT_NODIV_BY_ANY, ippAlgHintAccurate, pFFTSpecBuf, pFFTInitBuf); &lt;BR /&gt; if (pFFTInitBuf) ippFree(pFFTInitBuf);&lt;/P&gt;
&lt;P&gt;// Do FFT&lt;BR /&gt; if(isign &amp;gt; 0)&lt;BR /&gt; {&lt;BR /&gt; ippsFFTFwd_CToC_64fc((Ipp64fc*)data, (Ipp64fc*)data, pFFTSpec, pFFTWorkBuf);&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; ippsFFTInv_CToC_64fc((Ipp64fc*)data, (Ipp64fc*)data, pFFTSpec, pFFTWorkBuf);&lt;BR /&gt; }&lt;BR /&gt; if (pFFTWorkBuf) ippFree(pFFTWorkBuf);&lt;BR /&gt; if (pFFTSpecBuf) ippFree(pFFTSpecBuf);&lt;BR /&gt; ippsFFTFree_C_64fc(pFFTSpec);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;[/&lt;EM&gt;cpp&lt;/EM&gt;]&lt;/P&gt;
&lt;P&gt;Please help me!&lt;/P&gt;</description>
      <pubDate>Fri, 01 Nov 2013 08:05:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Convert-FFT-to-IPP/m-p/972144#M20665</guid>
      <dc:creator>jupiter_s_</dc:creator>
      <dc:date>2013-11-01T08:05:54Z</dc:date>
    </item>
    <item>
      <title>Add test file</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Convert-FFT-to-IPP/m-p/972145#M20666</link>
      <description>&lt;P&gt;Add test file&lt;/P&gt;</description>
      <pubDate>Fri, 01 Nov 2013 08:08:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Convert-FFT-to-IPP/m-p/972145#M20666</guid>
      <dc:creator>jupiter_s_</dc:creator>
      <dc:date>2013-11-01T08:08:42Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Convert-FFT-to-IPP/m-p/972146#M20667</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;attached one works correctly - the main issue in your code - wrong callculation of order for ippsFFT - C always rounds result to zero - so in your case you have 3 instead of 4. One more minor bug - you should not use ippsFFTFree, this one should be used with InitAlloc only (when allocations are performed by IPP functions internally). And main performance bug - if you've created FFT Spec once - you should not free it before you do all required transforms, you shouldn't create it twice for fwd and inv operations. Also I corrected normalization flag - it should be done internally.&lt;/P&gt;
&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Tue, 05 Nov 2013 09:51:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Convert-FFT-to-IPP/m-p/972146#M20667</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2013-11-05T09:51:47Z</dc:date>
    </item>
    <item>
      <title>Tks u very much!</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Convert-FFT-to-IPP/m-p/972147#M20668</link>
      <description>&lt;P&gt;Tks u very much!&lt;/P&gt;</description>
      <pubDate>Sat, 09 Nov 2013 09:06:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Convert-FFT-to-IPP/m-p/972147#M20668</guid>
      <dc:creator>jupiter_s_</dc:creator>
      <dc:date>2013-11-09T09:06:24Z</dc:date>
    </item>
  </channel>
</rss>

