<?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 vsldSSEditCorParameterization problem in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075110#M22522</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;Tried to use this function to obtain a correlation matrix from a symmetric one (in some sense of proximity).&lt;/P&gt;

&lt;P&gt;I&amp;nbsp;regret&amp;nbsp;to say&amp;nbsp; that the documentation is leaving a lot to be desired.&lt;/P&gt;

&lt;P&gt;I don't know what the expression : "If an input parameter is &lt;SPAN class="keyword"&gt;NULL&lt;/SPAN&gt;, the corresponding parameter in the Summary Statistics task descriptor remains unchanged." and I guess it is safe to assume that, whoever wrote it did not care to be understood anyway.&lt;/P&gt;

&lt;P&gt;To make matters worse, when one goes to "&lt;SPAN class="tablecap"&gt;Storage formats of a variance-covariance/correlation&lt;SPAN&gt;/cross-product&lt;/SPAN&gt; matrix &lt;/SPAN&gt;"&amp;nbsp;they read,&amp;nbsp;facing obvious and&amp;nbsp;total disregard for their time:&lt;/P&gt;

&lt;P&gt;"A symmetric variance-covariance/correlation&lt;SPAN&gt;/cross-product&lt;/SPAN&gt; matrix with elements &lt;SAMP class="codeph"&gt;&lt;FONT face="Courier New"&gt;&lt;VAR&gt;c&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt;,&lt;VAR&gt;j&lt;/VAR&gt;)&lt;/FONT&gt;&lt;/SAMP&gt; is packed as a one-dimensional array &lt;SAMP class="codeph"&gt;&lt;FONT face="Courier New"&gt;&lt;VAR&gt;cp&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt; + (2&lt;VAR&gt;n&lt;/VAR&gt; - &lt;VAR&gt;j&lt;/VAR&gt;)*(&lt;VAR&gt;j&lt;/VAR&gt; - 1)/2)&lt;/FONT&gt;&lt;/SAMP&gt; for &lt;VAR&gt;j&lt;/VAR&gt; &lt;SPAN class="eqsymbol"&gt;≤&lt;/SPAN&gt; &lt;VAR&gt;i&lt;/VAR&gt;. The size of the array is &lt;VAR&gt;p&lt;/VAR&gt;*(&lt;VAR&gt;p&lt;/VAR&gt;+ 1)/2."&lt;/P&gt;

&lt;P&gt;What is "n" ?? Trying very hard to keep it civil here !&lt;/P&gt;

&lt;P&gt;So let us assume it is the same as p.&lt;/P&gt;

&lt;P&gt;In short, what this dyslexic piece of "wording" says is (probably) :&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;VSL_SS_MATRIX_STORAGE_FULL is a row-major&amp;nbsp;matrix with all the entries filled (only God knows why, but at least this works, if you want/like to write everything twice&amp;nbsp;- who doesn't ! ).&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;VSL_SS_MATRIX_STORAGE_L_PACKED : a Fortran column-major matrix (again only deity will&amp;nbsp;comprehend why we switched storage layout), &lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;since consecutive i's occupy adjacent memory locations.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;The "funny" thing is that this does not work.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;Try it with boost's ublas symmetrix_matrix&amp;lt; double, lower, column_major&amp;gt; (in the appropriate namespace, i.e. boost::numeric::ublas) and you will see what you get.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;I am sorry for the tone, but have wasted lots of hours to track down the root of the problem, have spent many hours with whimsical storage preferences and sloppy documentation and I am really fed up with this situation, where there is complete lack of consistency across the library (you also ship blas and lapack which are industry standards, no?), and not even an effort for documentation common language.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;PS: the extraordinary thing its that from every topic in summary statistics you point to the same awful piece of "documentation" for symmetric matrices acceptable layouts !&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 13 Sep 2016 18:12:57 GMT</pubDate>
    <dc:creator>Petros_M_</dc:creator>
    <dc:date>2016-09-13T18:12:57Z</dc:date>
    <item>
      <title>vsldSSEditCorParameterization problem</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075110#M22522</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;Tried to use this function to obtain a correlation matrix from a symmetric one (in some sense of proximity).&lt;/P&gt;

&lt;P&gt;I&amp;nbsp;regret&amp;nbsp;to say&amp;nbsp; that the documentation is leaving a lot to be desired.&lt;/P&gt;

&lt;P&gt;I don't know what the expression : "If an input parameter is &lt;SPAN class="keyword"&gt;NULL&lt;/SPAN&gt;, the corresponding parameter in the Summary Statistics task descriptor remains unchanged." and I guess it is safe to assume that, whoever wrote it did not care to be understood anyway.&lt;/P&gt;

&lt;P&gt;To make matters worse, when one goes to "&lt;SPAN class="tablecap"&gt;Storage formats of a variance-covariance/correlation&lt;SPAN&gt;/cross-product&lt;/SPAN&gt; matrix &lt;/SPAN&gt;"&amp;nbsp;they read,&amp;nbsp;facing obvious and&amp;nbsp;total disregard for their time:&lt;/P&gt;

&lt;P&gt;"A symmetric variance-covariance/correlation&lt;SPAN&gt;/cross-product&lt;/SPAN&gt; matrix with elements &lt;SAMP class="codeph"&gt;&lt;FONT face="Courier New"&gt;&lt;VAR&gt;c&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt;,&lt;VAR&gt;j&lt;/VAR&gt;)&lt;/FONT&gt;&lt;/SAMP&gt; is packed as a one-dimensional array &lt;SAMP class="codeph"&gt;&lt;FONT face="Courier New"&gt;&lt;VAR&gt;cp&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt; + (2&lt;VAR&gt;n&lt;/VAR&gt; - &lt;VAR&gt;j&lt;/VAR&gt;)*(&lt;VAR&gt;j&lt;/VAR&gt; - 1)/2)&lt;/FONT&gt;&lt;/SAMP&gt; for &lt;VAR&gt;j&lt;/VAR&gt; &lt;SPAN class="eqsymbol"&gt;≤&lt;/SPAN&gt; &lt;VAR&gt;i&lt;/VAR&gt;. The size of the array is &lt;VAR&gt;p&lt;/VAR&gt;*(&lt;VAR&gt;p&lt;/VAR&gt;+ 1)/2."&lt;/P&gt;

&lt;P&gt;What is "n" ?? Trying very hard to keep it civil here !&lt;/P&gt;

&lt;P&gt;So let us assume it is the same as p.&lt;/P&gt;

&lt;P&gt;In short, what this dyslexic piece of "wording" says is (probably) :&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;VSL_SS_MATRIX_STORAGE_FULL is a row-major&amp;nbsp;matrix with all the entries filled (only God knows why, but at least this works, if you want/like to write everything twice&amp;nbsp;- who doesn't ! ).&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;VSL_SS_MATRIX_STORAGE_L_PACKED : a Fortran column-major matrix (again only deity will&amp;nbsp;comprehend why we switched storage layout), &lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;since consecutive i's occupy adjacent memory locations.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;The "funny" thing is that this does not work.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;Try it with boost's ublas symmetrix_matrix&amp;lt; double, lower, column_major&amp;gt; (in the appropriate namespace, i.e. boost::numeric::ublas) and you will see what you get.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;I am sorry for the tone, but have wasted lots of hours to track down the root of the problem, have spent many hours with whimsical storage preferences and sloppy documentation and I am really fed up with this situation, where there is complete lack of consistency across the library (you also ship blas and lapack which are industry standards, no?), and not even an effort for documentation common language.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="keyword"&gt;PS: the extraordinary thing its that from every topic in summary statistics you point to the same awful piece of "documentation" for symmetric matrices acceptable layouts !&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 13 Sep 2016 18:12:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075110#M22522</guid>
      <dc:creator>Petros_M_</dc:creator>
      <dc:date>2016-09-13T18:12:57Z</dc:date>
    </item>
    <item>
      <title>Hi Petros,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075111#M22523</link>
      <description>&lt;P&gt;Hi Petros,&lt;/P&gt;

&lt;P&gt;thanks for the feedback. We will analyze your comments and improve documentation accordingly. Will also investigate use of Boost classes together with Summary Statistics component of the library.&lt;/P&gt;

&lt;P&gt;Andrey&lt;/P&gt;</description>
      <pubDate>Wed, 14 Sep 2016 06:28:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075111#M22523</guid>
      <dc:creator>Andrey_N_Intel</dc:creator>
      <dc:date>2016-09-14T06:28:33Z</dc:date>
    </item>
    <item>
      <title>Hi Andrey,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075112#M22524</link>
      <description>&lt;P&gt;Hi Andrey,&lt;/P&gt;

&lt;P&gt;I do not think I made myself clear: What I meant to say is that it seems that mkl is providing the wrong answer !&lt;/P&gt;

&lt;P&gt;I attach a c++ code snippet and the results it produces.&lt;/P&gt;

&lt;P&gt;A couple of explanations, to make the reading easier/quicker:&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;the get_stg_fmt template provides with the mkl int required for editing the task and a string to identify the layout.&lt;/LI&gt;
	&lt;LI&gt;the test is (template-) parametrized by the symmetric matrix types involved.&lt;/LI&gt;
	&lt;LI&gt;&amp;nbsp;the array_type, for each symmetric type, is the storage of the matrix elements.&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;The code is pretty straightforward to follow. The main aims to be thorough, on the combinations of allowed symmetric types.&lt;/P&gt;

&lt;P&gt;Here is the output :&lt;/P&gt;

&lt;P&gt;As you notice (just&amp;nbsp;look at the first 3 outputs), depending on the storage type, one obtains different outputs !!!&lt;/P&gt;

&lt;P&gt;( Symm=full, Correl=full ) :&lt;BR /&gt;
	===========================&lt;BR /&gt;
	Input/Symm storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;
	Output/correl storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.20686&amp;nbsp;&amp;nbsp; 0.53587&amp;nbsp;&amp;nbsp; 0.20686&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; -0.71519&amp;nbsp;&amp;nbsp; 0.53587&amp;nbsp; -0.71519&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;

&lt;P&gt;( Symm=packed_l, Correl=full ) :&lt;BR /&gt;
	===============================&lt;BR /&gt;
	Input/Symm storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;
	Output/correl storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.12515&amp;nbsp;&amp;nbsp; 0.73058&amp;nbsp;&amp;nbsp; 0.12515&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; -0.58603&amp;nbsp;&amp;nbsp; 0.73058&amp;nbsp; -0.58603&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;

&lt;P&gt;( Symm=packed_u, Correl=full ) :&lt;BR /&gt;
	===============================&lt;BR /&gt;
	Input/Symm storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;
	Output/correl storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.10374&amp;nbsp;&amp;nbsp; 0.70577&amp;nbsp;&amp;nbsp; 0.10374&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; -0.6314&amp;nbsp;&amp;nbsp; 0.70577&amp;nbsp;&amp;nbsp; -0.6314&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;

&lt;P&gt;( Symm=full, Correl=packed_l ) :&lt;BR /&gt;
	===============================&lt;BR /&gt;
	Input/Symm storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;
	Output/correl storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.20686&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.53587&amp;nbsp; -0.71519&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;

&lt;P&gt;( Symm=packed_l, Correl=packed_l ) :&lt;BR /&gt;
	===================================&lt;BR /&gt;
	Input/Symm storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;
	Output/correl storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.12515&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.73058&amp;nbsp; -0.58603&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;

&lt;P&gt;( Symm=packed_u, Correl=packed_l ) :&lt;BR /&gt;
	===================================&lt;BR /&gt;
	Input/Symm storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;
	Output/correl storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.10374&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.70577&amp;nbsp;&amp;nbsp; -0.6314&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;

&lt;P&gt;( Symm=full, Correl=packed_u ) :&lt;BR /&gt;
	===============================&lt;BR /&gt;
	Input/Symm storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;
	Output/correl storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.20686&amp;nbsp;&amp;nbsp; 0.53587&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; -0.71519&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;

&lt;P&gt;( Symm=packed_l, Correl=packed_u ) :&lt;BR /&gt;
	===================================&lt;BR /&gt;
	Input/Symm storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;
	Output/correl storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.12515&amp;nbsp;&amp;nbsp; 0.73058&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; -0.58603&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;

&lt;P&gt;( Symm=packed_u, Correl=packed_u ) :&lt;BR /&gt;
	===================================&lt;BR /&gt;
	Input/Symm storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;
	Output/correl storage layout:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 0.10374&amp;nbsp;&amp;nbsp; 0.70577&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; -0.6314&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;This&amp;nbsp;has nothing to do with boost or ublas containers, which&amp;nbsp;are here only used to facilitate the logistics, can be thought of as syntactic sugar, if you wish, but have been forced to print&amp;nbsp;their contents, which one can consider as the starting point - just an unnecessarily&amp;nbsp;painful way to work ;-).&lt;/P&gt;

&lt;P&gt;If I have not done a booboo somewhere,&amp;nbsp;there is something really wrong in the mkl binary.&lt;/P&gt;

&lt;P&gt;Here is the code (sorry could not find how to attach) (run in vs2010, win7, debug, 32 bit with mkl 11.3) :&lt;/P&gt;

&lt;P&gt;NOTE:&lt;/P&gt;

&lt;OL&gt;
	&lt;LI&gt;looking at the locations of 1's in the output packed-upper storage, it seems plausible that the results are output in row-major order, in direct conflict with the (multiply) sited documentation snippet !&lt;/LI&gt;
	&lt;LI&gt;looking at the locations of 1's in the packed-lower storage, it seems that they are arranged as column-major UPPER storage ! (this is getting precious)&lt;/LI&gt;
&lt;/OL&gt;

&lt;P&gt;Of course, this does not explain why the numbers themselves do not agree in the first 3 cases !&lt;/P&gt;

&lt;P&gt;The code:&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;iomanip&amp;gt;
// boost
#include &amp;lt;boost/numeric/ublas/vector.hpp&amp;gt;
#include &amp;lt;boost/numeric/ublas/vector_proxy.hpp&amp;gt;
#include &amp;lt;boost/numeric/ublas/matrix.hpp&amp;gt;
#include &amp;lt;boost/numeric/ublas/matrix_proxy.hpp&amp;gt;
#include &amp;lt;boost/numeric/ublas/operation.hpp&amp;gt;
#include &amp;lt;boost/numeric/ublas/symmetric.hpp&amp;gt;
#include &amp;lt;boost/numeric/ublas/triangular.hpp&amp;gt;
#include &amp;lt;boost/numeric/ublas/banded.hpp&amp;gt;
// mkl
#include "mkl.h"

namespace ublas = boost::numeric::ublas ;
typedef ublas::vector&amp;lt;double&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VectorNumeric&amp;nbsp;&amp;nbsp;;
typedef ublas::matrix&amp;lt;double&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;symm_full_stg&amp;nbsp;&amp;nbsp;;
typedef ublas::symmetric_matrix&amp;lt;double, ublas::lower, ublas::column_major&amp;gt;&amp;nbsp;symm_packed_l_stg&amp;nbsp;;
typedef ublas::symmetric_matrix&amp;lt;double, ublas::upper, ublas::column_major&amp;gt;&amp;nbsp;symm_packed_u_stg&amp;nbsp;;

// defining a type-&amp;gt;mkl stg specifier mapper :
template &amp;lt;typename _S = symm_full_stg &amp;gt;
struct get_stg_fmt {
&amp;nbsp;static const MKL_INT value = VSL_SS_MATRIX_STORAGE_FULL ;
&amp;nbsp;static std::string str() { return std::string( "full" ) ; }
&amp;nbsp;};
template &amp;lt;&amp;gt;
struct get_stg_fmt&amp;lt; symm_packed_l_stg &amp;gt; {
&amp;nbsp;static const MKL_INT value = VSL_SS_MATRIX_STORAGE_L_PACKED ;
&amp;nbsp;static std::string str() { return std::string( "packed_l" ) ; }
&amp;nbsp;};
template &amp;lt;&amp;gt;
struct get_stg_fmt&amp;lt; symm_packed_u_stg &amp;gt; {
&amp;nbsp;static const MKL_INT value = VSL_SS_MATRIX_STORAGE_U_PACKED ;
&amp;nbsp;static std::string str() { return std::string( "packed_u" ) ; }
&amp;nbsp;} ;


template &amp;lt; typename _Correl, typename _Symm &amp;gt;
void
test_correl_parametrization() {

&amp;nbsp;std::string banner( "( Symm=" ) ;
&amp;nbsp;banner += get_stg_fmt&amp;lt; _Symm &amp;gt;::str() + ", Correl=" + get_stg_fmt&amp;lt; _Correl &amp;gt;::str() + " ) : " ;
&amp;nbsp;std::cout &amp;lt;&amp;lt; banner &amp;lt;&amp;lt; std::endl ;
&amp;nbsp;std::cout &amp;lt;&amp;lt; std::string( banner.size() - 2, '=' ) &amp;lt;&amp;lt; std::endl ;
&amp;nbsp;// initialize symm :
&amp;nbsp;const size_t n = 3 ;
&amp;nbsp;_Symm symm( n, n ) ;
&amp;nbsp;const double one = double( 1 ) ;
&amp;nbsp;// lower part :
&amp;nbsp;symm( 0, 0 ) = one ;
&amp;nbsp;symm( 1, 0 ) = double( .25 ) ;&amp;nbsp;symm( 1, 1 ) = one ;
&amp;nbsp;symm( 2, 0 ) = double( 0.6 ) ;&amp;nbsp;symm( 2, 1 ) = double( -0.8 ) ;&amp;nbsp;symm( 2, 2 ) = one ;
&amp;nbsp;// upper part;
&amp;nbsp;symm( 0, 1 ) = symm( 1, 0 ) ;
&amp;nbsp;symm( 0, 2 ) = symm( 2, 0 ) ;
&amp;nbsp;symm( 1, 2 ) = symm( 2, 1 );

&amp;nbsp;std::cout &amp;lt;&amp;lt; std::setw( 30 ) &amp;lt;&amp;lt; std::left &amp;lt;&amp;lt; "Input/Symm storage layout: " ;
&amp;nbsp;for ( typename _Symm::array_type::const_iterator it = symm.data().begin() ; it != symm.data().end() ; ++it )
&amp;nbsp;&amp;nbsp;std::cout &amp;lt;&amp;lt; std::setw( 10 ) &amp;lt;&amp;lt; std::right &amp;lt;&amp;lt; std::right &amp;lt;&amp;lt; std::setprecision( 3 ) &amp;lt;&amp;lt; *it ;
&amp;nbsp;std::cout &amp;lt;&amp;lt; std::endl ;
&amp;nbsp;// resize correl result:
&amp;nbsp;_Correl correl( n, n ) ;
&amp;nbsp;// mkl calls :
&amp;nbsp;MKL_INT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nF = n ;
&amp;nbsp;MKL_INT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stgfmtSymm = get_stg_fmt&amp;lt; _Symm &amp;gt;::value ;
&amp;nbsp;double const * const&amp;nbsp;pSymmData = &amp;amp;symm( 0, 0 ) ;
&amp;nbsp;MKL_INT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stgfmtCorrel = get_stg_fmt&amp;lt; _Correl &amp;gt;::value ;
&amp;nbsp;double * const&amp;nbsp;&amp;nbsp;&amp;nbsp;pCorrelData = &amp;amp;correl( 0, 0 ) ;

&amp;nbsp;void * task ;
&amp;nbsp;MKL_INT status ;
&amp;nbsp;status = vsldSSNewTask( &amp;amp;task, &amp;amp;nF, 0, NULL, NULL, NULL, NULL ) ;
&amp;nbsp;status = vsldSSEditCorParameterization( task, pSymmData, &amp;amp;stgfmtSymm, pCorrelData, &amp;amp;stgfmtCorrel ) ;
&amp;nbsp;status = vsldSSCompute( task, VSL_SS_PARAMTR_COR, VSL_SS_METHOD_SD ) ;
&amp;nbsp;status = vslSSDeleteTask( &amp;amp;task ) ;
&amp;nbsp;MKL_Free_Buffers() ;
&amp;nbsp;// results :
&amp;nbsp;std::cout &amp;lt;&amp;lt; std::setw( 30 ) &amp;lt;&amp;lt; std::left &amp;lt;&amp;lt; "Output/correl storage layout: " ;
&amp;nbsp;for ( typename _Correl::array_type::const_iterator it = correl.data().begin() ; it != correl.data().end() ; ++it )
&amp;nbsp;&amp;nbsp;std::cout &amp;lt;&amp;lt; std::setw( 10 ) &amp;lt;&amp;lt; std::right &amp;lt;&amp;lt; std::setprecision( 5 ) &amp;lt;&amp;lt; *it ;
&amp;nbsp;std::cout &amp;lt;&amp;lt; std::endl ;
&amp;nbsp;std::cout &amp;lt;&amp;lt; std::endl ;
&amp;nbsp;}

int main() {

&amp;nbsp;test_correl_parametrization&amp;lt;symm_full_stg, symm_full_stg&amp;nbsp;&amp;nbsp;&amp;gt;() ;
&amp;nbsp;test_correl_parametrization&amp;lt;symm_full_stg, symm_packed_l_stg&amp;nbsp;&amp;gt;() ;
&amp;nbsp;test_correl_parametrization&amp;lt;symm_full_stg, symm_packed_u_stg&amp;nbsp;&amp;gt;() ;
&amp;nbsp;test_correl_parametrization&amp;lt;symm_packed_l_stg, symm_full_stg&amp;nbsp;&amp;nbsp;&amp;gt;() ;
&amp;nbsp;test_correl_parametrization&amp;lt;symm_packed_l_stg, symm_packed_l_stg&amp;nbsp;&amp;gt;() ;
&amp;nbsp;test_correl_parametrization&amp;lt;symm_packed_l_stg, symm_packed_u_stg&amp;nbsp;&amp;gt;() ;
&amp;nbsp;test_correl_parametrization&amp;lt;symm_packed_u_stg, symm_full_stg&amp;nbsp;&amp;nbsp;&amp;gt;() ;
&amp;nbsp;test_correl_parametrization&amp;lt;symm_packed_u_stg, symm_packed_l_stg&amp;nbsp;&amp;gt;() ;
&amp;nbsp;test_correl_parametrization&amp;lt;symm_packed_u_stg, symm_packed_u_stg&amp;nbsp;&amp;gt;() ;

&amp;nbsp;return 1 ;
&amp;nbsp;}

&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 14 Sep 2016 19:25:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075112#M22524</guid>
      <dc:creator>Petros_M_</dc:creator>
      <dc:date>2016-09-14T19:25:00Z</dc:date>
    </item>
    <item>
      <title>Thanks, Petros, for the test</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075113#M22525</link>
      <description>&lt;P&gt;Thanks, Petros, for the test case. It will help run the analysis. Andrey&lt;/P&gt;</description>
      <pubDate>Thu, 15 Sep 2016 06:16:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075113#M22525</guid>
      <dc:creator>Andrey_N_Intel</dc:creator>
      <dc:date>2016-09-15T06:16:09Z</dc:date>
    </item>
    <item>
      <title>I tried the same test with :</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075114#M22526</link>
      <description>&lt;P&gt;I tried the same test with :&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;typedef ublas::symmetric_matrix&amp;lt;double, ublas::lower, ublas::row_major&amp;gt;	symm_packed_l_stg	;
typedef ublas::symmetric_matrix&amp;lt;double, ublas::upper, ublas::row_major&amp;gt;	symm_packed_u_stg	;
&lt;/PRE&gt;

&lt;P&gt;i.e. replacing column major by row major layout.&lt;/P&gt;

&lt;P&gt;The numbers now agree among themselves :&lt;/P&gt;

&lt;P&gt;( Symm=full, Correl=full ) :&lt;BR /&gt;
	===========================&lt;BR /&gt;
	Input/Symm storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 1.000&lt;BR /&gt;
	Output/correl storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp;1.000 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 1.000&lt;/P&gt;

&lt;P&gt;( Symm=packed_l, Correl=full ) :&lt;BR /&gt;
	===============================&lt;BR /&gt;
	Input/Symm storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 1.000&lt;BR /&gt;
	Output/correl storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp;1.000 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 1.000&lt;/P&gt;

&lt;P&gt;( Symm=packed_u, Correl=full ) :&lt;BR /&gt;
	===============================&lt;BR /&gt;
	Input/Symm storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 1.000&lt;BR /&gt;
	Output/correl storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp;1.000 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 1.000&lt;/P&gt;

&lt;P&gt;( Symm=full, Correl=packed_l ) :&lt;BR /&gt;
	===============================&lt;BR /&gt;
	Input/Symm storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 1.000&lt;BR /&gt;
	Output/correl storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp;1.000 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 1.000&lt;/P&gt;

&lt;P&gt;( Symm=packed_l, Correl=packed_l ) :&lt;BR /&gt;
	===================================&lt;BR /&gt;
	Input/Symm storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 1.000&lt;BR /&gt;
	Output/correl storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp;1.000 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 1.000&lt;/P&gt;

&lt;P&gt;( Symm=packed_u, Correl=packed_l ) :&lt;BR /&gt;
	===================================&lt;BR /&gt;
	Input/Symm storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 1.000&lt;BR /&gt;
	Output/correl storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp;1.000 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 1.000&lt;/P&gt;

&lt;P&gt;( Symm=full, Correl=packed_u ) :&lt;BR /&gt;
	===============================&lt;BR /&gt;
	Input/Symm storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 1.000&lt;BR /&gt;
	Output/correl storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp;1.000 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 1.000&lt;/P&gt;

&lt;P&gt;( Symm=packed_l, Correl=packed_u ) :&lt;BR /&gt;
	===================================&lt;BR /&gt;
	Input/Symm storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 1.000&lt;BR /&gt;
	Output/correl storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp;1.000 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 1.000&lt;/P&gt;

&lt;P&gt;( Symm=packed_u, Correl=packed_u ) :&lt;BR /&gt;
	===================================&lt;BR /&gt;
	Input/Symm storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp; 0.250 &amp;nbsp; &amp;nbsp; 0.600 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.800 &amp;nbsp; &amp;nbsp; 1.000&lt;BR /&gt;
	Output/correl storage layout: &amp;nbsp; &amp;nbsp; &amp;nbsp;1.000 &amp;nbsp; &amp;nbsp; 0.207 &amp;nbsp; &amp;nbsp; 0.536 &amp;nbsp; &amp;nbsp; 1.000 &amp;nbsp; &amp;nbsp;-0.715 &amp;nbsp; &amp;nbsp; 1.000&lt;/P&gt;

&lt;P&gt;So, it seems that the documentation is w-r-o-n-g !&lt;/P&gt;

&lt;H2&gt;Description&lt;/H2&gt;

&lt;P&gt;The &lt;SPAN class="option"&gt;vslSSEditCovCor&lt;/SPAN&gt; routine replaces pointers to the array of means, covariance/correlation arrays, and their storage format with values passed as corresponding parameters of the routine. See &lt;A&gt;Table "Storage formats of a variance-covariance/correlation/cross-product matrix"&lt;/A&gt; for possible values of the &lt;SPAN class="parmname"&gt;cov_storage&lt;/SPAN&gt; and &lt;SPAN class="parmname"&gt;cor_storage&lt;/SPAN&gt; parameters. If an input parameter is &lt;SPAN class="keyword"&gt;NULL&lt;/SPAN&gt;, the old value of the parameter remains unchanged in the Summary Statistics task descriptor.&lt;/P&gt;

&lt;DIV class="tablenoborder"&gt;&lt;A name="TBL10-25"&gt;&lt;!-- --&gt;&lt;/A&gt;

	&lt;TABLE border="1" cellpadding="4" class="AllLineLong" frame="hsides" id="TBL10-25" rules="all" summary=""&gt;
		&lt;CAPTION&gt;&lt;SPAN class="tablecap"&gt;Storage formats of a variance-covariance/correlation/cross-product matrix &lt;/SPAN&gt;&lt;/CAPTION&gt;
		&lt;THEAD align="left"&gt;
			&lt;TR&gt;
				&lt;TH class="cellrowborder" id="d66703e345" valign="top" width="45%"&gt;
					&lt;P&gt;Parameter&lt;/P&gt;
				&lt;/TH&gt;
				&lt;TH class="row-nocellborder" id="d66703e348" valign="top" width="55%"&gt;
					&lt;P&gt;Description&lt;/P&gt;
				&lt;/TH&gt;
			&lt;/TR&gt;
		&lt;/THEAD&gt;
		&lt;TBODY&gt;
			&lt;TR&gt;
				&lt;TD class="cellrowborder" headers="d66703e345 " valign="top" width="45%"&gt;
					&lt;P&gt;&lt;SPAN class="keyword"&gt;VSL_SS_MATRIX_STORAGE_FULL&lt;/SPAN&gt;&lt;/P&gt;
				&lt;/TD&gt;
				&lt;TD class="row-nocellborder" headers="d66703e348 " valign="top" width="55%"&gt;
					&lt;P&gt;A symmetric variance-covariance/correlation/cross-product matrix is a one-dimensional array with elements &lt;SAMP class="codeph"&gt;&lt;VAR&gt;c&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt;,&lt;VAR&gt;j&lt;/VAR&gt;)&lt;/SAMP&gt; stored as &lt;SAMP class="codeph"&gt;&lt;VAR&gt;cp&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt;*&lt;VAR&gt;p&lt;/VAR&gt; + &lt;VAR&gt;j&lt;/VAR&gt;)&lt;/SAMP&gt;. The size of the array is &lt;VAR&gt;p&lt;/VAR&gt;*&lt;VAR&gt;p&lt;/VAR&gt;.&lt;/P&gt;
				&lt;/TD&gt;
			&lt;/TR&gt;
			&lt;TR&gt;
				&lt;TD class="cellrowborder" headers="d66703e345 " valign="top" width="45%"&gt;
					&lt;P&gt;&lt;SPAN class="keyword"&gt;VSL_SS_MATRIX_STORAGE_L_PACKED&lt;/SPAN&gt;&lt;/P&gt;
				&lt;/TD&gt;
				&lt;TD class="row-nocellborder" headers="d66703e348 " valign="top" width="55%"&gt;
					&lt;P&gt;A symmetric variance-covariance/correlation/cross-product matrix with elements &lt;SAMP class="codeph"&gt;&lt;VAR&gt;c&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt;,&lt;VAR&gt;j&lt;/VAR&gt;)&lt;/SAMP&gt; is packed as a one-dimensional array &lt;S&gt;&lt;SAMP class="codeph"&gt;&lt;VAR&gt;cp&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt; + (2&lt;VAR&gt;n&lt;/VAR&gt; - &lt;VAR&gt;j&lt;/VAR&gt;)*(&lt;VAR&gt;j&lt;/VAR&gt; - 1)/2)&lt;/SAMP&gt; for &lt;VAR&gt;j&lt;/VAR&gt; &lt;SPAN class="eqsymbol"&gt;≤&lt;/SPAN&gt; &lt;VAR&gt;i&lt;/VAR&gt;. The size of the array is &lt;VAR&gt;p&lt;/VAR&gt;*(&lt;VAR&gt;p&lt;/VAR&gt;+ 1)/2.&lt;/S&gt;&lt;/P&gt;
				&lt;/TD&gt;
			&lt;/TR&gt;
			&lt;TR&gt;
				&lt;TD class="cellrowborder" headers="d66703e345 " valign="top" width="45%"&gt;
					&lt;P&gt;&lt;SPAN class="keyword"&gt;VSL_SS_MATRIX_STORAGE_U_PACKED&lt;/SPAN&gt;&lt;/P&gt;
				&lt;/TD&gt;
				&lt;TD class="row-nocellborder" headers="d66703e348 " valign="top" width="55%"&gt;
					&lt;P&gt;A symmetric variance-covariance/correlation/cross-product matrix with elements &lt;SAMP class="codeph"&gt;&lt;VAR&gt;c&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt;,&lt;VAR&gt;j&lt;/VAR&gt;)&lt;/SAMP&gt; is packed as a one-dimensional array&lt;S&gt; &lt;SAMP class="codeph"&gt;&lt;VAR&gt;cp&lt;/VAR&gt;(&lt;VAR&gt;i&lt;/VAR&gt; + &lt;VAR&gt;j&lt;/VAR&gt;*(&lt;VAR&gt;j&lt;/VAR&gt; - &lt;/SAMP&gt;&lt;/S&gt;&lt;/P&gt;

					&lt;P&gt;&lt;S&gt;&lt;SAMP class="codeph"&gt;1)/2)&lt;/SAMP&gt; for &lt;VAR&gt;i&lt;/VAR&gt; &lt;SPAN class="eqsymbol"&gt;≤&lt;/SPAN&gt; &lt;VAR&gt;j&lt;/VAR&gt;. The size of the array is &lt;VAR&gt;p&lt;/VAR&gt;*(&lt;VAR&gt;p&lt;/VAR&gt;+ 1)/2.&lt;/S&gt;&lt;/P&gt;
				&lt;/TD&gt;
			&lt;/TR&gt;
		&lt;/TBODY&gt;
	&lt;/TABLE&gt;
&lt;/DIV&gt;

&lt;P&gt;Now the question is, is it the wrong only for this editor or for all ?&lt;/P&gt;

&lt;P&gt;Can someone pls respond? This is important and I cannot test the entire vsl on my own (nor should I be expected to)&lt;/P&gt;</description>
      <pubDate>Thu, 15 Sep 2016 15:29:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075114#M22526</guid>
      <dc:creator>Petros_M_</dc:creator>
      <dc:date>2016-09-15T15:29:46Z</dc:date>
    </item>
    <item>
      <title>Hi Petros,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075115#M22527</link>
      <description>&lt;P&gt;Hi Petros,&lt;/P&gt;

&lt;P&gt;Yes, the documentation for Summary Stats component of the library provides incorrect description of the packed formats for variance-covariance, correlation, cross-product, partial covariance, and correlation parametrization, and should be fixed on our side. To form&amp;nbsp;upper or lower&amp;nbsp;format&amp;nbsp;for symmetric matrix&amp;nbsp;in row-major layout the library packs its upper or lower triangle by rows into 1d array, respectively.&lt;/P&gt;

&lt;P&gt;Pls let me know, if it addresses your question on the documentation topic.&lt;/P&gt;

&lt;P&gt;Thanks,&lt;/P&gt;

&lt;P&gt;Andrey&lt;/P&gt;</description>
      <pubDate>Fri, 16 Sep 2016 10:52:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075115#M22527</guid>
      <dc:creator>Andrey_N_Intel</dc:creator>
      <dc:date>2016-09-16T10:52:11Z</dc:date>
    </item>
    <item>
      <title>Hi Andrey,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075116#M22528</link>
      <description>&lt;P&gt;Hi Andrey,&lt;/P&gt;

&lt;P&gt;Thank you for the response.&lt;/P&gt;

&lt;P&gt;Just to be clear, this extends to all editors in summary stats. Correct ?&lt;/P&gt;

&lt;P&gt;Thx again, P-&lt;/P&gt;

&lt;P&gt;PS: A couple of suggestions:&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;for the full case, the library should offer to provide-with/require only the lower or the upper part to be filled (same happens in LAPACK)&lt;/LI&gt;
	&lt;LI&gt;maybe you want to consider a leading dimension input (again as in LAPACK) so people avoid copying from and to existing structures&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 16 Sep 2016 13:46:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075116#M22528</guid>
      <dc:creator>Petros_M_</dc:creator>
      <dc:date>2016-09-16T13:46:00Z</dc:date>
    </item>
    <item>
      <title>Hi Petros,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075117#M22529</link>
      <description>&lt;P&gt;Hi Petros,&lt;/P&gt;

&lt;P&gt;Yes, this extends to all editors that support&amp;nbsp;data layout parameter.&lt;/P&gt;

&lt;P&gt;Thanks for the suggestions. Will have a look.&lt;/P&gt;

&lt;P&gt;Andrey&lt;/P&gt;</description>
      <pubDate>Sat, 17 Sep 2016 09:43:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/vsldSSEditCorParameterization-problem/m-p/1075117#M22529</guid>
      <dc:creator>Andrey_N_Intel</dc:creator>
      <dc:date>2016-09-17T09:43:33Z</dc:date>
    </item>
  </channel>
</rss>

