<?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 Packed vs extended complex format? in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Packed-vs-extended-complex-format/m-p/907647#M13733</link>
    <description>&lt;P&gt;Hello, I have a quick question regarding the RCPack2D format and extended complex format. I'd like to normalize the result of an FFT by dividing it by its magnitude. Here's what I'm doing:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;1) Compute forward FFT via "ippiFFTFwd_RToPack_32f_C1R". Store in "Result1_complexPacked".&lt;/P&gt;
&lt;P&gt;2) Compute magnitude of above result via "ippiMagnitudePack_32f_C1R". Store in "Result2_real".&lt;/P&gt;
&lt;P&gt;3) Normalize "Result1_complexPacked" by computing (Result1_complexPacked / Result2_real). To do this:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;3a) Unpack "Result1_complexPacked" via "ippiPackToCplxExtend_32f32fc_C1R". Store in "Result1_unpacked".&lt;/P&gt;
&lt;P&gt;3b) Loop through and normalize in-place:&lt;/P&gt;
&lt;P&gt;for(int a = 0; a &amp;lt; Height; a++)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;int denominatorRowOffset = (a * Width);&lt;/P&gt;
&lt;P&gt;int numeratorRowOffset = (a * 2) * Width;&lt;/P&gt;
&lt;P&gt;for(b = 0; b &amp;lt; Width; b++)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;float denominator = *(Result2_real + denominatorRowOffset + b);&lt;/P&gt;
&lt;P&gt;*(Result1_unpacked + numeratorRowOffset + (b * 2)) =*(Result1_unpacked + numeratorRowOffset + (b * 2)) / denominator; // Real component.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;*(Result1_unpacked + numeratorRowOffset + (b * 2) + 1) =*(Result1_unpacked + numeratorRowOffset + (b * 2) + 1) / denominator; // Imaginary component.&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;3c) Repack "Result1_unpacked" for inverse FFT via "ippiCplxExtendToPack_32fc32f_C1R".&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Is my understanding/usage of the Packed-&amp;gt;Unpacked-&amp;gt;Packed operations as illustrated above correct? It's the output ordering I'm unclear on.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-L&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 26 Jan 2010 18:49:44 GMT</pubDate>
    <dc:creator>lkeene</dc:creator>
    <dc:date>2010-01-26T18:49:44Z</dc:date>
    <item>
      <title>Packed vs extended complex format?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Packed-vs-extended-complex-format/m-p/907647#M13733</link>
      <description>&lt;P&gt;Hello, I have a quick question regarding the RCPack2D format and extended complex format. I'd like to normalize the result of an FFT by dividing it by its magnitude. Here's what I'm doing:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;1) Compute forward FFT via "ippiFFTFwd_RToPack_32f_C1R". Store in "Result1_complexPacked".&lt;/P&gt;
&lt;P&gt;2) Compute magnitude of above result via "ippiMagnitudePack_32f_C1R". Store in "Result2_real".&lt;/P&gt;
&lt;P&gt;3) Normalize "Result1_complexPacked" by computing (Result1_complexPacked / Result2_real). To do this:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;3a) Unpack "Result1_complexPacked" via "ippiPackToCplxExtend_32f32fc_C1R". Store in "Result1_unpacked".&lt;/P&gt;
&lt;P&gt;3b) Loop through and normalize in-place:&lt;/P&gt;
&lt;P&gt;for(int a = 0; a &amp;lt; Height; a++)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;int denominatorRowOffset = (a * Width);&lt;/P&gt;
&lt;P&gt;int numeratorRowOffset = (a * 2) * Width;&lt;/P&gt;
&lt;P&gt;for(b = 0; b &amp;lt; Width; b++)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;float denominator = *(Result2_real + denominatorRowOffset + b);&lt;/P&gt;
&lt;P&gt;*(Result1_unpacked + numeratorRowOffset + (b * 2)) =*(Result1_unpacked + numeratorRowOffset + (b * 2)) / denominator; // Real component.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;*(Result1_unpacked + numeratorRowOffset + (b * 2) + 1) =*(Result1_unpacked + numeratorRowOffset + (b * 2) + 1) / denominator; // Imaginary component.&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;3c) Repack "Result1_unpacked" for inverse FFT via "ippiCplxExtendToPack_32fc32f_C1R".&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Is my understanding/usage of the Packed-&amp;gt;Unpacked-&amp;gt;Packed operations as illustrated above correct? It's the output ordering I'm unclear on.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;-L&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Jan 2010 18:49:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Packed-vs-extended-complex-format/m-p/907647#M13733</guid>
      <dc:creator>lkeene</dc:creator>
      <dc:date>2010-01-26T18:49:44Z</dc:date>
    </item>
    <item>
      <title>Packed vs extended complex format?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Packed-vs-extended-complex-format/m-p/907648#M13734</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;This code looks fine. For step 3 ( 3a - 3c), possbilly it has some more efficient way:&lt;/P&gt;
&lt;P&gt;It can divide the RCPack2D data by its magnitude according to RCPack2D format description in the manual. It does not need to convert to CplxExtend format, and then convert back.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Chao&lt;/P&gt;</description>
      <pubDate>Wed, 03 Feb 2010 08:09:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Packed-vs-extended-complex-format/m-p/907648#M13734</guid>
      <dc:creator>Chao_Y_Intel</dc:creator>
      <dc:date>2010-02-03T08:09:42Z</dc:date>
    </item>
  </channel>
</rss>

