 
 			return new Constant(@numerator * b.numerator, @denominator * b.denominator, newMode)
 
-		# Adds to another constant and returns the resulting Constant.
-		# @param b [Constant]
-		# @return [Constant] The addition of this and b
+		# Add another constant to this one.
+		#
+		# @param b [Constant] The constant to add.
+		# @return [Constant] The sum of the two constants.
 		add: (b) ->
 			if @mode == b.mode
 				newMode = @mode

				return @units
			return null

		# Sets the units for the Variable
		#
		# @param variable [???]
		# @param equivalencies [???]
		# @param units [???]
		setVariableUnits: (variable, equivalencies, units) ->
			if equivalencies?
				if @label in equivalencies.get(variable)


	# Terminals for the equation tree.

	# Base class for terminals.
	class Terminal extends nodes.BasicNode

		# Evaluate this node.
		#
		# @throw [Error] Not implemented.
		evaluate: ->
			throw new Error("Not implemented.")

		# Deep-copy this node.
		#
		# @throw [Error] Not implemented.
		copy: ->
			throw new Error("Not implemented.")

	# A constant in the equation tree, e.g. 0.5 or 1/2.
	# Can be represented as a rational (1/2) or a float (0.5).
	# If a constant is produced by negative exponentiation
	# it becomes a rational; if it is entered as an integer then it
	# is a rational; if it is entered as a float, then it remains
	# a float.
	# Rational `*` Rational -> Rational
	# Rational `*` Float -> Float
	# Float `*` Float -> Float
	class Constant extends Terminal

		# Make a new constant.
		#
		# @param numerator [String, Number] The numerator of the rational. If the number is a float, this is just the whole value.
		# @param denominator [String, Number] The denominator of the rational.
		# @param mode [String] Optional. Can be "rational" or "float" (default "rational").
		constructor: (@numerator, @denominator=1, @mode="rational") ->
			@cmp = -6

