text: public ValueEval Evaluate(ValueEval[] args, int srcCellRow, int srcCellCol){int maxN = args.Length;if (maxN < 1){return ErrorEval.VALUE_INVALID;}ValueEval firstArg = args[0];try{if (firstArg is NumericValueEval){return EvaluateSingleProduct(args);}if (firstArg is RefEval){return EvaluateSingleProduct(args);}if (firstArg is TwoDEval){TwoDEval ae = (TwoDEval)firstArg;if (ae.IsRow && ae.IsColumn){return EvaluateSingleProduct(args);}return EvaluateAreaSumProduct(args);}}catch (EvaluationException e){return e.GetErrorEval();}throw new RuntimeException("Invalid arg type for SUMPRODUCT: ("+ firstArg.GetType().Name + ")");}