|
From: | Dmitri A. Sergatskov |
Subject: | Lapack issues? (Was Re: Inverse Matrix Function appears a bit wonky) |
Date: | Wed, 03 Nov 2004 15:45:12 -0700 |
User-agent: | Mozilla Thunderbird 0.8 (X11/20040913) |
Geraint Paul Bevan wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dmitri A. Sergatskov wrote: | | How come I do not get a warning? | (Octave 2.1.60 / ATLAS 2.7.8) | octave:35> m = [1 2 3 4; 2 2 3 3; 1 2 1 2; 3 2 2 1]; | octave:36> det (m) | ans = -1.3323e-15 Perhaps because the answer is greater than your machine's precision? FWIW, eps is 2.22044604925031E-16 on mine. I am running 2.1.60, Debian package octave2.1 2.1.60-1 which is linked against:
... Do you know which version of atlas you have? I recompiled octave against static ATLAS library 3.7.8. No any other blas/lapack is involved: address@hidden dima]$ ldd /usr/local/bin/octave liboctinterp.so => /usr/local/lib/octave-2.1.60/liboctinterp.so (0x007e2000) liboctave.so => /usr/local/lib/octave-2.1.60/liboctave.so (0x00f80000) libcruft.so => /usr/local/lib/octave-2.1.60/libcruft.so (0x00111000) libreadline.so.4 => /usr/lib/libreadline.so.4 (0x057a5000) libncurses.so.5 => /usr/lib/libncurses.so.5 (0x05763000) libdl.so.2 => /lib/libdl.so.2 (0x004d8000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0x004dc000) libg2c.so.0 => /usr/lib/libg2c.so.0 (0x007ab000) libm.so.6 => /lib/tls/libm.so.6 (0x004ee000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00511000) libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00519000) libc.so.6 => /lib/tls/libc.so.6 (0x005d4000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x007cb000) I still do not get warnings for inverse an it is probably det(a) is few time bigger than eps: octave:8> eps eps = 2.22044604925031e-16 octave:9> det(a) ans = -1.33226762955019e-15 octave:10> a a = 1 2 3 4 2 2 3 3 1 2 1 2 3 2 2 1 octave:12> inv(a) ans = -4.50359962737050e+15 6.00479950316066e+15 1.50119987579016e+15 -3.00239975158033e+15 4.50359962737050e+15 -6.00479950316066e+15 -1.50119987579016e+15 3.00239975158033e+15 4.50359962737050e+15 -6.00479950316066e+15 -1.50119987579017e+15 3.00239975158033e+15 -4.50359962737050e+15 6.00479950316066e+15 1.50119987579017e+15 -3.00239975158033e+15 --------- My other issue is timing of eig() function. octave:15> x=randn(1000); octave:16> tic; x*inv(x) ; toc ans = 2.15839200094342 octave:17> tic; eig(x) ; toc ans = 22.7398420013487 It appears that eig() does not use ATLAS (dveeg ?) at all... -- Sincerely, Dmitri. ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------
[Prev in Thread] | Current Thread | [Next in Thread] |