public Eval evaluate(Eval[] operands, int srcRow, short srcCol) {
double d = 0;
double base = DEFAULT_BASE;
double num = 0;
ValueEval retval = null;
switch (operands.length) {
default:
retval = ErrorEval.VALUE_INVALID;
break;
case 2: // second arg is base
ValueEval ve = singleOperandEvaluate(operands[1], srcRow, srcCol);
if (ve instanceof NumericValueEval) {
NumericValueEval ne = (NumericValueEval) ve;
base = ne.getNumberValue();
}
else if (ve instanceof BlankEval) {
// do nothing
}
else {
retval = ErrorEval.NUM_ERROR;
}
case 1: // first arg is number
if (retval == null) {
ValueEval vev = singleOperandEvaluate(operands[0], srcRow, srcCol);
if (vev instanceof NumericValueEval) {
NumericValueEval ne = (NumericValueEval) vev;
num = ne.getNumberValue();
}
else if (vev instanceof BlankEval) {