<?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 IPP optimized version for EMA needed (Exponential Moving Averag in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-optimized-version-for-EMA-needed-Exponential-Moving-Average/m-p/783247#M1727</link>
    <description>Hello, 

thanks for letting us know. I tracked it into our database, so we can review it during furture release implementation. 

Thanks,
Chao</description>
    <pubDate>Wed, 16 Mar 2011 02:24:45 GMT</pubDate>
    <dc:creator>Chao_Y_Intel</dc:creator>
    <dc:date>2011-03-16T02:24:45Z</dc:date>
    <item>
      <title>IPP optimized version for EMA needed (Exponential Moving Average)</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-optimized-version-for-EMA-needed-Exponential-Moving-Average/m-p/783246#M1726</link>
      <description>&lt;DIV id="_mcePaste"&gt;The exponential moving average is probably the most commonly used moving average&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;in financial applications. The 'C' version is shown below. &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;Test case is also shown at the bottom. &lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;Anyone up to converting this to a IPP optimized function. Shouldn't&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;be to hard, it just consists of addition/subtraction/division. I might&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;be able to pay you for your time. I also have other 'c' functions&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;that could be rewritten if someone gets motiviated. Test case&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;with performance before and after would be useful.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;This would be a good function to add to IPP, its used very commonly.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;For more on EMA:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;META content="text/html; charset=utf-8" http-equiv="content-type" /&gt;&lt;A href="http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:moving_averages"&gt;http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:moving_averages&lt;/A&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;//(Close - EMA(previous day)) x multiplier + EMA(previous day)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;void ema_32f(const float* src, float* out, int size, int factor)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;{&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  IppStatus status;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  float k;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  int n;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;	&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  n = size - factor;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  ippsMean_32f(src + n, factor, &amp;amp;out&lt;N&gt;, ippAlgHintFast);&lt;/N&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  --n;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  k = 2.0f / (factor + 1.0f);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  for(int m = n; m &amp;gt;= 0; --m)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;   out&lt;M&gt; = ((src&lt;M&gt; - out[m + 1]) * k) + out[m + 1];&lt;/M&gt;&lt;/M&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;}&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;DIV id="_mcePaste"&gt;float data[] = {22.27, 22.19, 22.08, 22.17, 22.18, 22.13, 22.23, 22.43, 22.24, 22.29, 22.15, 22.39,22.38, 22.61, 23.36, 24.05, 23.75, 23.83, 23.95, 23.63, 23.82, 23.87, 23.65, 23.19,23.10, 23.33, 22.68, 23.10, 22.40, 22.17, 22.17, 22.17, 22.17, 22.17};&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;float result[20];&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;ema_32f(data, result, 30, 10);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;assert(std::abs(22.296 - result[0]) &amp;lt;= 0.01)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;assert(std::abs(23.222 - result[19]) &amp;lt;= 0.01)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sun, 13 Mar 2011 21:59:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-optimized-version-for-EMA-needed-Exponential-Moving-Average/m-p/783246#M1726</guid>
      <dc:creator>reportbase</dc:creator>
      <dc:date>2011-03-13T21:59:44Z</dc:date>
    </item>
    <item>
      <title>IPP optimized version for EMA needed (Exponential Moving Averag</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-optimized-version-for-EMA-needed-Exponential-Moving-Average/m-p/783247#M1727</link>
      <description>Hello, 

thanks for letting us know. I tracked it into our database, so we can review it during furture release implementation. 

Thanks,
Chao</description>
      <pubDate>Wed, 16 Mar 2011 02:24:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-optimized-version-for-EMA-needed-Exponential-Moving-Average/m-p/783247#M1727</guid>
      <dc:creator>Chao_Y_Intel</dc:creator>
      <dc:date>2011-03-16T02:24:45Z</dc:date>
    </item>
    <item>
      <title>IPP optimized version for EMA needed (Exponential Moving Averag</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-optimized-version-for-EMA-needed-Exponential-Moving-Average/m-p/783248#M1728</link>
      <description>Thanks, that would be great and very useful. The EMA is pretty obvious, but there are others, maybe not so obvious in financial domain that would be pretty useful too. I could provide 'C' implementations of these, with test cases. &lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Many financial algorithms could really benefit from being converted to IPP. These financial algorithms are all pretty simple and no more complicated than EMA.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I use IPP where I can, but we still need to do straight 'C' for much of our work. I'd love for IPP to do the heavy lifting. Most of these financial algorithms are in the public domain and would be perfect for IPP. I just don't have much background in low level SSE2 and SSE3 or however IPP is done. As a 'C' programmer, IPP abstracts away the difficult bits, so I can just code in 'C'. Thanks for awesome library.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 16 Mar 2011 22:13:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/IPP-optimized-version-for-EMA-needed-Exponential-Moving-Average/m-p/783248#M1728</guid>
      <dc:creator>reportbase</dc:creator>
      <dc:date>2011-03-16T22:13:20Z</dc:date>
    </item>
  </channel>
</rss>

