org.apache.poi.ss.formula.functions
Class Irr

java.lang.Object
  extended by org.apache.poi.ss.formula.functions.Irr
All Implemented Interfaces:
Function

public final class Irr
extends java.lang.Object
implements Function

Calculates the internal rate of return. Syntax is IRR(values) or IRR(values,guess)

See Also:
Wikipedia on IRR, Excel IRR

Constructor Summary
Irr()
           
 
Method Summary
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Irr

public Irr()
Method Detail

evaluate

public ValueEval evaluate(ValueEval[] args,
                          int srcRowIndex,
                          int srcColumnIndex)
Specified by:
evaluate in interface Function
Parameters:
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 evaluation
srcColumnIndex - column index of the cell containing the formula under evaluation
Returns:
The evaluated result, possibly an ErrorEval, 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.

irr

public static double irr(double[] income)
Computes the internal rate of return using an estimated irr of 10 percent.

Parameters:
income - the income values.
Returns:
the irr.

irr

public static double irr(double[] values,
                         double guess)
Calculates IRR using the Newton-Raphson Method.

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,

Parameters:
values - the income values.
guess - the initial guess of irr.
Returns:
the irr value. The method returns Double.NaN if the maximum iteration count is exceeded
See Also:
http://commons.apache.org

, http://en.wikipedia.org/wiki/Internal_rate_of_return#Numerical_solution, http://en.wikipedia.org/wiki/Newton%27s_method