octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

lapack 4.0 and octave


From: marco atzeri
Subject: lapack 4.0 and octave
Date: Sat, 24 Dec 2011 19:49:56 +0100
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20111105 Thunderbird/8.0

Hi All,
there is any one testing the last dev with lapack-4.0 ?

I am building lapack-4.0 cygwin package and testing it,
and I found that octave "make check" aborts on qr.cc tests.

No such problem with previous lapack 3.2.2.

-------------------------------------------------------------------
octave:2> test  /pub/hg/octave/src/DLD-FUNCTIONS/qr.cc verbose
>>>>> /pub/hg/octave/src/DLD-FUNCTIONS/qr.cc
  ***** test
 a = [0, 2, 1; 2, 1, 2];

 [q, r] = qr (a);

 [qe, re] = qr (a, 0);

 assert (q * r, a, sqrt (eps));
 assert (qe * re, a, sqrt (eps));
  ***** test
 a = [0, 2, 1; 2, 1, 2];

 [q, r, p] = qr (a);  # not giving right dimensions. FIXME

 [qe, re, pe] = qr (a, 0);

 assert (q * r, a * p, sqrt (eps));
 assert (qe * re, a(:, pe), sqrt (eps));
  ***** test
 a = [0, 2; 2, 1; 1, 2];

 [q, r] = qr (a);

 [qe, re] = qr (a, 0);

 assert (q * r, a, sqrt (eps));
 assert (qe * re, a, sqrt (eps));
  ***** test
 a = [0, 2; 2, 1; 1, 2];

 [q, r, p] = qr (a);

 [qe, re, pe] = qr (a, 0);

 assert (q * r, a * p, sqrt (eps));
 assert (qe * re, a(:, pe), sqrt (eps));
  ***** error <Invalid call to qr> qr ();
  ***** error <Invalid call to qr> qr ([1, 2; 3, 4], 0, 2);
  ***** function retval = __testqr (q, r, a, p)
  tol = 100*eps (class(q));
  retval = 0;
  if (nargin == 3)
    n1 = norm (q*r-a);
    n2 = norm (q'*q-eye(columns(q)));
    retval = (n1 < tol && n2 < tol);
  else
    n1 = norm (q'*q-eye(columns(q)));
    retval = (n1 < tol);
    if (isvector (p))
      n2 = norm (q*r-a(:,p));
      retval = (retval && n2 < tol);
    else
      n2 = norm (q*r - a*p);
      retval = (retval && n2 < tol);
    endif
  endif
  ***** endfunction
  ***** test

 t = ones (24, 1);
 j = 1;

 if false # eliminate big matrix tests
   a = rand(5000,20);
   [q,r]=qr(a,0); t(j++) = __testqr(q,r,a);
   [q,r]=qr(a',0); t(j++) = __testqr(q,r,a');
   [q,r,p]=qr(a,0); t(j++) = __testqr(q,r,a,p);
   [q,r,p]=qr(a',0); t(j++) = __testqr(q,r,a',p);

   a = a+1i*eps;
   [q,r]=qr(a,0); t(j++) = __testqr(q,r,a);
   [q,r]=qr(a',0); t(j++) = __testqr(q,r,a');
   [q,r,p]=qr(a,0); t(j++) = __testqr(q,r,a,p);
   [q,r,p]=qr(a',0); t(j++) = __testqr(q,r,a',p);
 endif
 a = [ ones(1,15); sqrt(eps)*eye(15) ];
 [q,r]=qr(a); t(j++) = __testqr(q,r,a);
 [q,r]=qr(a'); t(j++) = __testqr(q,r,a');
 [q,r,p]=qr(a); t(j++) = __testqr(q,r,a,p);
 [q,r,p]=qr(a'); t(j++) = __testqr(q,r,a',p);

 a = a+1i*eps;
 [q,r]=qr(a); t(j++) = __testqr(q,r,a);
 [q,r]=qr(a'); t(j++) = __testqr(q,r,a');
 [q,r,p]=qr(a); t(j++) = __testqr(q,r,a,p);
 [q,r,p]=qr(a'); t(j++) = __testqr(q,r,a',p);

 a = [ ones(1,15); sqrt(eps)*eye(15) ];
 [q,r]=qr(a,0); t(j++) = __testqr(q,r,a);
 [q,r]=qr(a',0); t(j++) = __testqr(q,r,a');
 [q,r,p]=qr(a,0); t(j++) = __testqr(q,r,a,p);
 [q,r,p]=qr(a',0); t(j++) = __testqr(q,r,a',p);

 a = a+1i*eps;
 [q,r]=qr(a,0); t(j++) = __testqr(q,r,a);
 [q,r]=qr(a',0); t(j++) = __testqr(q,r,a');
 [q,r,p]=qr(a,0); t(j++) = __testqr(q,r,a,p);
 [q,r,p]=qr(a',0); t(j++) = __testqr(q,r,a',p);

 a = [
 611   196  -192   407    -8   -52   -49    29
 196   899   113  -192   -71   -43    -8   -44
 -192   113   899   196    61    49     8    52
 407  -192   196   611     8    44    59   -23
 -8   -71    61     8   411  -599   208   208
 -52   -43    49    44  -599   411   208   208
 -49    -8     8    59   208   208    99  -911
 29   -44    52   -23   208   208  -911    99
 ];
 [q,r] = qr(a);

 assert(all (t) && norm(q*r-a) < 5000*eps);
 ** On entry to DORGLQ parameter number  5 had an illegal value
Aborted
----------------------------------------------------------------------

Before looking on what is different between the two lapack version,
I will appreciate to know if 4.0 is working fine with octave on other
platforms or it is a problem also for someone else.

Regards
Marco



reply via email to

[Prev in Thread] Current Thread [Next in Thread]