lojix/prolog/src/main/com/thesett/aima/logic/fol/prolog/expressions/UMinus.java
protected NumericType evaluate(NumericType firstNumber)
    {
        // If the argument is a real number, then use real number arithmetic, otherwise use integer arithmetic.
        if (firstNumber.isInteger())
        {
            return new IntLiteral(-firstNumber.intValue());
        }
        else
        {
            return new DoubleLiteral(-firstNumber.doubleValue());
        }
    }
protected NumericType evaluate(NumericType firstNumber)
    {
        // If the argument is a real number, then use real number arithmetic, otherwise use integer arithmetic.
        if (firstNumber.isInteger())
        {
            return new IntLiteral(-firstNumber.intValue());
        }
        else
        {
            return new DoubleLiteral(-firstNumber.doubleValue());
        }
    }
Evaluates the arithmetic operator on its numeric argument.

@param  firstNumber The first argument.

@return The result of performing the arithmetic operator on its argument.