>>> np.__config__.show() lapack_info: NOT AVAILABLE lapack_opt_info: NOT AVAILABLE blas_info: NOT AVAILABLE atlas_threads_info: NOT AVAILABLE blas_src_info: NOT AVAILABLE atlas_blas_info: NOT AVAILABLE lapack_src_info: NOT AVAILABLE openblas_info: NOT AVAILABLE atlas_blas_threads_info: NOT AVAILABLE blas_mkl_info: NOT AVAILABLE blas_opt_info: NOT AVAILABLE atlas_info: NOT AVAILABLE lapack_mkl_info: NOT AVAILABLE mkl_info: NOT AVAILABLE
With so many "NOT AVAILABLE" I'm now surprised SVD is even defined. Charles R Harris writes: > On Sat, Sep 27, 2014 at 10:37 AM, Darlan Cavalcante Moreira < > darc...@gmail.com> wrote: > >> >> Some time ago I have reported a bug about the linalg.matrix_rank in >> numpy for complex matrices. This was quickly fixed and to take the >> advantage of the fix I'm now using numpy 1.9.0 installed through pip, >> instead of the version from my system (Ubuntu 14.04, with numpy version >> 1.8.1). >> >> However, I have now encountered a very strange bug in the SVD function, >> but only when numpy is manually installed (with pip in my case). When I >> calculate the SVD of complex matrices with more columns than rows the >> last rows of the returned V_H matrix are all equal to zeros. This does >> not happens for all shapes, but for the ones where this happens it will >> always happen. >> >> This can be reproduced with the code below. You can change the sizes of >> M and N and it happens for other sizes where N > M, but now all of them. >> >> --8<---------------cut here---------------start------------->8--- >> import numpy as np >> >> M = 8 # Number of rows >> N = 12 # Number of columns >> >> # Calculate the SVD of a non-square complex random matrix >> [U, S, V_H] = np.linalg.svd(np.random.randn(M, N) + 1j*np.random.randn(M, >> N), full_matrices=True) >> >> # Calculate the norm of the submatrix formed by the last N-M rows >> if np.linalg.norm(V_H[M-N:]) < 1e-30: >> print("Bug!") >> else: >> print("No Bug") >> # See the N-M rows. They are all equal to zeros >> print(V_H[M-N:]) >> --8<---------------cut here---------------end--------------->8--- >> >> The original matrix can still be obtained from the decomposition, since >> the zero rows correspond to zero singular values due to the fact that >> the original matrix has more columns then rows. However, since the user >> asked for 'full_matrices' here (the default) returning all zeroes for >> these extra rows is not useful. >> >> In order to isolate the bug I tried installing some different numpy >> versions in different virtualenvs. I tried version 1.6, 1.7, 1.8.1 and >> 1.9 and the bug appears in all of then. Since it does not happen if I >> use the version 1.8.1 installed through the Ubuntu package manager, I >> imagine it is due to some issue when pip compiles numpy locally. >> >> Note: If I run numpy.testing.test() all tests are OK for all numpy >> versions I >> have tested. The only fail is a known fail and I get "OK (KNOWNFAIL=1)". >> >> > What does `np.__config__.show()` show? > > Chuck > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion -- Sent with my mu4e _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion