def cross_vectors(u, v):
    """Compute the cross product of two vectors.

    Parameters
    ----------
    u : tuple, list, Vector
        XYZ components of the first vector.
    v : tuple, list, Vector
        XYZ components of the second vector.

    Returns
    -------
    cross : list
        The cross product of the two vectors.

    Notes
    -----
    The xyz components of the cross product of two vectors :math:`\\mathbf{u}`
    and :math:`\\mathbf{v}` can be computed as the *minors* of the following matrix:

    .. math::
       :nowrap:

        \\begin{bmatrix}
        x & y & z \\\\
        u_{x} & u_{y} & u_{z} \\\\
        v_{x} & v_{y} & v_{z}
        \\end{bmatrix}

    Therefore, the cross product can be written as:

    .. math::
       :nowrap:

        \\mathbf{u} \\times \\mathbf{v}
        =
        \\begin{bmatrix}
        u_{y} * v_{z} - u_{z} * v_{y} \\\\
        u_{z} * v_{x} - u_{x} * v_{z} \\\\
        u_{x} * v_{y} - u_{y} * v_{x}
        \\end{bmatrix}


    Examples
    --------
    >>> cross_vectors([1.0, 0.0, 0.0], [0.0, 1.0, 0.0])
    [0.0, 0.0, 1.0]

    """
    return [u[1] * v[2] - u[2] * v[1], u[2] * v[0] - u[0] * v[2], u[0] * v[
        1] - u[1] * v[0]]
