octave-maintainers
[Top][All Lists]
Advanced

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

Re: lapack 4.0 and octave


From: Tatsuro MATSUOKA
Subject: Re: lapack 4.0 and octave
Date: Sun, 25 Dec 2011 04:09:38 +0900 (JST)

Hello

lapack-4.0 ?
I think it is lapack-3.4.0.

The PC in my home is old so that I cannot test.
But as far as In remember, the octave with lapack 3.4.0 made some test in 
failure.
Now I have return to Lapack 3.3.2.

Regards

Tatsuro
--- On Sun, 2011/12/25, marco atzeri  wrote:

> 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]