| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import numpy as np
- EPS = np.finfo(float).eps
- def get_arrays_tol(*arrays):
- """
- Get a relative tolerance for a set of arrays.
- Parameters
- ----------
- *arrays: tuple
- Set of `numpy.ndarray` to get the tolerance for.
- Returns
- -------
- float
- Relative tolerance for the set of arrays.
- Raises
- ------
- ValueError
- If no array is provided.
- """
- if len(arrays) == 0:
- raise ValueError("At least one array must be provided.")
- size = max(array.size for array in arrays)
- weight = max(
- np.max(np.abs(array[np.isfinite(array)]), initial=1.0)
- for array in arrays
- )
- return 10.0 * EPS * max(size, 1.0) * weight
- def exact_1d_array(x, message):
- """
- Preprocess a 1-dimensional array.
- Parameters
- ----------
- x : array_like
- Array to be preprocessed.
- message : str
- Error message if `x` cannot be interpreter as a 1-dimensional array.
- Returns
- -------
- `numpy.ndarray`
- Preprocessed array.
- """
- x = np.atleast_1d(np.squeeze(x)).astype(float)
- if x.ndim != 1:
- raise ValueError(message)
- return x
- def exact_2d_array(x, message):
- """
- Preprocess a 2-dimensional array.
- Parameters
- ----------
- x : array_like
- Array to be preprocessed.
- message : str
- Error message if `x` cannot be interpreter as a 2-dimensional array.
- Returns
- -------
- `numpy.ndarray`
- Preprocessed array.
- """
- x = np.atleast_2d(x).astype(float)
- if x.ndim != 2:
- raise ValueError(message)
- return x
|