public final class Irr extends java.lang.Object implements Function
Constructor and Description |
---|
Irr() |
Modifier and Type | Method and Description |
---|---|
ValueEval |
evaluate(ValueEval[] args,
int srcRowIndex,
int srcColumnIndex) |
static double |
irr(double[] income)
Computes the internal rate of return using an estimated irr of 10 percent.
|
static double |
irr(double[] values,
double guess)
Calculates IRR using the Newton-Raphson Method.
|
public ValueEval evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex)
evaluate
in interface Function
args
- the evaluated function arguments. Empty values are represented with
BlankEval
or MissingArgEval
, never null
.srcRowIndex
- row index of the cell containing the formula under evaluationsrcColumnIndex
- column index of the cell containing the formula under evaluationErrorEval
, never null
.
Note - Excel uses the error code #NUM! instead of IEEE NaN, so when
numeric functions evaluate to Double.NaN
be sure to translate the result to ErrorEval.NUM_ERROR
.public static double irr(double[] income)
income
- the income values.public static double irr(double[] values, double guess)
Starting with the guess, the method cycles through the calculation until the result is accurate within 0.00001 percent. If IRR can't find a result that works after 20 tries, the Double.NaN<> is returned.
The implementation is inspired by the NewtonSolver from the Apache Commons-Math library,
values
- the income values.guess
- the initial guess of irr.Double.NaN
if the maximum iteration count is exceededCopyright 2020 The Apache Software Foundation or its licensors, as applicable.