text: public static double irr(double[] values, double guess){int maxIterationCount = 20;double absoluteAccuracy = 1E-7;double x0 = guess;double x1;int i = 0;while (i < maxIterationCount){double fValue = 0;double fDerivative = 0;for (int k = 0; k < values.Length; k++){fValue += values[k] / Math.Pow(1.0 + x0, k);fDerivative += -k * values[k] / Math.Pow(1.0 + x0, k + 1);}x1 = x0 - fValue / fDerivative;if (Math.Abs(x1 - x0) <= absoluteAccuracy){return x1;}x0 = x1;++i;}return Double.NaN;}