{
  "category": "Financial functions",
  "display_name": "RRI",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.RRI",
  "implementation_state": {
    "answer_bank": {
      "excel_builds": [
        "20228",
        "?"
      ],
      "larger_numeric": 0,
      "last_bit": 0,
      "matched": 5483,
      "other_mismatch": 0,
      "refused": 45,
      "rows": 5528,
      "unread": 0,
      "worst_ulp": 0
    },
    "detail": "Of 5,533 recorded answers (5,528 in the answer bank and 5 workbook cells), 45 do not match: 45 are refused.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "differs",
    "state_label": "Known larger differences",
    "summary": "Refuses 45 of 5,533 recorded calls; the rest match",
    "workbook_corpus": {
      "cells": 5,
      "matched": 5
    }
  },
  "implementations": [
    {
      "commit": "9e1884369a678158dd82d3d74188daf986995e87",
      "flavour": "excel-compatibility-candidate",
      "language": "Rust",
      "name": "CalcFunc",
      "own_code": [
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/financial.rs#L213-L215",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/ported/financial_time_value_family.rs#L59-L66",
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/ported/financial_time_value_family.rs#L1130-L1191"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "catalogue/financial::tv_out",
        "ported/excel_numeric::binary_with",
        "ported/excel_numeric::excel_pow_chain",
        "ported/excel_numeric::excel_x87_sub",
        "ported/excel_numeric::excel_x87_mul",
        "ported/excel_numeric::excel_x87_div",
        "ported/excel_numeric::excel_x87_recip",
        "ported/excel_numeric/x87::mul",
        "ported/excel_numeric/x87::sub",
        "ported/excel_numeric/x87::div",
        "ported/excel_numeric/x87::recip",
        "ported/excel_numeric/x87_chains::pow2_positive",
        "ported/excel_numeric/x87_chains::pow2",
        "ported/excel_numeric/x87_chains::exp_ext",
        "ported/excel_numeric/x87_chains::exp_with",
        "ported/excel_numeric/x87_chains::excel_exp",
        "ported/excel_numeric/x87_chains::log_with",
        "ported/excel_numeric/x87_chains::excel_log",
        "ported/financial_time_value_family::validate_finite"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/financial.rs#L213-L215",
      "state": "differs",
      "suite": null,
      "summary": "Refuses 45 of 5,533 recorded calls; the rest match"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.RRI.json",
  "name": "RRI",
  "notes": [],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n[PDURATION](FUNC.PDURATION.md) solves periods; [RATE](FUNC.RATE.md) includes constant payments; [XIRR](FUNC.XIRR.md) includes dated cash flows.\n\n\n",
    "how-to-implement": "\nUse stored x87 division for `base=fv/pv` and for `reciprocal=1/nper`. A normalised zero base returns minus one. For exactly one period, retain the quotient directly as the powered value; otherwise use the raw measured LN/product/EXP power chain, not the worksheet POWER square-root shortcut. Store the final subtraction of one. The current helper also applies finite-result guards. This preserves cancellation-sensitive stores near equal amounts; native pow followed by subtraction can differ substantially on small rates.\n\n\n",
    "quirks": "\nThe recorded current kernel rejects nonpositive or subnormal period counts before its equality shortcut. It normalises subnormal value inputs to zero, checks equal values before sign guards, and admits two negative amounts with a positive ratio. A zero present value or opposite nonzero signs gives `#NUM!` under those rules.\n\n\n",
    "sources": "\n- [Microsoft: RRI function](https://support.microsoft.com/en-us/excel/functions/rri-function), opened 6 November 2026; syntax, documented argument rules and errors.\n- [DnaCalc implementation](https://github.com/DnaCalc/DnaCalc/blob/da3ecc4fb19a3a5529708c311d0e8f05688ac165/crates/calc-func/src/ported/financial_time_value_family.rs); implementation steps and the limits identified in the text.\n\n",
    "try-it": "\n`=RRI(2,64,100)` returns about `0.25`: the growth factor is 1.5625, whose square root is 1.25. Two periods compound that rate from 64 to 100.\n\n\n",
    "version-differences": "The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.\n\n| Excel 16.0 build | Platform and CPU | Captured inputs |\n|---|---|---:|\n| 20228 | Windows, 64-bit, CPU not recorded | 5,367 |\n\nThe record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.\n\n[Recorded environments and comparison details](https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.RRI.json).",
    "what-it-does": "\n`RRI(nper,pv,fv)` returns the equivalent compound rate per period between a starting and final amount, without intermediate cash flows. Mathematically it is `(fv/pv)^(1/nper)-1`.\n\n\n"
  },
  "signature": {
    "display": "RRI(nper, pv, fv)",
    "parameters": [
      {
        "description": null,
        "name": "nper",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "pv",
        "optional": false,
        "repeats": false
      },
      {
        "description": null,
        "name": "fv",
        "optional": false,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 3,
        "min": 3
      },
      "category": "Financial functions",
      "classification": {
        "arg_preparation_profile": "RefsVisibleInAdapter",
        "coercion_lift_profile": "Custom",
        "determinism_class": "Deterministic",
        "error_collapse_profile": "None",
        "fec_dependency_profile": "None",
        "host_interaction_class": "None",
        "kernel_signature_class": "Custom",
        "rich_value_usage": "RichBlind",
        "surface_fec_dependency_profile": "RefOnly",
        "thread_safety_class": "SafePure",
        "volatility_class": "NonVolatile"
      },
      "descriptions": {
        "long": null,
        "short": "Equivalent rate per period for an investment to grow from a present to a future value",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Returns an equivalent interest rate for the growth of an investment",
        "microsoft_url": "https://support.microsoft.com/en-us/office/rri-function-6f5822d8-7ef1-4233-944c-79e8172930f4"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "RRI"
        },
        {
          "locale": "bg-BG",
          "name": "RRI"
        },
        {
          "locale": "cs-CZ",
          "name": "RRI"
        },
        {
          "locale": "da-DK",
          "name": "RRI"
        },
        {
          "locale": "de-DE",
          "name": "RRI"
        },
        {
          "locale": "el-GR",
          "name": "RRI"
        },
        {
          "locale": "en-AU",
          "name": "RRI"
        },
        {
          "locale": "en-GB",
          "name": "RRI"
        },
        {
          "locale": "en-US",
          "name": "RRI"
        },
        {
          "locale": "es-ES",
          "name": "RRI"
        },
        {
          "locale": "et-EE",
          "name": "RRI"
        },
        {
          "locale": "fi-FI",
          "name": "TOT.ROI"
        },
        {
          "locale": "fr-FR",
          "name": "TAUX.INT.EQUIV*"
        },
        {
          "locale": "he-IL",
          "name": "RRI"
        },
        {
          "locale": "hr-HR",
          "name": "RRI"
        },
        {
          "locale": "hu-HU",
          "name": "MR"
        },
        {
          "locale": "id-ID",
          "name": "RRI"
        },
        {
          "locale": "it-IT",
          "name": "RRI"
        },
        {
          "locale": "ja-JP",
          "name": "RRI"
        },
        {
          "locale": "ko-KR",
          "name": "RRI"
        },
        {
          "locale": "lt-LT",
          "name": "RRI"
        },
        {
          "locale": "lv-LV",
          "name": "RRI"
        },
        {
          "locale": "nb-NO",
          "name": "REALISERT.AVKASTNING"
        },
        {
          "locale": "nl-NL",
          "name": "RRI"
        },
        {
          "locale": "pl-PL",
          "name": "RÓWNOW.STOPA.PROC"
        },
        {
          "locale": "pt-BR",
          "name": "RRI"
        },
        {
          "locale": "pt-PT",
          "name": "DEVOLVERTAXAJUROS"
        },
        {
          "locale": "ro-RO",
          "name": "RRI"
        },
        {
          "locale": "ru-RU",
          "name": "ЭКВ.СТАВКА"
        },
        {
          "locale": "sk-SK",
          "name": "RRI"
        },
        {
          "locale": "sl-SI",
          "name": "RRI"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "RRI"
        },
        {
          "locale": "sv-SE",
          "name": "AVKPÅINVEST"
        },
        {
          "locale": "th-TH",
          "name": "RRI"
        },
        {
          "locale": "tr-TR",
          "name": "GERÇEKLEŞENYATIRIMGETİRİSİ"
        },
        {
          "locale": "uk-UA",
          "name": "RRI"
        },
        {
          "locale": "vi-VN",
          "name": "RRI"
        },
        {
          "locale": "zh-CN",
          "name": "RRI"
        },
        {
          "locale": "zh-HK",
          "name": "RRI"
        },
        {
          "locale": "zh-TW",
          "name": "RRI"
        }
      ],
      "signature": {
        "display": "RRI(nper, pv, fv)",
        "parameters": [
          {
            "description": null,
            "name": "nper",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "pv",
            "optional": false,
            "repeats": false
          },
          {
            "description": null,
            "name": "fv",
            "optional": false,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "RRI",
      "version_marker": null,
      "xlcall": {
        "code": "579",
        "symbol": "xlfRri"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/rri-function-6f5822d8-7ef1-4233-944c-79e8172930f4"
  },
  "try_it": {
    "formula": "=RRI(2,64,100)"
  },
  "url": "https://handbook.dnacalc.com/functions/RRI.html",
  "variants": [],
  "versions": [
    {
      "behaviour": "5,367 captured inputs are indexed for this environment. Capture dates: 2026-08-09 to 2026-08-09. This is a reading count, not a comparison with another build.",
      "excel_build": "16.0 build 20228",
      "platform": "Windows, 64-bit, CPU not recorded",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.RRI.json"
      ]
    }
  ]
}