Returns the smallest angle between this vector and the
        given other vector.

def get_angle_between(self, other):
        """Returns the smallest angle between this vector and the
        given other vector."""
        # The scalar product is the sum of the squares of the
        # magnitude times the cosine of the angle - so normalizing the
        # vectors first means the scalar product is just the cosine of
        # the angle.
        normself = self.get_normalized()
        normother = other.get_normalized()
        sp = normself.get_scalar_product(normother)
        return math.acos(sp)