public TypeValuePair evaluate(final FormulaContext context,
final ParameterCallback parameters)
throws EvaluationException
{
final TypeValuePair sum = sumFunction.evaluate(context, parameters);
final Number n = context.getTypeRegistry().convertToNumber(sum.getType(), sum.getValue());
if (n == null)
{
throw EvaluationException.getInstance(LibFormulaErrorValue.ERROR_INVALID_ARGUMENT_VALUE);
}
final BigDecimal divident = NumberUtil.getAsBigDecimal(n);
final BigDecimal divisor = new BigDecimal(parameters.getParameterCount());
final BigDecimal avg = NumberUtil.divide(divident, divisor);
return new TypeValuePair(NumberType.GENERIC_NUMBER, avg);
}