'Returns whether each coordinate of `self` is a scalar
multiple of the corresponding coordinate in point p.'

def is_scalar_multiple(self, p):

    (s, o) = Point._normalize_dimension(self, Point(p))
    if (s.ambient_dimension == 2):
        ((x1, y1), (x2, y2)) = (s.args, o.args)
        rv = ((x1 * y2) - (x2 * y1)).equals(0)
        if (rv is None):
            raise Undecidable(filldedent(("can't    determine    if    %s    is    a    scalar    multiple    of\n                                                                                %s" % (s, o))))
    m = Matrix([s.args, o.args])
    return (m.rank() < 2)
