Class MultiOperandNumericFunction
- java.lang.Object
-
- org.apache.poi.ss.formula.functions.MultiOperandNumericFunction
-
- All Implemented Interfaces:
Function
- Direct Known Subclasses:
AggregateFunction
,MatrixFunction.MutableValueCollector
,MinaMaxa
,Mirr
public abstract class MultiOperandNumericFunction extends java.lang.Object implements Function
This is the super class for all excel function evaluator classes that take variable number of operands, and where the order of operands does not matter
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
MultiOperandNumericFunction(boolean isReferenceBoolCounted, boolean isBlankCounted)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract double
evaluate(double[] values)
ValueEval
evaluate(ValueEval[] args, int srcCellRow, int srcCellCol)
protected int
getMaxNumOperands()
Maximum number of operands accepted by this function.protected double[]
getNumberArray(ValueEval[] operands)
Returns a double array that contains values for the numeric cells from among the list of operands.boolean
isSubtotalCounted()
Whether to count nested subtotals.
-
-
-
Method Detail
-
evaluate
public final ValueEval evaluate(ValueEval[] args, int srcCellRow, int srcCellCol)
- Specified by:
evaluate
in interfaceFunction
- Parameters:
args
- the evaluated function arguments. Empty values are represented withBlankEval
orMissingArgEval
, nevernull
.srcCellRow
- row index of the cell containing the formula under evaluationsrcCellCol
- column index of the cell containing the formula under evaluation- Returns:
- The evaluated result, possibly an
ErrorEval
, nevernull
. Note - Excel uses the error code #NUM! instead of IEEE NaN, so when numeric functions evaluate toDouble.NaN
be sure to translate the result toErrorEval.NUM_ERROR
.
-
evaluate
protected abstract double evaluate(double[] values) throws EvaluationException
- Throws:
EvaluationException
-
getMaxNumOperands
protected int getMaxNumOperands()
Maximum number of operands accepted by this function. Subclasses may override to change default value.
-
getNumberArray
protected final double[] getNumberArray(ValueEval[] operands) throws EvaluationException
Returns a double array that contains values for the numeric cells from among the list of operands. Blanks and Blank equivalent cells are ignored. Error operands or cells containing operands of type that are considered invalid and would result in #VALUE! error in excel cause this function to returnnull
.- Returns:
- never
null
- Throws:
EvaluationException
-
isSubtotalCounted
public boolean isSubtotalCounted()
Whether to count nested subtotals.
-
-