summaryrefslogtreecommitdiff
path: root/numpy/linalg/linalg.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/linalg/linalg.py')
-rw-r--r--numpy/linalg/linalg.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/numpy/linalg/linalg.py b/numpy/linalg/linalg.py
index 99d77120a..4b3ae79f8 100644
--- a/numpy/linalg/linalg.py
+++ b/numpy/linalg/linalg.py
@@ -99,7 +99,7 @@ def _raise_linalgerror_svd_nonconvergence(err, flag):
def _raise_linalgerror_lstsq(err, flag):
raise LinAlgError("SVD did not converge in Linear Least Squares")
-def _raise_linalgerror_qr_r_raw(err, flag):
+def _raise_linalgerror_qr(err, flag):
raise LinAlgError("Illegal argument found while performing "
"QR factorization")
@@ -934,7 +934,7 @@ def qr(a, mode='reduced'):
gufunc = _umath_linalg.qr_r_raw_n
signature = 'D->D' if isComplexType(t) else 'd->d'
- extobj = get_linalg_error_extobj(_raise_linalgerror_qr_r_raw)
+ extobj = get_linalg_error_extobj(_raise_linalgerror_qr)
tau = gufunc(a, signature=signature, extobj=extobj)
# handle modes that don't return q
@@ -956,6 +956,10 @@ def qr(a, mode='reduced'):
a = a.astype(result_t, copy=False)
return wrap(a)
+ # mc is the number of columns in the resulting q
+ # matrix. If the mode is complete then it is
+ # same as number of rows, and if the mode is reduced,
+ # then it is the minimum of number of rows and columns.
if mode == 'complete' and m > n:
mc = m
if m <= n:
@@ -970,7 +974,7 @@ def qr(a, mode='reduced'):
gufunc = _umath_linalg.qr_reduced_n
signature = 'DD->D' if isComplexType(t) else 'dd->d'
- extobj = get_linalg_error_extobj(_raise_linalgerror_qr_r_raw)
+ extobj = get_linalg_error_extobj(_raise_linalgerror_qr)
q = gufunc(a, tau, signature=signature, extobj=extobj)
r = triu(a[..., :mc, :])