def svd(x, compute_uv = True): """Wrap the numx SVD routine, so that it returns arrays of the correct dtype and a SymeigException in case of failures.""" tc = x.dtype try: if compute_uv: u, s, v = _mdp.numx_linalg.svd(x) return refcast(u, tc), refcast(s, tc), refcast(v, tc) else: s = _mdp.numx_linalg.svd(x, compute_uv=False) return refcast(s, tc) except _mdp.numx_linalg.LinAlgError, exc: raise SymeigException(str(exc))
def svd(x, compute_uv=True): """Wrap the numx SVD routine, so that it returns arrays of the correct dtype and a SymeigException in case of failures.""" tc = x.dtype try: if compute_uv: u, s, v = _mdp.numx_linalg.svd(x) return refcast(u, tc), refcast(s, tc), refcast(v, tc) else: s = _mdp.numx_linalg.svd(x, compute_uv=False) return refcast(s, tc) except _mdp.numx_linalg.LinAlgError, exc: raise SymeigException(str(exc))
def __init__(self, H, f=None, c=None, dtype='d'): """ The quadratic form is defined as 1/2 x'Hx + f'x + c . 'dtype' specifies the numerical type of the internal structures. """ local_eps = 10*numx.finfo(numx.dtype(dtype)).eps # check that H is almost symmetric if not numx.allclose(H, H.T, rtol=100*local_eps, atol=local_eps): raise QuadraticFormException('H does not seem to be symmetric') self.H = refcast(H, dtype) if f is None: f = numx.zeros((H.shape[0],), dtype=dtype) if c is None: c = 0 self.f = refcast(f, dtype) self.c = c self.dtype = dtype
def __init__(self, H, f=None, c=None, dtype='d'): """ The quadratic form is defined as 1/2 x'Hx + f'x + c . 'dtype' specifies the numerical type of the internal structures. """ local_eps = 10 * numx.finfo(numx.dtype(dtype)).eps # check that H is almost symmetric if not numx.allclose(H, H.T, rtol=100 * local_eps, atol=local_eps): raise QuadraticFormException('H does not seem to be symmetric') self.H = refcast(H, dtype) if f is None: f = numx.zeros((H.shape[0], ), dtype=dtype) if c is None: c = 0 self.f = refcast(f, dtype) self.c = c self.dtype = dtype
trans_a : 0 (a not transposed), 1 (a transposed), 2 (a conjugate transposed) trans_b : 0 (b not transposed), 1 (b transposed), 2 (b conjugate transposed) """ if c: gemm,=_mdp.numx_linalg.get_blas_funcs(('gemm',),(a,b,c)) else: gemm,=_mdp.numx_linalg.get_blas_funcs(('gemm',),(a,b)) return gemm(alpha, a, b, beta, c, trans_a, trans_b) # workaround to numpy issues with dtype behavior: # 'f' is upcasted at least in the following functions _inv = _mdp.numx_linalg.inv inv = lambda x: refcast(_inv(x), x.dtype) _pinv = _mdp.numx_linalg.pinv pinv = lambda x: refcast(_pinv(x), x.dtype) _solve = _mdp.numx_linalg.solve solve = lambda x, y: refcast(_solve(x, y), x.dtype) def svd(x, compute_uv = True): """Wrap the numx SVD routine, so that it returns arrays of the correct dtype and a SymeigException in case of failures.""" tc = x.dtype try: if compute_uv: u, s, v = _mdp.numx_linalg.svd(x) return refcast(u, tc), refcast(s, tc), refcast(v, tc) else: s = _mdp.numx_linalg.svd(x, compute_uv=False)
2 (a conjugate transposed) trans_b : 0 (b not transposed), 1 (b transposed), 2 (b conjugate transposed) """ if c: gemm, = _mdp.numx_linalg.get_blas_funcs(('gemm', ), (a, b, c)) else: gemm, = _mdp.numx_linalg.get_blas_funcs(('gemm', ), (a, b)) return gemm(alpha, a, b, beta, c, trans_a, trans_b) # workaround to numpy issues with dtype behavior: # 'f' is upcasted at least in the following functions _inv = _mdp.numx_linalg.inv inv = lambda x: refcast(_inv(x), x.dtype) _pinv = _mdp.numx_linalg.pinv pinv = lambda x: refcast(_pinv(x), x.dtype) _solve = _mdp.numx_linalg.solve solve = lambda x, y: refcast(_solve(x, y), x.dtype) def svd(x, compute_uv=True): """Wrap the numx SVD routine, so that it returns arrays of the correct dtype and a SymeigException in case of failures.""" tc = x.dtype try: if compute_uv: u, s, v = _mdp.numx_linalg.svd(x) return refcast(u, tc), refcast(s, tc), refcast(v, tc) else: