public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg1, ValueEval arg2) {try {Double number1 = evaluateValue(arg1, srcRowIndex, srcColumnIndex);if (number1 == null) {return ErrorEval.VALUE_INVALID;}Double number2 = evaluateValue(arg2, srcRowIndex, srcColumnIndex);if (number2 == null) {return ErrorEval.VALUE_INVALID;}return (number1.compareTo(number2) == 0) ? ONE : ZERO;} catch (EvaluationException e) {return e.getErrorEval();}}

public override ValueEval Evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg1, ValueEval arg2){ValueEval veText1;try{veText1 = OperandResolver.GetSingleValue(arg1, srcRowIndex, srcColumnIndex);}catch (EvaluationException e){return e.GetErrorEval();}String strText1 = OperandResolver.CoerceValueToString(veText1);Double number1 = OperandResolver.ParseDouble(strText1);if (double.IsNaN(number1)){return ErrorEval.VALUE_INVALID;}ValueEval veText2;try{veText2 = OperandResolver.GetSingleValue(arg2, srcRowIndex, srcColumnIndex);}catch (EvaluationException e){return e.GetErrorEval();}String strText2 = OperandResolver.CoerceValueToString(veText2);Double number2 = OperandResolver.ParseDouble(strText2);if (double.IsNaN(number2)){return ErrorEval.VALUE_INVALID;}int result = NumberComparer.Compare(number1, number2);return result == 0 ? ONE : ZERO;}
