diff options
Diffstat (limited to 'numpy/linalg/linalg.py')
| -rw-r--r-- | numpy/linalg/linalg.py | 14 |
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( |
