<?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 Re: Error in ippsFFTFwd_RToCCS_32f_I in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Error-in-ippsFFTFwd-RToCCS-32f-I/m-p/865757#M8322</link>
    <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/443957"&gt;wizardsd&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;P&gt;Hello! I think there is a bug in ippsFFTFwd_RToCCS_32f_I function in IPP 6. I wrote an example, that reproduces error.&lt;/P&gt;
&lt;P&gt;int FFTOrder = 16; &lt;BR /&gt;int SampleCount = 1 &amp;lt;&amp;lt; FFTOrder; &lt;BR /&gt;int BufferSize = SampleCount+3; &lt;BR /&gt;Ipp32f* TestBuffer = new Ipp32f[BufferSize]; &lt;BR /&gt;&lt;BR /&gt;TestBuffer[BufferSize-3] = 30; &lt;BR /&gt;TestBuffer[BufferSize-2] = 20; &lt;BR /&gt;TestBuffer[BufferSize-1] = 10; &lt;BR /&gt;&lt;BR /&gt;IppStatus ipps; &lt;BR /&gt;Ipp32f Phase = 0; &lt;BR /&gt;ipps = ippsTone_Direct_32f(TestBuffer, SampleCount, 1, 0.125, &amp;amp;Phase, ippAlgHintAccurate); &lt;BR /&gt;assert(ipps == ippStsNoErr); &lt;BR /&gt;&lt;BR /&gt;assert(TestBuffer[BufferSize-3] == 30); &lt;BR /&gt;assert(TestBuffer[BufferSize-2] == 20); &lt;BR /&gt;assert(TestBuffer[BufferSize-1] == 10); &lt;BR /&gt;&lt;BR /&gt;IppsFFTSpec_R_32f* FFTR16Spec; &lt;BR /&gt;&lt;BR /&gt;ipps = ippsFFTInitAlloc_R_32f(&amp;amp;FFTR16Spec, 16, IPP_FFT_DIV_FWD_BY_N, ippAlgHintAccurate); &lt;BR /&gt;assert(ipps == ippStsNoErr); &lt;BR /&gt;&lt;BR /&gt;ipps = ippsFFTFwd_RToCCS_32f_I(TestBuffer, FFTR16Spec, NULL); &lt;BR /&gt;assert(ipps == ippStsNoErr); &lt;BR /&gt;&lt;BR /&gt;assert(TestBuffer[BufferSize-3] == 30); &lt;BR /&gt;assert(TestBuffer[BufferSize-2] == 20); &lt;BR /&gt;assert(TestBuffer[BufferSize-1] == 10); &lt;BR /&gt;&lt;BR /&gt;ippsFFTFree_R_32f(FFTR16Spec); &lt;BR /&gt;&lt;BR /&gt;if(TestBuffer[BufferSize-3] != 30) &lt;BR /&gt;printf("Error!n"); &lt;BR /&gt;else &lt;BR /&gt;printf("OKn"); &lt;BR /&gt;&lt;BR /&gt;delete[] TestBuffer;&lt;/P&gt;
&lt;P&gt;Using ippsMalloc instread of "new Ipp32f" changes nothing.&lt;/P&gt;
&lt;P&gt;Can anyone correct me on correct IPP? :)&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Hello! CCS is packed format, it is N+2 long than original signal N if N is even. You call the FFT by in-place mode, that mean your input and output use same buffer. So it is expected the TestBuffer[65536],TestBuffer[65537] were used by output buffer. You may refer to ipps manual ippsman.pdf =&amp;gt;Table 7-4&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;/P&gt;
&lt;P&gt;Ying&lt;/P&gt;</description>
    <pubDate>Tue, 22 Sep 2009 10:59:02 GMT</pubDate>
    <dc:creator>Ying_H_Intel</dc:creator>
    <dc:date>2009-09-22T10:59:02Z</dc:date>
    <item>
      <title>Error in ippsFFTFwd_RToCCS_32f_I</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Error-in-ippsFFTFwd-RToCCS-32f-I/m-p/865756#M8321</link>
      <description>&lt;P&gt;Hello! I think there is a bug in ippsFFTFwd_RToCCS_32f_I function in IPP 6. I wrote an example, that reproduces error.&lt;/P&gt;
&lt;P&gt;int FFTOrder = 16;   &lt;BR /&gt; int SampleCount = 1 &amp;lt;&amp;lt; FFTOrder;   &lt;BR /&gt; int BufferSize = SampleCount+3;   &lt;BR /&gt; Ipp32f* TestBuffer = new Ipp32f[BufferSize];   &lt;BR /&gt; &lt;BR /&gt; TestBuffer[BufferSize-3] = 30;   &lt;BR /&gt; TestBuffer[BufferSize-2] = 20;   &lt;BR /&gt; TestBuffer[BufferSize-1] = 10;   &lt;BR /&gt; &lt;BR /&gt; IppStatus ipps;   &lt;BR /&gt; Ipp32f Phase = 0;   &lt;BR /&gt; ipps = ippsTone_Direct_32f(TestBuffer, SampleCount, 1, 0.125, &amp;amp;Phase, ippAlgHintAccurate);   &lt;BR /&gt; assert(ipps == ippStsNoErr);   &lt;BR /&gt; &lt;BR /&gt; assert(TestBuffer[BufferSize-3] == 30);   &lt;BR /&gt; assert(TestBuffer[BufferSize-2] == 20);   &lt;BR /&gt; assert(TestBuffer[BufferSize-1] == 10);   &lt;BR /&gt; &lt;BR /&gt; IppsFFTSpec_R_32f* FFTR16Spec;   &lt;BR /&gt; &lt;BR /&gt; ipps = ippsFFTInitAlloc_R_32f(&amp;amp;FFTR16Spec, 16, IPP_FFT_DIV_FWD_BY_N, ippAlgHintAccurate);   &lt;BR /&gt; assert(ipps == ippStsNoErr);   &lt;BR /&gt; &lt;BR /&gt; ipps = ippsFFTFwd_RToCCS_32f_I(TestBuffer, FFTR16Spec, NULL);   &lt;BR /&gt; assert(ipps == ippStsNoErr);   &lt;BR /&gt; &lt;BR /&gt; assert(TestBuffer[BufferSize-3] == 30);   &lt;BR /&gt; assert(TestBuffer[BufferSize-2] == 20);   &lt;BR /&gt; assert(TestBuffer[BufferSize-1] == 10);   &lt;BR /&gt; &lt;BR /&gt; ippsFFTFree_R_32f(FFTR16Spec);   &lt;BR /&gt; &lt;BR /&gt; if(TestBuffer[BufferSize-3] != 30)   &lt;BR /&gt; printf("Error!\n");   &lt;BR /&gt; else   &lt;BR /&gt; printf("OK\n");   &lt;BR /&gt; &lt;BR /&gt; delete[] TestBuffer;&lt;/P&gt;
&lt;P&gt;Using ippsMalloc instread of "new Ipp32f" changes nothing.&lt;/P&gt;
&lt;P&gt;Can anyone correct me on correct IPP? :)&lt;/P&gt;</description>
      <pubDate>Mon, 21 Sep 2009 15:51:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Error-in-ippsFFTFwd-RToCCS-32f-I/m-p/865756#M8321</guid>
      <dc:creator>wizardsd</dc:creator>
      <dc:date>2009-09-21T15:51:33Z</dc:date>
    </item>
    <item>
      <title>Re: Error in ippsFFTFwd_RToCCS_32f_I</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Error-in-ippsFFTFwd-RToCCS-32f-I/m-p/865757#M8322</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="margin-top: 5px; width: 100%;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/443957"&gt;wizardsd&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;P&gt;Hello! I think there is a bug in ippsFFTFwd_RToCCS_32f_I function in IPP 6. I wrote an example, that reproduces error.&lt;/P&gt;
&lt;P&gt;int FFTOrder = 16; &lt;BR /&gt;int SampleCount = 1 &amp;lt;&amp;lt; FFTOrder; &lt;BR /&gt;int BufferSize = SampleCount+3; &lt;BR /&gt;Ipp32f* TestBuffer = new Ipp32f[BufferSize]; &lt;BR /&gt;&lt;BR /&gt;TestBuffer[BufferSize-3] = 30; &lt;BR /&gt;TestBuffer[BufferSize-2] = 20; &lt;BR /&gt;TestBuffer[BufferSize-1] = 10; &lt;BR /&gt;&lt;BR /&gt;IppStatus ipps; &lt;BR /&gt;Ipp32f Phase = 0; &lt;BR /&gt;ipps = ippsTone_Direct_32f(TestBuffer, SampleCount, 1, 0.125, &amp;amp;Phase, ippAlgHintAccurate); &lt;BR /&gt;assert(ipps == ippStsNoErr); &lt;BR /&gt;&lt;BR /&gt;assert(TestBuffer[BufferSize-3] == 30); &lt;BR /&gt;assert(TestBuffer[BufferSize-2] == 20); &lt;BR /&gt;assert(TestBuffer[BufferSize-1] == 10); &lt;BR /&gt;&lt;BR /&gt;IppsFFTSpec_R_32f* FFTR16Spec; &lt;BR /&gt;&lt;BR /&gt;ipps = ippsFFTInitAlloc_R_32f(&amp;amp;FFTR16Spec, 16, IPP_FFT_DIV_FWD_BY_N, ippAlgHintAccurate); &lt;BR /&gt;assert(ipps == ippStsNoErr); &lt;BR /&gt;&lt;BR /&gt;ipps = ippsFFTFwd_RToCCS_32f_I(TestBuffer, FFTR16Spec, NULL); &lt;BR /&gt;assert(ipps == ippStsNoErr); &lt;BR /&gt;&lt;BR /&gt;assert(TestBuffer[BufferSize-3] == 30); &lt;BR /&gt;assert(TestBuffer[BufferSize-2] == 20); &lt;BR /&gt;assert(TestBuffer[BufferSize-1] == 10); &lt;BR /&gt;&lt;BR /&gt;ippsFFTFree_R_32f(FFTR16Spec); &lt;BR /&gt;&lt;BR /&gt;if(TestBuffer[BufferSize-3] != 30) &lt;BR /&gt;printf("Error!n"); &lt;BR /&gt;else &lt;BR /&gt;printf("OKn"); &lt;BR /&gt;&lt;BR /&gt;delete[] TestBuffer;&lt;/P&gt;
&lt;P&gt;Using ippsMalloc instread of "new Ipp32f" changes nothing.&lt;/P&gt;
&lt;P&gt;Can anyone correct me on correct IPP? :)&lt;/P&gt;
&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;Hello! CCS is packed format, it is N+2 long than original signal N if N is even. You call the FFT by in-place mode, that mean your input and output use same buffer. So it is expected the TestBuffer[65536],TestBuffer[65537] were used by output buffer. You may refer to ipps manual ippsman.pdf =&amp;gt;Table 7-4&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;/P&gt;
&lt;P&gt;Ying&lt;/P&gt;</description>
      <pubDate>Tue, 22 Sep 2009 10:59:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Error-in-ippsFFTFwd-RToCCS-32f-I/m-p/865757#M8322</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2009-09-22T10:59:02Z</dc:date>
    </item>
  </channel>
</rss>

