'Returns the outer product of this vector with another, in the
form of a Dyadic instance.
Parameters
other : Vector
The Vector with respect to which the outer product is to
be computed.
Examples
>>> from sympy.vector import CoordSys3D
>>> N = CoordSys3D(\'N\')
>>> N.i.outer(N.j)
(N.i|N.j)'

def outer(self, other):

    if (not isinstance(other, Vector)):
        raise TypeError('Invalid    operand    for    outer    product')
    elif (isinstance(self, VectorZero) or isinstance(other, VectorZero)):
        return Dyadic.zero
    args = []
    for (k1, v1) in self.components.items():
        for (k2, v2) in other.components.items():
            args.append(((v1 * v2) * BaseDyadic(k1, k2)))
    return DyadicAdd(*args)
