module Origami::Number

def &(val)

def &(val)
    self.class.new(self.value & val)
end

def *(val)

def *(val)
    self.class.new(self.value * val)
end

def **(val)

def **(val)
    self.class.new(self.value ** val)
end

def +(val)

def +(val)
    self.class.new(self.value + val)
end

def -(val)

def -(val)
    self.class.new(self.value - val)
end

def -@

def -@
    self.class.new(-self.value)
end

def /(val)

def /(val)
    self.class.new(self.value / val)
end

def <<(val)

def <<(val)
    self.class.new(self.value << val)
end

def >>(val)

def >>(val)
    self.class.new(self.value >> val)
end

def ^(val)

def ^(val)
    self.class.new(self.value ^ val)
end

def abs

def abs
    self.class.new(self.value.abs)
end

def |(val)

def |(val)
    self.class.new(self.value | val)
end

def ~

def ~
    self.class.new(~self.value)
end