def cross(self, other):

        # Check special cases
        if isinstance(other, Dyadic):
            if isinstance(self, VectorZero):
                return Dyadic.zero
            outdyad = Dyadic.zero
            for k, v in other.components.items():
                cross_product = self.cross(k.args[0])
                outer = cross_product.outer(k.args[1])
                outdyad += v * outer
            return outdyad
        elif not isinstance(other, Vector):
            raise TypeError(str(other) + " is not a vector")
        elif (isinstance(self, VectorZero) or
                isinstance(other, VectorZero)):
            return Vector.zero

        # Compute cross product
        def _det(mat):
            """This is needed as a little method for to find the determinant
            of a list in python.
            SymPy's Matrix won't take in Vector, so need a custom function.
            The user shouldn't be calling this.

            """

            return (mat[0][0] * (mat[1][1] * mat[2][2] - mat[1][2] *
                                 mat[2][1]) +
                    mat[0][1] * (mat[1][2] * mat[2][0] - mat[1][0] *
                                 mat[2][2]) +
                    mat[0][2] * (mat[1][0] * mat[2][1] - mat[1][1] *
                                 mat[2][0]))

        outvec = Vector.zero
        for system, vect in other.separate().items():
            tempi = system.i
            tempj = system.j
            tempk = system.k
            tempm = [[tempi, tempj, tempk],
                     [self & tempi, self & tempj, self & tempk],
                     [vect & tempi, vect & tempj, vect & tempk]]
            outvec += _det(tempm)

        return outvec
Returns the cross product of this Vector with another Vector or
dataset/ETHPy150Open sympy/sympy/sympy/vector/vector.py/Vector.cross