def +(other)
      case other
      when Unit
        if zero?
          other.dup
        elsif self =~ other
          raise ArgumentError, 'Cannot add two temperatures' if [self, other].all?(&:temperature?)
          if [self, other].any?(&:temperature?)
            if temperature?
              RubyUnits::Unit.new(scalar: (scalar + other.convert_to(temperature_scale).scalar), numerator: @numerator, denominator: @denominator, signature: @signature)
            else
              RubyUnits::Unit.new(scalar: (other.scalar + convert_to(other.temperature_scale).scalar), numerator: other.numerator, denominator: other.denominator, signature: other.signature)
            end
          else
            RubyUnits::Unit.new(scalar: (base_scalar + other.base_scalar), numerator: base.numerator, denominator: base.denominator, signature: @signature).convert_to(self)
          end
        else
          raise ArgumentError, "Incompatible Units ('#{self}' not compatible with '#{other}')"
        end
      when Date, Time
        raise ArgumentError, 'Date and Time objects represent fixed points in time and cannot be added to a Unit'
      else
        x, y = coerce(other)
        y + x
      end
    end
def +(other)
      case other
      when Unit
        if zero?
          other.dup
        elsif self =~ other
          raise ArgumentError, 'Cannot add two temperatures' if [self, other].all?(&:temperature?)
          if [self, other].any?(&:temperature?)
            if temperature?
              RubyUnits::Unit.new(scalar: (scalar + other.convert_to(temperature_scale).scalar), numerator: @numerator, denominator: @denominator, signature: @signature)
            else
              RubyUnits::Unit.new(scalar: (other.scalar + convert_to(other.temperature_scale).scalar), numerator: other.numerator, denominator: other.denominator, signature: other.signature)
            end
          else
            RubyUnits::Unit.new(scalar: (base_scalar + other.base_scalar), numerator: base.numerator, denominator: base.denominator, signature: @signature).convert_to(self)
          end
        else
          raise ArgumentError, "Incompatible Units ('#{self}' not compatible with '#{other}')"
        end
      when Date, Time
        raise ArgumentError, 'Date and Time objects represent fixed points in time and cannot be added to a Unit'
      else
        x, y = coerce(other)
        y + x
      end
    end
Add two units together.  Result is same units as receiver and scalar and base_scalar are updated appropriately
 throws an exception if the units are not compatible.
 It is possible to add Time objects to units of time
 @param [Object] other
 @return [Unit]
 @raise [ArgumentError] when two temperatures are added
 @raise [ArgumentError] when units are not compatible
 @raise [ArgumentError] when adding a fixed time or date to a time span