<?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 Hello, in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053416#M21296</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;I'm trying to reproduce your problem. Can you please let me know a few details:&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;Your OS, compiler, MKL version?&lt;/LI&gt;
	&lt;LI&gt;CPU information.&lt;/LI&gt;
	&lt;LI&gt;Which timing function do you use?&lt;/LI&gt;
	&lt;LI&gt;How do you link MKL into your code, dynamic, static, single dynamic library?&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;Thanks.&lt;/P&gt;</description>
    <pubDate>Tue, 08 Jul 2014 20:20:46 GMT</pubDate>
    <dc:creator>Zhang_Z_Intel</dc:creator>
    <dc:date>2014-07-08T20:20:46Z</dc:date>
    <item>
      <title>Run time problems with eigenvalue decomposition</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053413#M21293</link>
      <description>&lt;P&gt;Dear all,&lt;BR /&gt;
	I have the following problem with the LAPACK driver routines used for solving symmetric eigenvalue problems in C++. As the input, I have complex Hermitian matrices with the dimension ~30X30. On these matrices, I run the routines provided by the MKL. In particular I tried the routines "heev",&amp;nbsp;"hpev" and "hpevd" to compute the eigenvalue decompositions including the eigenvectors.&lt;BR /&gt;
	Normally, there is no problem with theses routines. The run time is stable around a certain mean value. However, using one routine many times in a row causes problems:&lt;/P&gt;

&lt;P&gt;&lt;FONT size="1" face="Verdana"&gt;&lt;FONT size="1" face="Verdana"&gt;- After ~ 2 000 000 function calls, at a certain point,&amp;nbsp;the runtime increases to its double. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT size="1" face="Verdana"&gt;&lt;FONT size="1" face="Verdana"&gt;-&amp;nbsp;After this peak in the run time, there are tremendous variations in the run time and&amp;nbsp;peaks in&amp;nbsp;run times occur regularly. &amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT size="1" face="Verdana"&gt;&lt;FONT size="1" face="Verdana"&gt;- After restarting the application, the run time gets&amp;nbsp;back to&amp;nbsp;normal, however, after many function calls, the run time gets unstable again.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT size="1" face="Verdana"&gt;&lt;FONT size="1" face="Verdana"&gt;These problems occur with &lt;/FONT&gt;the routines "heev", "hpev" and "hpevd". However, if I use only&amp;nbsp;diagonal matrices for input, the runtime is stable. &lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;FONT size="1" face="Verdana"&gt;&lt;FONT size="1" face="Verdana"&gt;What can I do to fix this issiu?&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;FONT size="1" face="Verdana"&gt;&lt;FONT size="1" face="Verdana"&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jul 2014 10:58:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053413#M21293</guid>
      <dc:creator>Adrian_S_1</dc:creator>
      <dc:date>2014-07-01T10:58:29Z</dc:date>
    </item>
    <item>
      <title>If possible, can you please</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053414#M21294</link>
      <description>&lt;P&gt;If possible, can you please upload a test program showing how you make the two million calls and how you measure the run time? I'd also suggest you run it through a profiler (such as VTune) to get some hint on where the time was spent. How is the memory space for the matrices allocated, and how is it de-allocated?&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jul 2014 19:52:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053414#M21294</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2014-07-01T19:52:38Z</dc:date>
    </item>
    <item>
      <title>Thank you Zhang.</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053415#M21295</link>
      <description>&lt;P&gt;Thank you Zhang.&lt;/P&gt;

&lt;P&gt;Let me answer your questions:&lt;/P&gt;

&lt;P&gt;&amp;gt;&amp;gt; If possible, can you please upload a test program showing how you make the two million calls and how you measure the run time?&lt;/P&gt;

&lt;P&gt;Making a test program is not that easy since my c++ application is just part of a larger application. I measure the run time&amp;nbsp;within&amp;nbsp;calling the routine zhpev ~6000 times.:&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;zhpev (&amp;amp;jobz, &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;&amp;amp;uplo, &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;&amp;amp;dim, &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;(double_complex *)&amp;amp;par-&amp;gt;A_H_MKL[0], &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;(double *)&amp;amp;D[0], &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;(double_complex *)&amp;amp;U[0][0], &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;&amp;amp;ldz, &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;par-&amp;gt;work, &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;par-&amp;gt;rwork,&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;&amp;amp;info); &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;There is no doubt that the increase in&amp;nbsp;run time after many calls is due to zhpev. After replacing this routine by some dummy routine, there are no run time issues any more.&lt;/P&gt;

&lt;P&gt;&amp;gt;&amp;gt; &amp;nbsp;How is the memory space for the matrices allocated, and how is it de-allocated?&lt;/P&gt;

&lt;P&gt;In my opinion memory is not the issue here. All arrays are static. Checking the memory consumption in the task manager tells me that the ram is only occupied for 1/6 and only 500 MB out of 3 GB are used.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 04 Jul 2014 06:41:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053415#M21295</guid>
      <dc:creator>Adrian_S_1</dc:creator>
      <dc:date>2014-07-04T06:41:41Z</dc:date>
    </item>
    <item>
      <title>Hello,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053416#M21296</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;I'm trying to reproduce your problem. Can you please let me know a few details:&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;Your OS, compiler, MKL version?&lt;/LI&gt;
	&lt;LI&gt;CPU information.&lt;/LI&gt;
	&lt;LI&gt;Which timing function do you use?&lt;/LI&gt;
	&lt;LI&gt;How do you link MKL into your code, dynamic, static, single dynamic library?&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Tue, 08 Jul 2014 20:20:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053416#M21296</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2014-07-08T20:20:46Z</dc:date>
    </item>
    <item>
      <title>Dear Zhang</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053417#M21297</link>
      <description>&lt;P&gt;Dear Zhang&lt;/P&gt;

&lt;P&gt;let me answer your questions:&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;&lt;EM&gt;Your OS, compiler, MKL version&lt;/EM&gt;: OS: Windows Embedded Standard SP3. I use the MKL version that comes with the Code Composer XE 2013 SP1.&lt;/LI&gt;
	&lt;LI&gt;&lt;EM&gt;CPU information.&lt;/EM&gt; Intel Xeon E5530&amp;nbsp;@2,4 GHz&lt;/LI&gt;
	&lt;LI&gt;&lt;EM&gt;Which timing function do you use?&amp;nbsp; &lt;/EM&gt;I use the timing function that is provided in our company.&lt;/LI&gt;
	&lt;LI&gt;&lt;EM&gt;How do you link MKL into your code, dynamic, static, single dynamic library? &lt;/EM&gt;I link the MKL static into my code.&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;All the best,&lt;/P&gt;

&lt;P&gt;Adrian&lt;/P&gt;</description>
      <pubDate>Wed, 09 Jul 2014 07:36:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053417#M21297</guid>
      <dc:creator>Adrian_S_1</dc:creator>
      <dc:date>2014-07-09T07:36:16Z</dc:date>
    </item>
    <item>
      <title>Thanks for your patience. I</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053418#M21298</link>
      <description>&lt;P&gt;Thanks for your patience. I've been trying to reproduce your problem, but I still cannot. Please see the attached code and the makefile.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Jul 2014 21:13:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053418#M21298</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2014-07-22T21:13:22Z</dc:date>
    </item>
    <item>
      <title>Dear Zhang,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053419#M21299</link>
      <description>&lt;P&gt;Dear Zhang,&lt;/P&gt;

&lt;P&gt;Thank you&amp;nbsp;for all you effort.&lt;/P&gt;

&lt;P&gt;I found out that my problem occures only if I call the eigendecomposition routine inside a thread. To create a thread, I use the CreateThread-Routine from Windows.&lt;/P&gt;

&lt;P&gt;I tried "mkl_set_num_threads&lt;SPAN class="sep"&gt;(&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;1&lt;/SPAN&gt;&lt;SPAN class="sep"&gt; )&lt;/SPAN&gt;&lt;SPAN class="delim"&gt;;" but the run time issues are still present. &lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN class="delim"&gt;Are there any rules that I have to obay if I call the &lt;/SPAN&gt;eigendecomposition routine inside a thread?&lt;/P&gt;

&lt;P&gt;All the best,&lt;/P&gt;

&lt;P&gt;Adrian&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 29 Jul 2014 14:08:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053419#M21299</guid>
      <dc:creator>Adrian_S_1</dc:creator>
      <dc:date>2014-07-29T14:08:16Z</dc:date>
    </item>
    <item>
      <title>Here is some small code</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053420#M21300</link>
      <description>&lt;P&gt;Here is some small code example to reproduce the run time problems. For two threads, the run time increases after ~500 time measurements (for my computer).&lt;/P&gt;

&lt;P&gt;Let me explain my code&lt;/P&gt;

&lt;UL&gt;
	&lt;LI&gt;I have used the multi-thread example of &lt;A href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx" rel="nofollow"&gt;&lt;U&gt;&lt;FONT color="#0000ff"&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx&lt;/A&gt;&lt;/LI&gt;
	&lt;LI&gt;In the thread function, I inserted the function "eigendecomposition" which contains "zhpev"&lt;/LI&gt;
	&lt;LI&gt;I also included functions to measure the run time.&lt;/LI&gt;
&lt;/UL&gt;

&lt;P&gt;This is my code&lt;/P&gt;

&lt;PRE class="lang-cpp prettyprint prettyprinted"&gt;&lt;CODE&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;&amp;lt;windows.h&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;&amp;lt;tchar.h&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;&amp;lt;strsafe.h&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;"stdafx.h"&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;"mkl_lapack.h"&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;"mkl_service.h"&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;&amp;lt;time.h&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;&amp;lt;stdio.h&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;&amp;lt;iostream&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;&amp;lt;fstream&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#include&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;&amp;lt;iostream&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 

&lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;using&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;namespace&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; std&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#define&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; CACHE_LINE  &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;32&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#define&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; CACHE_ALIGN __declspec&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;align&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;CACHE_LINE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;))&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#define&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; MAX_THREADS &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;2&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;#define&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; BUF_SIZE &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;255&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

DWORD WINAPI &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;MyThreadFunction&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; LPVOID lpParam &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;void&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;ErrorHandler&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LPTSTR lpszFunction&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

&lt;/SPAN&gt;&lt;SPAN class="com"&gt;// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;// This is the critical function.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;void&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;Eigendecomposition&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;();&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="com"&gt;// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

&lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;typedef&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;struct&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;MyData&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; val1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; val2&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; MYDATA&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;PMYDATA&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;



&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; _tmain&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;()&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    PMYDATA pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;MAX_THREADS&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;];&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    DWORD   dwThreadIdArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;MAX_THREADS&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;];&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    HANDLE  hThreadArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;MAX_THREADS&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;];&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 

    std&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;::&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;ofstream ofs&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;double&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; tstart&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;double&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; tend&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;double&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; proc_time_pure&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;for&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; j&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;j&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;10000&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;j&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;++){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Start one iteration&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    tstart &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; clock&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;();&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 



    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Create MAX_THREADS worker threads.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;for&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;MAX_THREADS&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;++&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;


        pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;PMYDATA&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;HeapAlloc&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;GetProcessHeap&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(),&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; HEAP_ZERO_MEMORY&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
                &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;MYDATA&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;));&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

        &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;==&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

            &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;ExitProcess&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;2&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;



        pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]-&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;val1 &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]-&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;val2 &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;+&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;100&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

        &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Create the thread to begin execution on its own.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

        hThreadArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;CreateThread&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
            NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                   &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// default security attributes&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
            &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                      &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// use default stack size  &lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
            &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;MyThreadFunction&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;       &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// thread function name&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
            pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;],&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;          &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// argument to thread function &lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
            &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                      &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// use default creation flags &lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
            &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;dwThreadIdArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;   &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// returns the thread identifier &lt;/SPAN&gt;&lt;SPAN class="pln"&gt;




        &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;hThreadArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;==&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
        &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
           &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;ErrorHandler&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;TEXT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"CreateThread"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;));&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
           &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;ExitProcess&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;3&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// End of main thread creation loop.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Wait until all threads have terminated.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;WaitForMultipleObjects&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;MAX_THREADS&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; hThreadArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; TRUE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; INFINITE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;



    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;for&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;MAX_THREADS&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;++)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;CloseHandle&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;hThreadArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;!=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
            &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;HeapFree&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;GetProcessHeap&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(),&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
            pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Ensure address is not reused.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    tend &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; clock&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;();&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    proc_time_pure &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; tend&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;-&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tstart&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Print processing time into console and write it into a file&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    printf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"   Processing time: %4.3f \n"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; proc_time_pure&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1000.0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    ofs&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;open &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"Processing_time.txt"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; std&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;::&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;ofstream&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;::&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;out &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;|&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; std&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;::&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;ofstream&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;::&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;app&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

      ofs &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; proc_time_pure&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1000.0&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;" "&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

      ofs&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;close&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;();&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;


DWORD WINAPI &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;MyThreadFunction&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; LPVOID lpParam &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
    HANDLE hStdout&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    PMYDATA pDataArray&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    TCHAR msgBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;BUF_SIZE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;];&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;size_t&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; cchStringSize&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    DWORD dwChars&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;



    hStdout &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;GetStdHandle&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;STD_OUTPUT_HANDLE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; hStdout &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;==&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; INVALID_HANDLE_VALUE &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;



    pDataArray &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;PMYDATA&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;lpParam&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
   &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Critical function&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;Eigendecomposition&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;();&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 



&lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;void&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;ErrorHandler&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LPTSTR lpszFunction&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Retrieve the system error message for the last-error code.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    LPVOID lpMsgBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    LPVOID lpDisplayBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    DWORD dw &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;GetLastError&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;();&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 

    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;FormatMessage&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        FORMAT_MESSAGE_ALLOCATE_BUFFER &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;|&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
        FORMAT_MESSAGE_FROM_SYSTEM &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;|&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        FORMAT_MESSAGE_IGNORE_INSERTS&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        dw&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        MAKELANGID&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LANG_NEUTRAL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; SUBLANG_DEFAULT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LPTSTR&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;lpMsgBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Display the error message.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    lpDisplayBuf &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LPVOID&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;LocalAlloc&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LMEM_ZEROINIT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
        &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;lstrlen&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;((&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LPCTSTR&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; lpMsgBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;+&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; lstrlen&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;((&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LPCTSTR&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; lpszFunction&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;+&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;40&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;TCHAR&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;));&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;StringCchPrintf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;((&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LPTSTR&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;lpDisplayBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
        &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;LocalSize&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;lpDisplayBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;TCHAR&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        TEXT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"%s failed with error %d: %s"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
        lpszFunction&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; dw&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; lpMsgBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;MessageBox&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LPCTSTR&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; lpDisplayBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; TEXT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"Error"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; MB_OK&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 

    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Free error-handling buffer allocations.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;LocalFree&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;lpMsgBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;LocalFree&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;lpDisplayBuf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

&lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;void&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;Eigendecomposition&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;const&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; M &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;32&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;typedef&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; MKL_Complex16  double_complex&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;const&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;char&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    jobz &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;'V'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;const&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;char&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    uplo &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="str"&gt;'L'&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// lower triangular part of input matrix is used&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;const&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; MKL_INT dim &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;const&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; MKL_INT ldz &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;const&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; MKL_INT LWORK &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;2&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;const&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; MKL_INT LRWORK &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;3&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;2&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    MKL_INT       info &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;


    double_complex A_H_MKL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;+&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)/&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;2&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;];&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    CACHE_ALIGN double_complex       work&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LWORK&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;];&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
    CACHE_ALIGN &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;double&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;               rwork&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;LRWORK&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;];&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;double&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; D&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;];&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    double_complex U&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;][&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;];&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;for&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;500&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;i&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;++&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// Create the input matrix&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
    &lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;for&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; tmp&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; tmp &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;+&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;M&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)/&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;2&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; tmp&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;++){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        A_H_MKL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmp&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;].&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;real &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        A_H_MKL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;tmp&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;].&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;imag &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;

    &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// This is the mkl function&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
        zhpev&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;jobz&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                                &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// const char* jobz,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
          &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;uplo&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                                &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// const char* uplo,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
          &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;dim&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                                 &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// const MKL_INT* n,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
          &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;double_complex &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*)&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;A_H_MKL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;],&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;        &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// double_complex* ap,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
          &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="kwd"&gt;double&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*)&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;D&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;],&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                      &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// double* w,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
          &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;double_complex &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*)&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;U&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;][&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;],&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;           &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// double_complex* z,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
          &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;ldz&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                                 &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// const MKL_INT* ldz,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
          work&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                                 &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// double_complex* work,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
          rwork&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                                &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// double* rwork,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
          &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;info&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                               &lt;/SPAN&gt;&lt;SPAN class="com"&gt;// MKL_INT* info&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;


&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;
&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 30 Jul 2014 12:49:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Run-time-problems-with-eigenvalue-decomposition/m-p/1053420#M21300</guid>
      <dc:creator>Adrian_S_1</dc:creator>
      <dc:date>2014-07-30T12:49:46Z</dc:date>
    </item>
  </channel>
</rss>

