Computes the dot/matrix product of a sequence of values.

    A *args version of np.linalg.multi_dot.

    Args:
        *values: The values to combine with the dot/matrix product.

    Returns:
        The resulting value or matrix.

def dot(*values: Union[float, complex, np.ndarray]
        ) -> Union[float, complex, np.ndarray]:
    """Computes the dot/matrix product of a sequence of values.

    A *args version of np.linalg.multi_dot.

    Args:
        *values: The values to combine with the dot/matrix product.

    Returns:
        The resulting value or matrix.
    """
    if len(values) == 1:
        if isinstance(values[0], np.ndarray):
            return np.array(values[0])
        return values[0]
    return np.linalg.multi_dot(values)