':param other:
An integer to multiple the Point by
:return:
A PrimePoint object'

def __mul__(self, other):

    def leftmost_bit(x):
        assert (x > 0)
        result = 1
        while (result <= x):
            result = (2 * result)
        return (result // 2)
    e = other
    if self.order:
        e = (e % self.order)
    if (e == 0):
        return INFINITY
    if (self == INFINITY):
        return INFINITY
    assert (e > 0)
    e3 = (3 * e)
    negative_self = PrimePoint(self.curve, self.x, (- self.y), self.order)
    i = (leftmost_bit(e3) // 2)
    result = self
    while (i > 1):
        result = result.double()
        if (((e3 & i) != 0) and ((e & i) == 0)):
            result = (result + self)
        if (((e3 & i) == 0) and ((e & i) != 0)):
            result = (result + negative_self)
        i = (i // 2)
    return result
