Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def gesvd(c, a, full_matrices=True, compute_uv=True):
"""Singular value decomposition."""
a_shape = c.GetShape(a)
dtype = a_shape.element_type()
b = 1
m, n = a_shape.dimensions()
singular_vals_dtype = _real_type(dtype)
if m < n:
lwork, opaque = cusolver_kernels.build_gesvd_descriptor(
np.dtype(dtype), b, n, m, compute_uv, full_matrices)
out = c.CustomCall(
b"cusolver_gesvd",
operands=(a,),
shape_with_layout=_Shape.tuple_shape((
_Shape.array_shape(dtype, (m, n), (1, 0)),
_Shape.array_shape(np.dtype(singular_vals_dtype), (min(m, n),), (0,)),
_Shape.array_shape(dtype, (n, n), (1, 0)),
_Shape.array_shape(dtype, (m, m), (1, 0)),
_Shape.array_shape(np.dtype(np.int32), (), ()),
_Shape.array_shape(dtype, (lwork,), (0,)),
)),
operand_shapes_with_layout=(
_Shape.array_shape(dtype, (m, n), (1, 0)),
),
opaque=opaque)