def init_base_quantities(options = { })
      if options.has_key?(:physical_quantity)
        pq = options.delete(:physical_quantity)
        self.physical_quantity = pq.remove_underscores.downcase if pq
      end
      options.each_pair do |base_quantity, index|
        base_quantity = base_quantity.to_s.downcase.to_sym
        unless index.is_a?(Integer) && BASE_QUANTITIES.include?(base_quantity)
          raise Exceptions::InvalidDimensionError, "An invalid base quantity was specified (#{base_quantity})"
        end
        if @base_quantity_hash.has_key?(base_quantity)
          new_index = @base_quantity_hash[base_quantity] + index
          if new_index == 0
            @base_quantity_hash.delete(base_quantity)
          else
            @base_quantity_hash[base_quantity] = new_index
          end
        else
          @base_quantity_hash[base_quantity] = index
        end
      end
    end
def init_base_quantities(options = { })
      if options.has_key?(:physical_quantity)
        pq = options.delete(:physical_quantity)
        self.physical_quantity = pq.remove_underscores.downcase if pq
      end
      options.each_pair do |base_quantity, index|
        base_quantity = base_quantity.to_s.downcase.to_sym
        unless index.is_a?(Integer) && BASE_QUANTITIES.include?(base_quantity)
          raise Exceptions::InvalidDimensionError, "An invalid base quantity was specified (#{base_quantity})"
        end
        if @base_quantity_hash.has_key?(base_quantity)
          new_index = @base_quantity_hash[base_quantity] + index
          if new_index == 0
            @base_quantity_hash.delete(base_quantity)
          else
            @base_quantity_hash[base_quantity] = new_index
          end
        else
          @base_quantity_hash[base_quantity] = index
        end
      end
    end
Method for initializing the base quantities of self.

 Where base quantities are already defined, the new indices are added to
 the existing ones. This represents the multiplication of base quantities
 (multiplication of similar quantities involves the addition of their
 powers).

 This method is therefore used in the multiplication of Dimensions objects,
 but also in divisions and raising of powers following other operations.