[Scipy-svn] r7069 - trunk/scipy/linalg
scipy-svn at scipy.org
scipy-svn at scipy.org
Thu Jan 20 07:15:33 EST 2011
Author: rgommers
Date: 2011-01-20 06:15:33 -0600 (Thu, 20 Jan 2011)
New Revision: 7069
Modified:
trunk/scipy/linalg/decomp_qr.py
trunk/scipy/linalg/decomp_schur.py
Log:
TST: Avoid ComplexWarning in QR and Schur decomposition.
lwork returned from a workspace query has the same dtype as the
principal matrix, but when we call the computational routine it
expects an integer value.
This also fixes a potential bug in schur(), where lwork keyword was
ignored.
Thanks to Fabian Pedregosa.
Modified: trunk/scipy/linalg/decomp_qr.py
===================================================================
--- trunk/scipy/linalg/decomp_qr.py 2011-01-20 11:29:54 UTC (rev 7068)
+++ trunk/scipy/linalg/decomp_qr.py 2011-01-20 12:15:33 UTC (rev 7069)
@@ -86,7 +86,7 @@
if lwork is None or lwork == -1:
# get optimal work array
qr, tau, work, info = geqrf(a1, lwork=-1, overwrite_a=1)
- lwork = work[0]
+ lwork = work[0].real.astype(numpy.int)
qr, tau, work, info = geqrf(a1, lwork=lwork, overwrite_a=overwrite_a)
if info < 0:
@@ -108,12 +108,12 @@
if M < N:
# get optimal work array
Q, work, info = gor_un_gqr(qr[:,0:M], tau, lwork=-1, overwrite_a=1)
- lwork = work[0]
+ lwork = work[0].real.astype(numpy.int)
Q, work, info = gor_un_gqr(qr[:,0:M], tau, lwork=lwork, overwrite_a=1)
elif mode == 'economic':
# get optimal work array
Q, work, info = gor_un_gqr(qr, tau, lwork=-1, overwrite_a=1)
- lwork = work[0]
+ lwork = work[0].real.astype(numpy.int)
Q, work, info = gor_un_gqr(qr, tau, lwork=lwork, overwrite_a=1)
else:
t = qr.dtype.char
@@ -121,7 +121,7 @@
qqr[:,0:N] = qr
# get optimal work array
Q, work, info = gor_un_gqr(qqr, tau, lwork=-1, overwrite_a=1)
- lwork = work[0]
+ lwork = work[0].real.astype(numpy.int)
Q, work, info = gor_un_gqr(qqr, tau, lwork=lwork, overwrite_a=1)
if info < 0:
@@ -223,7 +223,7 @@
if lwork is None or lwork == -1:
# get optimal work array
rq, tau, work, info = gerqf(a1, lwork=-1, overwrite_a=1)
- lwork = work[0]
+ lwork = work[0].real.astype(numpy.int)
rq, tau, work, info = gerqf(a1, lwork=lwork, overwrite_a=overwrite_a)
if info < 0:
raise ValueError('illegal value in %d-th argument of internal geqrf'
Modified: trunk/scipy/linalg/decomp_schur.py
===================================================================
--- trunk/scipy/linalg/decomp_schur.py 2011-01-20 11:29:54 UTC (rev 7068)
+++ trunk/scipy/linalg/decomp_schur.py 2011-01-20 12:15:33 UTC (rev 7069)
@@ -68,8 +68,8 @@
if lwork is None or lwork == -1:
# get optimal work array
result = gees(lambda x: None, a, lwork=-1)
- lwork = result[-2][0]
- result = gees(lambda x: None, a, lwork=result[-2][0], overwrite_a=overwrite_a)
+ lwork = result[-2][0].real.astype(numpy.int)
+ result = gees(lambda x: None, a, lwork=lwork, overwrite_a=overwrite_a)
info = result[-1]
if info < 0:
raise ValueError('illegal value in %d-th argument of internal gees'
More information about the Scipy-svn
mailing list