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.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/numpy/linalg/linalg.py b/numpy/linalg/linalg.py
index c4433df52..59c8fd470 100644
--- a/numpy/linalg/linalg.py
+++ b/numpy/linalg/linalg.py
@@ -31,7 +31,6 @@ from numpy.core.multiarray import normalize_axis_index
from numpy.core.overrides import set_module
from numpy.core import overrides
from numpy.lib.twodim_base import triu, eye
-from numpy.lib.function_base import asarray_chkfinite
from numpy.linalg import _umath_linalg
@@ -43,11 +42,11 @@ fortran_int = intc
@set_module('numpy.linalg')
-class LinAlgError(Exception):
+class LinAlgError(ValueError):
"""
Generic Python-exception-derived object raised by linalg functions.
- General purpose exception class, derived from Python's exception.Exception
+ General purpose exception class, derived from Python's ValueError
class, programmatically raised in linalg functions when a Linear
Algebra-related condition would prevent further correct execution of the
function.
@@ -204,6 +203,11 @@ def _assert_stacked_square(*arrays):
if m != n:
raise LinAlgError('Last 2 dimensions of the array must be square')
+def _assert_finite(*arrays):
+ for a in arrays:
+ if not isfinite(a).all():
+ raise LinAlgError("Array must not contain infs or NaNs")
+
def _is_empty_2d(arr):
# check size first for efficiency
return arr.size == 0 and product(arr.shape[-2:]) == 0
@@ -1050,7 +1054,7 @@ def eigvals(a):
a, wrap = _makearray(a)
_assert_stacked_2d(a)
_assert_stacked_square(a)
- asarray_chkfinite(a)
+ _assert_finite(a)
t, result_t = _commonType(a)
extobj = get_linalg_error_extobj(
@@ -1305,7 +1309,7 @@ def eig(a):
a, wrap = _makearray(a)
_assert_stacked_2d(a)
_assert_stacked_square(a)
- asarray_chkfinite(a)
+ _assert_finite(a)
t, result_t = _commonType(a)
extobj = get_linalg_error_extobj(