CivilSolve

Engineering Economics

Internal Rate of Return (IRR)

Finds the internal rate of return — the interest rate at which the net present value of a signed cash-flow series equals zero — including ALL real roots when the flows change sign more than once (non-conventional series), with an accept/reject comparison against the MARR when given. Use for: 'what rate of return does this investment earn', ROR/IRR problems, checking IRR vs MARR decisions. Not for: choosing among alternatives by worth (worth-comparison).

Direct solving is free and needs no account. Have a word problem instead? Submit it as text.

Inputs

Load a sample problem:
cashflowsThe project's cash flows. SIGN CONVENTION (critical): costs NEGATIVE, receipts POSITIVE — an IRR only exists if the signed flows change sign.
cashflows 1

Worked examples

These are the solver's own reference problems — the answers come from published sources or independent hand computation, never from the solver itself. The solution below is the live solver output for each.

Example 1

classic two-year investment: [−1000, +600, +600] → IRR = 13.066%

Given

cashflows
  1. 1.period 0amount -1000
  2. 2.period 1amount 600
  3. 3.period 2amount 600
marr percent
10

Assumptions

  • End-of-period discrete compounding; IRR is the rate i solving NPV(i) = 0 with all flows reinvested/financed at i itself.

Solution steps

  1. Set up the rate-of-return equation

    The IRR is the interest rate that makes the discounted receipts exactly balance the discounted costs.

    NPV(i) = Σ At/(1 + i)^t = 0

    Net cash flows: -1000 at t = 0; 600 at t = 1; 600 at t = 2

  2. Count sign changes (Descartes' rule of signs)

    Each sign change in the ordered net cash-flow sequence admits at most one more real root — a conventional investment (one change) has a unique IRR, while non-conventional flows may have several.

    Sign changes in the flow sequence: 1

  3. Solve NPV(i) = 0 numerically

    NPV(i) is scanned across the rate range for sign changes and each bracket is refined with Brent's method (bisection-safe, superlinear).

    find i* with NPV(i*) = 0

    IRR = 13.066 percent

    = 13.066

  4. Compare with the MARR

    A conventional investment is acceptable when IRR ≥ MARR — equivalently, when its NPV at the MARR is non-negative.

    accept if NPV at the MARR ≥ 0 (for conventional flows: IRR ≥ MARR)

    NPV at MARR = 41.3223 ≥ 0 (IRR 13.066 percent vs MARR 10 percent) — accept the project

    = 41.3223

Results

Internal rate of return (percent)

13.066

Net present value at the MARR

41.3223

Where this answer was checked
source
NPV quadratic solved by hand in x = 1/(1+i)1000 = 600/(1+i) + 600/(1+i)²
verified by
hand-recomputed
derivation
Let x = 1/(1+i): 600x² + 600x − 1000 = 0 → 3x² + 3x − 5 = 0 → x = (−3 + √(9 + 60))/6 = (−3 + √69)/6 = (−3 + 8.306624)/6 = 0.884437. i = 1/x − 1 = 1.130662 − 1 = 0.130662 → 13.066%. NPV at 10%: −1000 + 600/1.1 + 600/1.21 = −1000 + 545.455 + 495.868 = 41.32 → accept (IRR > MARR).

Example 2

exact two-flow case: −1000 now, +1210 at t = 2 → IRR = 10% exactly

Given

cashflows
  1. 1.period 0amount -1000
  2. 2.period 2amount 1210

Assumptions

  • End-of-period discrete compounding; IRR is the rate i solving NPV(i) = 0 with all flows reinvested/financed at i itself.

Solution steps

  1. Set up the rate-of-return equation

    The IRR is the interest rate that makes the discounted receipts exactly balance the discounted costs.

    NPV(i) = Σ At/(1 + i)^t = 0

    Net cash flows: -1000 at t = 0; 1210 at t = 2

  2. Count sign changes (Descartes' rule of signs)

    Each sign change in the ordered net cash-flow sequence admits at most one more real root — a conventional investment (one change) has a unique IRR, while non-conventional flows may have several.

    Sign changes in the flow sequence: 1

  3. Solve NPV(i) = 0 numerically

    NPV(i) is scanned across the rate range for sign changes and each bracket is refined with Brent's method (bisection-safe, superlinear).

    find i* with NPV(i*) = 0

    IRR = 10 percent

    = 10

Results

Internal rate of return (percent)

10

Where this answer was checked
source
Closed-form: (1+i)² = F/P1210/1000 = (1+i)² → i = √1.21 − 1
verified by
hand-recomputed
derivation
√1.21 = 1.1 exactly, so i = 0.10 → 10.000%.

Example 3

Lorie–Savage pump: [−1600, +10000, −10000] → two IRRs, 25% and 400%

Given

cashflows
  1. 1.period 0amount -1600
  2. 2.period 1amount 10000
  3. 3.period 2amount -10000

Assumptions

  • End-of-period discrete compounding; IRR is the rate i solving NPV(i) = 0 with all flows reinvested/financed at i itself.

Solution steps

  1. Set up the rate-of-return equation

    The IRR is the interest rate that makes the discounted receipts exactly balance the discounted costs.

    NPV(i) = Σ At/(1 + i)^t = 0

    Net cash flows: -1600 at t = 0; 10000 at t = 1; -10000 at t = 2

  2. Count sign changes (Descartes' rule of signs)

    Each sign change in the ordered net cash-flow sequence admits at most one more real root — a conventional investment (one change) has a unique IRR, while non-conventional flows may have several.

    Sign changes in the flow sequence: 2

  3. Solve NPV(i) = 0 numerically

    NPV(i) is scanned across the rate range for sign changes and each bracket is refined with Brent's method (bisection-safe, superlinear).

    find i* with NPV(i*) = 0

    NPV(i) = 0 at 2 rates: 25 percent, 400 percent — no single IRR governs

    = 25

Results

Internal rate of return, first root (percent) — multiple roots exist

25

Additional IRR root 2 (percent)

400

Notes

  • The cash flows change sign more than once — multiple internal rates of return are possible (Descartes' rule of signs). When several IRRs exist, none of them is a reliable decision measure by itself; decide using present worth at the MARR instead.
Where this answer was checked
source
Classic multiple-IRR fixture (Lorie–Savage oil-pump problem), quadratic solved by hand−1600 + 10000/(1+i) − 10000/(1+i)² = 0
verified by
hand-recomputed
derivation
Check i = 0.25: −1600 + 8000 − 6400 = 0 ✓. Check i = 4: −1600 + 2000 − 400 = 0 ✓. In x = 1/(1+i): −10000x² + 10000x − 1600 = 0 → 25x² − 25x + 4 = 0 → x = (25 ± √(625 − 400))/50 = (25 ± 15)/50 → x = 0.8 (i = 0.25) or x = 0.2 (i = 4). Two sign changes → two roots; the solver must report both and warn.