<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Coding mistake or numerical problem? in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993527#M18145</link>
    <description>&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Hello.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;I think you've made a mistake in your code while computing PT. You want PT, dimension nxn, n=3,be returned in p and pass the leading dimension of p lda=2.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Here is my code that should work correctly.&lt;/DIV&gt;
&lt;DIV&gt;------------------------------------------------------------&lt;/DIV&gt;
&lt;DIV&gt;#include "stdio.h"&lt;BR /&gt;int main() {&lt;BR /&gt; double A[6] = { 4, 8, 11, 7, 14, -2 };&lt;BR /&gt; int m = 2, n = 3, lda = 2, ldaa = 3, lwork = 100, info;&lt;BR /&gt; int i, j;&lt;BR /&gt; double D[3], E[3], TAUQ[3], TAUP[3], WORK[100], AA[9];&lt;BR /&gt; double temp;&lt;BR /&gt;&lt;BR /&gt; printf( "On entry: A=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; m; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; n; j++ ) {&lt;BR /&gt; printf( "%f ", A[i+j*lda] );&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; // Reduce to bidiagonal&lt;BR /&gt; dgebrd_( &amp;amp;m, &amp;amp;n, A, &amp;amp;lda, D, E, TAUQ, TAUP, WORK, &amp;amp;lwork, &amp;amp;info );&lt;BR /&gt; printf( "After DGEBRD: A=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; m; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; n; j++ ) {&lt;BR /&gt; printf( "%f ", A[i+j*lda] );&lt;BR /&gt; AA[i+j*ldaa] = A[i+j*lda];&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; printf( "After DGEBRD: D= %f, %f
", D[0], D[1] );&lt;BR /&gt; printf( "After DGEBRD: E= %f
", E[0] );&lt;BR /&gt; printf( "After DGEBRD: TAUQ= %f, %f
", TAUQ[0], TAUQ[1] );&lt;BR /&gt; printf( "After DGEBRD: TAUP= %f, %f
", TAUP[0], TAUP[1] );&lt;BR /&gt; // Restore Q&lt;BR /&gt; dorgbr_( "Q", &amp;amp;m, &amp;amp;m, &amp;amp;n, A, &amp;amp;lda, TAUQ, WORK, &amp;amp;lwork, &amp;amp;info, 1 );&lt;BR /&gt; printf( "After DORGBR: Q=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; m; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; m; j++ ) {&lt;BR /&gt; printf( "%f ", A[i+j*lda] );&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; // Restore PT&lt;BR /&gt; dorgbr_( "P", &amp;amp;n, &amp;amp;n, &amp;amp;m, AA, &amp;amp;ldaa, TAUP, WORK, &amp;amp;lwork, &amp;amp;info, 1 );&lt;BR /&gt; printf( "After DORGBR: PT=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; n; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; n; j++ ) {&lt;BR /&gt; printf( "%f ", AA[i+j*ldaa] );&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; // Compute B*PT&lt;BR /&gt; AA[1] = E[0] * AA[0] + D[1] * AA[1];&lt;BR /&gt; AA[4] = E[0] * AA[3] + D[1] * AA[4];&lt;BR /&gt; AA[7] = E[0] * AA[6] + D[1] * AA[7];&lt;BR /&gt; AA[0] = D[0] * AA[0];&lt;BR /&gt; AA[3] = D[0] * AA[3];&lt;BR /&gt; AA[6] = D[0] * AA[6];&lt;BR /&gt; // Compute Q*B*PT&lt;BR /&gt; temp = A[0]*AA[0] + A[2]*AA[1];&lt;BR /&gt; AA[1] = A[1]*AA[0] + A[3]*AA[1];&lt;BR /&gt; AA[0] = temp;&lt;BR /&gt; temp = A[0]*AA[3] + A[2]*AA[4];&lt;BR /&gt; AA[4] = A[1]*AA[3] + A[3]*AA[4];&lt;BR /&gt; AA[3] = temp;&lt;BR /&gt; temp = A[0]*AA[6] + A[2]*AA[7];&lt;BR /&gt; AA[7] = A[1]*AA[6] + A[3]*AA[7];&lt;BR /&gt; AA[6] = temp;&lt;BR /&gt; printf( "Q*B*PT=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; m; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; n; j++ ) {&lt;BR /&gt; printf( "%f ", AA[i+j*ldaa] );&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; return 0;&lt;BR /&gt;}&lt;BR /&gt;
&lt;DIV&gt;------------------------------------------------------------&lt;/DIV&gt;
&lt;DIV&gt;The output:&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;On entry: A=&lt;BR /&gt;4.000000 11.000000 14.000000 &lt;BR /&gt;8.000000 7.000000 -2.000000 &lt;BR /&gt;After DGEBRD: A=&lt;BR /&gt;-18.248288 0.494420 0.629262 &lt;BR /&gt;-4.438773 -9.863939 -0.917237 &lt;BR /&gt;After DGEBRD: D= -18.248288, -9.86393
9&lt;BR /&gt;After DGEBRD: E= -4.438773&lt;BR /&gt;After DGEBRD: TAUQ= 0.000000, 0.000000&lt;BR /&gt;After DGEBRD: TAUP= 1.219199, 1.086175&lt;BR /&gt;After DORGBR: Q=&lt;BR /&gt;1.000000 0.000000 &lt;BR /&gt;0.000000 1.000000 &lt;BR /&gt;After DORGBR: PT=&lt;BR /&gt;-0.219199 -0.602796 -0.767195 &lt;BR /&gt;-0.712396 -0.438397 0.547997 &lt;BR /&gt;-0.666667 0.666667 -0.333333 &lt;BR /&gt;Q*B*PT=&lt;BR /&gt;4.000000 11.000000 14.000000 &lt;BR /&gt;8.000000 7.000000 -2.000000 &lt;BR /&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Tue, 29 Mar 2005 03:58:51 GMT</pubDate>
    <dc:creator>michael_chuvelev</dc:creator>
    <dc:date>2005-03-29T03:58:51Z</dc:date>
    <item>
      <title>Coding mistake or numerical problem?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993526#M18144</link>
      <description>&lt;DIV&gt;I am new to the math kernel, but this simple example should have worked. Is there a code problem, or did I just happen to choose a bad example? The result is closeto the original. It is trying to factor A into QBP using dorgbr. &lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Here is the code. It uses a few of my own routines (transpose, copy, and display). Results are at the end. Copy is abused to create larger memory than the orig so there is room for the result.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;-------------------------------&lt;/DIV&gt;
&lt;DIV&gt;//required parameters, oversized, same notation as the documentation&lt;BR /&gt;int n,m, lda, lwork, info;&lt;BR /&gt;double d[100],e[100], tauq[100],taup[100];&lt;BR /&gt;char ul, pq;&lt;BR /&gt;double work[100];&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;double a[] =  //this is another test problem from the book, C style&lt;BR /&gt;{&lt;BR /&gt;4,11,14,&lt;BR /&gt;8,7,-2&lt;BR /&gt;};&lt;/DIV&gt;
&lt;DIV&gt;double madeup[] = //what P should be, more or less, hand computed&lt;BR /&gt;{&lt;BR /&gt;-4/18.2482875908, 11/18.2482875908, 14/18.2482875908,&lt;BR /&gt;-.91,.541,.446,&lt;BR /&gt;0,0,0 //padding&lt;BR /&gt;};&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;lda = 2; &lt;BR /&gt;m = 2;&lt;BR /&gt;n = 3;&lt;BR /&gt;lwork = 100;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;double * at = transpose(a,m,n); //at = a transposed for fortran memory problems&lt;/DIV&gt;
&lt;DIV&gt;//step 1 -- make a bidiagonal matrix from A and copy it -- this matrix is called 'B'&lt;/DIV&gt;
&lt;DIV&gt;dgebrd(&amp;amp;m,&amp;amp;n,at,&amp;amp;lda,d,e,tauq,taup,work,&amp;amp;lwork,&amp;amp;info);&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;double * p = ct_copy(at, n,n); //save a copy of b for gettin P&amp;amp;Q&lt;BR /&gt;double * q = ct_copy(at, n,n); //save another copy of b (these allocate n*n locations even though matrix is smaller)&lt;/DIV&gt;
&lt;DIV&gt;//Now try to create P and Q such that A = QBP -- (p is transposed?)&lt;BR /&gt;pq = 'Q'; //get Q&lt;/DIV&gt;
&lt;DIV&gt;if(m&amp;gt;n)&lt;BR /&gt;dorgbr(&amp;amp;pq,&amp;amp;m,&amp;amp;n,&amp;amp;n,q,&amp;amp;lda,tauq,work,&amp;amp;lwork,&amp;amp;info); &lt;BR /&gt;else&lt;BR /&gt;dorgbr(&amp;amp;pq,&amp;amp;m,&amp;amp;m,&amp;amp;n,q,&amp;amp;lda,tauq,work,&amp;amp;lwork,&amp;amp;info); &lt;/DIV&gt;
&lt;DIV&gt;pq = 'P'; // get P &lt;/DIV&gt;
&lt;DIV&gt;if(n &amp;gt; m)&lt;BR /&gt;dorgbr(&amp;amp;pq,&amp;amp;m,&amp;amp;n,&amp;amp;m,p,&amp;amp;lda,taup,work,&amp;amp;lwork,&amp;amp;info); &lt;BR /&gt;else&lt;BR /&gt;dorgbr(&amp;amp;pq,&amp;amp;n,&amp;amp;n,&amp;amp;m,p,&amp;amp;lda,taup,work,&amp;amp;lwork,&amp;amp;info); &lt;/DIV&gt;
&lt;DIV&gt;//Right, so now we can supposedly get A back from QBP or QB P(transposed)&lt;/DIV&gt;
&lt;DIV&gt;double * Q; &lt;BR /&gt;double * P;&lt;BR /&gt;double * B;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;Q = transpose(q,m,m); //convert back to C memory alignment and multiply&lt;BR /&gt;cout &amp;lt;&amp;lt; "Q ___________________________________"&amp;lt;&amp;lt; endl;&lt;BR /&gt;display(Q, m,m,3); //this seems reasonable&lt;/DIV&gt;
&lt;DIV&gt;P = transpose(p,m,n);&lt;BR /&gt;//P = ct_copy(p,m,n); //its already transposed, just copy it?&lt;/DIV&gt;
&lt;DIV&gt;cout &amp;lt;&amp;lt; "P ___________________________________"&amp;lt;&amp;lt; endl;&lt;BR /&gt;display(P, m,n,10); &lt;/DIV&gt;
&lt;DIV&gt;&lt;BR /&gt;B = asgn(m,n,0.0); //fill an m*n with zeros&lt;/DIV&gt;
&lt;DIV&gt;B[0] = d[0]; //reconstruct B (manually for this example)&lt;BR /&gt;B[4] = d[1];&lt;BR /&gt;B[3] = e[0];&lt;/DIV&gt;
&lt;DIV&gt;cout &amp;lt;&amp;lt; "B ___________________________________"&amp;lt;&amp;lt; endl;&lt;BR /&gt;display(B,m,n,3);&lt;/DIV&gt;
&lt;DIV&gt;double * new_result = multiply(B,m,n,madeup,3,3);&lt;BR /&gt;double * tr = multiply(Q,m,m,B,m,n);&lt;BR /&gt;double *res = multiply(tr,m,n,P,n,n);&lt;BR /&gt;cout &amp;lt;&amp;lt; "A ___________________________________"&amp;lt;&amp;lt; endl;&lt;BR /&gt;display(a,m,n,1);&lt;BR /&gt;cout &amp;lt;&amp;lt; "Result ___________________________________"&amp;lt;&amp;lt; endl;&lt;BR /&gt;display(res,m,n,5); //wrong answer - Where is the problem???&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;-------------------------------&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Here is the output:&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Q ___________________________________&lt;BR /&gt;1.000 0.000&lt;BR /&gt;0.000 1.000&lt;/DIV&gt;
&lt;DIV&gt;P ___________________________________&lt;BR /&gt;-0.2191986497 -0.4383972994 -0.7123956116&lt;BR /&gt;-0.7671952740 -0.6027962867 0.5479966243&lt;/DIV&gt;
&lt;DIV&gt;B ___________________________________&lt;BR /&gt;
-18.248 0.000 0.000&lt;BR /&gt;-4.438 -9.863 0.000&lt;/DIV&gt;
&lt;DIV&gt;A ___________________________________&lt;BR /&gt;4.0 11.0 14.0&lt;BR /&gt;8.0 7.0 -2.0&lt;/DIV&gt;
&lt;DIV&gt;Result ___________________________________&lt;BR /&gt;3.99999 7.99999 13.00000&lt;BR /&gt;8.54054 7.89189 -2.24324&lt;/DIV&gt;
&lt;DIV&gt;Press any key to continue&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 23 Mar 2005 23:23:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993526#M18144</guid>
      <dc:creator>jonnin</dc:creator>
      <dc:date>2005-03-23T23:23:19Z</dc:date>
    </item>
    <item>
      <title>Re: Coding mistake or numerical problem?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993527#M18145</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Hello.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;I think you've made a mistake in your code while computing PT. You want PT, dimension nxn, n=3,be returned in p and pass the leading dimension of p lda=2.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;Here is my code that should work correctly.&lt;/DIV&gt;
&lt;DIV&gt;------------------------------------------------------------&lt;/DIV&gt;
&lt;DIV&gt;#include "stdio.h"&lt;BR /&gt;int main() {&lt;BR /&gt; double A[6] = { 4, 8, 11, 7, 14, -2 };&lt;BR /&gt; int m = 2, n = 3, lda = 2, ldaa = 3, lwork = 100, info;&lt;BR /&gt; int i, j;&lt;BR /&gt; double D[3], E[3], TAUQ[3], TAUP[3], WORK[100], AA[9];&lt;BR /&gt; double temp;&lt;BR /&gt;&lt;BR /&gt; printf( "On entry: A=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; m; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; n; j++ ) {&lt;BR /&gt; printf( "%f ", A[i+j*lda] );&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; // Reduce to bidiagonal&lt;BR /&gt; dgebrd_( &amp;amp;m, &amp;amp;n, A, &amp;amp;lda, D, E, TAUQ, TAUP, WORK, &amp;amp;lwork, &amp;amp;info );&lt;BR /&gt; printf( "After DGEBRD: A=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; m; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; n; j++ ) {&lt;BR /&gt; printf( "%f ", A[i+j*lda] );&lt;BR /&gt; AA[i+j*ldaa] = A[i+j*lda];&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; printf( "After DGEBRD: D= %f, %f
", D[0], D[1] );&lt;BR /&gt; printf( "After DGEBRD: E= %f
", E[0] );&lt;BR /&gt; printf( "After DGEBRD: TAUQ= %f, %f
", TAUQ[0], TAUQ[1] );&lt;BR /&gt; printf( "After DGEBRD: TAUP= %f, %f
", TAUP[0], TAUP[1] );&lt;BR /&gt; // Restore Q&lt;BR /&gt; dorgbr_( "Q", &amp;amp;m, &amp;amp;m, &amp;amp;n, A, &amp;amp;lda, TAUQ, WORK, &amp;amp;lwork, &amp;amp;info, 1 );&lt;BR /&gt; printf( "After DORGBR: Q=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; m; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; m; j++ ) {&lt;BR /&gt; printf( "%f ", A[i+j*lda] );&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; // Restore PT&lt;BR /&gt; dorgbr_( "P", &amp;amp;n, &amp;amp;n, &amp;amp;m, AA, &amp;amp;ldaa, TAUP, WORK, &amp;amp;lwork, &amp;amp;info, 1 );&lt;BR /&gt; printf( "After DORGBR: PT=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; n; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; n; j++ ) {&lt;BR /&gt; printf( "%f ", AA[i+j*ldaa] );&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; // Compute B*PT&lt;BR /&gt; AA[1] = E[0] * AA[0] + D[1] * AA[1];&lt;BR /&gt; AA[4] = E[0] * AA[3] + D[1] * AA[4];&lt;BR /&gt; AA[7] = E[0] * AA[6] + D[1] * AA[7];&lt;BR /&gt; AA[0] = D[0] * AA[0];&lt;BR /&gt; AA[3] = D[0] * AA[3];&lt;BR /&gt; AA[6] = D[0] * AA[6];&lt;BR /&gt; // Compute Q*B*PT&lt;BR /&gt; temp = A[0]*AA[0] + A[2]*AA[1];&lt;BR /&gt; AA[1] = A[1]*AA[0] + A[3]*AA[1];&lt;BR /&gt; AA[0] = temp;&lt;BR /&gt; temp = A[0]*AA[3] + A[2]*AA[4];&lt;BR /&gt; AA[4] = A[1]*AA[3] + A[3]*AA[4];&lt;BR /&gt; AA[3] = temp;&lt;BR /&gt; temp = A[0]*AA[6] + A[2]*AA[7];&lt;BR /&gt; AA[7] = A[1]*AA[6] + A[3]*AA[7];&lt;BR /&gt; AA[6] = temp;&lt;BR /&gt; printf( "Q*B*PT=
" );&lt;BR /&gt; for( i = 0; i &amp;lt; m; i++ ) {&lt;BR /&gt; for( j = 0; j &amp;lt; n; j++ ) {&lt;BR /&gt; printf( "%f ", AA[i+j*ldaa] );&lt;BR /&gt; }&lt;BR /&gt; printf( "
" );&lt;BR /&gt; }&lt;BR /&gt; return 0;&lt;BR /&gt;}&lt;BR /&gt;
&lt;DIV&gt;------------------------------------------------------------&lt;/DIV&gt;
&lt;DIV&gt;The output:&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;On entry: A=&lt;BR /&gt;4.000000 11.000000 14.000000 &lt;BR /&gt;8.000000 7.000000 -2.000000 &lt;BR /&gt;After DGEBRD: A=&lt;BR /&gt;-18.248288 0.494420 0.629262 &lt;BR /&gt;-4.438773 -9.863939 -0.917237 &lt;BR /&gt;After DGEBRD: D= -18.248288, -9.86393
9&lt;BR /&gt;After DGEBRD: E= -4.438773&lt;BR /&gt;After DGEBRD: TAUQ= 0.000000, 0.000000&lt;BR /&gt;After DGEBRD: TAUP= 1.219199, 1.086175&lt;BR /&gt;After DORGBR: Q=&lt;BR /&gt;1.000000 0.000000 &lt;BR /&gt;0.000000 1.000000 &lt;BR /&gt;After DORGBR: PT=&lt;BR /&gt;-0.219199 -0.602796 -0.767195 &lt;BR /&gt;-0.712396 -0.438397 0.547997 &lt;BR /&gt;-0.666667 0.666667 -0.333333 &lt;BR /&gt;Q*B*PT=&lt;BR /&gt;4.000000 11.000000 14.000000 &lt;BR /&gt;8.000000 7.000000 -2.000000 &lt;BR /&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 29 Mar 2005 03:58:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993527#M18145</guid>
      <dc:creator>michael_chuvelev</dc:creator>
      <dc:date>2005-03-29T03:58:51Z</dc:date>
    </item>
    <item>
      <title>Re: Coding mistake or numerical problem?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993528#M18146</link>
      <description>&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;Thank you. I will compare the two to see where I went wrong. I have n = 3, lda 2, and a 3x3 allocated, so it will require a little digging to spot the mistake. &lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 29 Mar 2005 05:42:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993528#M18146</guid>
      <dc:creator>jonnin</dc:creator>
      <dc:date>2005-03-29T05:42:26Z</dc:date>
    </item>
    <item>
      <title>Re: Coding mistake or numerical problem?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993529#M18147</link>
      <description>&lt;DIV&gt;I found it now.&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;if(m&amp;gt;n)&lt;BR /&gt;dorgbr(&amp;amp;pq,&amp;amp;m,&amp;amp;n,&amp;amp;n,q,&amp;amp;lda,tauq,work,&amp;amp;lwork,&amp;amp;info); &lt;BR /&gt;else&lt;BR /&gt;dorgbr(&amp;amp;pq,&amp;amp;m,&amp;amp;m,&amp;amp;n,q,&amp;amp;lda,tauq,work,&amp;amp;lwork,&amp;amp;info); &lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;This does the else -- which has m m n not n n m, because of the fortran transpose again. (which also means my lda was wrong too, I see it all now) That problem is probably going to bite me a few times untilI get my head around it all... Thanks again --it works now! &lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 29 Mar 2005 23:20:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993529#M18147</guid>
      <dc:creator>jonnin</dc:creator>
      <dc:date>2005-03-29T23:20:51Z</dc:date>
    </item>
    <item>
      <title>Re: Coding mistake or numerical problem?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993530#M18148</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I am new to this forum but used MKL a bit. I wonder if memory allocation is a problem. MKL manual says arrays have to be aligned at 16 byte boundary. It can be arranged in C /C++ as well by calling a special allocator.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Do you know if not aligning memeory at 16 byte boundary is more than performance issue but also can cause wrong answers ?&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Thank you,&lt;/P&gt;
&lt;P&gt;Evgeny&lt;/P&gt;</description>
      <pubDate>Sat, 02 Sep 2006 07:14:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Coding-mistake-or-numerical-problem/m-p/993530#M18148</guid>
      <dc:creator>evgeny1</dc:creator>
      <dc:date>2006-09-02T07:14:22Z</dc:date>
    </item>
  </channel>
</rss>

