{
  "category": "Engineering functions",
  "display_name": "IMSQRT",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.IMSQRT",
  "implementation_state": {
    "answer_bank": {
      "excel_builds": [
        "20430"
      ],
      "larger_numeric": 0,
      "last_bit": 0,
      "matched": 2029,
      "other_mismatch": 0,
      "refused": 0,
      "rows": 2029,
      "unread": 0,
      "worst_ulp": 0
    },
    "detail": "Recorded: 2,029 in the answer bank and 3 workbook cells.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "matches",
    "state_label": "Matches every recorded Excel answer",
    "summary": "Matches all 2,032 recorded answers",
    "workbook_corpus": {
      "cells": 3,
      "matched": 3
    }
  },
  "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/engineering.rs#L233-L233"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "catalogue/engineering::complex_of",
        "catalogue/engineering::complex_text",
        "catalogue/engineering::unary_complex",
        "ported/complex_decimal::nearest_even",
        "ported/complex_decimal::decimal_pair",
        "ported/complex_family::parse_ascii_decimal_15",
        "ported/complex_family::ParsedComplex::new",
        "ported/complex_family::ParsedComplex::abs",
        "ported/complex_family::normalize_zero",
        "ported/complex_family::number_to_excel_text",
        "ported/complex_family::format_complex_text",
        "ported/complex_family::parse_real_number",
        "ported/complex_family::find_real_imag_split",
        "ported/complex_family::parse_imag_coeff",
        "ported/complex_family::parse_complex_text",
        "ported/complex_family::suffix_from_operands"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/engineering.rs#L233-L233",
      "state": "matches",
      "suite": null,
      "summary": "Matches all 2,032 recorded answers"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.IMSQRT.json",
  "name": "IMSQRT",
  "notes": [],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n[IMPOWER](FUNC.IMPOWER.md) accepts other exponents; [SQRT](FUNC.SQRT.md) handles nonnegative real inputs; [IMABS](FUNC.IMABS.md) computes magnitude.\n\n\n",
    "how-to-implement": "\nParse the two coefficients and suffix before doing arithmetic; use the common complex formatter afterward. Retain suffix consistency, suppress a zero component and omit the coefficient one before the imaginary unit. Formatting and parsing have their own fifteen-significant-digit rules, so testing only the algebra misses observable behaviour.\n\nThe compatibility reconstruction squares each component, flushing subnormal square results, adds the squares, and takes **two** square roots to obtain the fourth root of the sum. It takes half the argument and multiplies that radius by its cosine and sine. If both squares are finite but their sum overflows, the current code returns zero. If its argument helper reports zero/ratio errors, this square-root route substitutes angle zero. A scaled complex-square-root formula is a mathematical robustness alternative, with different recorded boundaries.\n\n\n",
    "quirks": "\nComplex arguments may be real numbers or text such as `\"2-3i\"`. Use lowercase `i` or `j`; operands in one call must agree on the suffix. The current parser rejects malformed complex text with `#NUM!` and logical values with `#VALUE!`. A complex result is text, so ordinary worksheet arithmetic does not automatically treat it as a pair of numeric components. The current magnitude graph is distinct from IMABS: squaring large components can overflow even if a stable mathematical square root would be finite. An overflowing sum of two finite component squares follows a separate recorded zero-result path.\n\n\n",
    "sources": "\n- [Microsoft: IMSQRT function](https://support.microsoft.com/en-us/office/imsqrt-function-e1753f80-ba11-4664-a10e-e17368396b70), 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/complex_family.rs); implementation steps and the limits identified in the text.\n\n",
    "try-it": "\n`=IMSQRT(\"8+6i\")` is approximately `\"3+i\"`, since `(3+i)^2=8+6i`. Squaring a displayed decimal result may expose rounding in the components.\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| 20430 | Windows, 64-bit, CPU not recorded | 2,029 |\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.IMSQRT.json).",
    "what-it-does": "\n`IMSQRT(inumber)` returns the principal square root as complex text. Of the two mathematical roots it selects the one determined by half the principal argument.\n\n\n"
  },
  "signature": {
    "display": "IMSQRT(inumber)",
    "parameters": [
      {
        "description": null,
        "name": "inumber",
        "optional": false,
        "repeats": false
      }
    ],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 1,
        "min": 1
      },
      "category": "Engineering functions",
      "classification": {
        "arg_preparation_profile": "ValuesOnlyPreAdapter",
        "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": "None",
        "thread_safety_class": "SafePure",
        "volatility_class": "NonVolatile"
      },
      "descriptions": {
        "long": null,
        "short": "Principal square root of a complex number",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Returns the square root of a complex number",
        "microsoft_url": "https://support.microsoft.com/en-us/office/imsqrt-function-e1753f80-ba11-4664-a10e-e17368396b70"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "IMSQRT"
        },
        {
          "locale": "bg-BG",
          "name": "IMSQRT"
        },
        {
          "locale": "cs-CZ",
          "name": "IMSQRT"
        },
        {
          "locale": "da-DK",
          "name": "IMAGKVROD"
        },
        {
          "locale": "de-DE",
          "name": "IMSQRT"
        },
        {
          "locale": "el-GR",
          "name": "IMSQRT"
        },
        {
          "locale": "en-AU",
          "name": "IMSQRT"
        },
        {
          "locale": "en-GB",
          "name": "IMSQRT"
        },
        {
          "locale": "en-US",
          "name": "IMSQRT"
        },
        {
          "locale": "es-ES",
          "name": "IM.RAIZ2"
        },
        {
          "locale": "et-EE",
          "name": "IMSQRT"
        },
        {
          "locale": "fi-FI",
          "name": "KOMPLEKSI.NELIÖJ"
        },
        {
          "locale": "fr-FR",
          "name": "COMPLEXE.RACINE*"
        },
        {
          "locale": "he-IL",
          "name": "IMSQRT"
        },
        {
          "locale": "hr-HR",
          "name": "IMSQRT"
        },
        {
          "locale": "hu-HU",
          "name": "KÉPZ.GYÖK"
        },
        {
          "locale": "id-ID",
          "name": "IMSQRT"
        },
        {
          "locale": "it-IT",
          "name": "IMSQRT"
        },
        {
          "locale": "ja-JP",
          "name": "IMSQRT"
        },
        {
          "locale": "ko-KR",
          "name": "IMSQRT"
        },
        {
          "locale": "lt-LT",
          "name": "IMSQRT"
        },
        {
          "locale": "lv-LV",
          "name": "IMSQRT"
        },
        {
          "locale": "nb-NO",
          "name": "IMSQRT"
        },
        {
          "locale": "nl-NL",
          "name": "C.WORTEL"
        },
        {
          "locale": "pl-PL",
          "name": "PIERWIASTEK.LICZBY.ZESP"
        },
        {
          "locale": "pt-BR",
          "name": "IMSQRT"
        },
        {
          "locale": "pt-PT",
          "name": "IMRAIZ"
        },
        {
          "locale": "ro-RO",
          "name": "IMSQRT"
        },
        {
          "locale": "ru-RU",
          "name": "МНИМ.КОРЕНЬ"
        },
        {
          "locale": "sk-SK",
          "name": "IMSQRT"
        },
        {
          "locale": "sl-SI",
          "name": "IMSQRT"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "IMSQRT"
        },
        {
          "locale": "sv-SE",
          "name": "IMROT"
        },
        {
          "locale": "th-TH",
          "name": "IMSQRT"
        },
        {
          "locale": "tr-TR",
          "name": "SANKAREKÖK"
        },
        {
          "locale": "uk-UA",
          "name": "IMSQRT"
        },
        {
          "locale": "vi-VN",
          "name": "IMSQRT"
        },
        {
          "locale": "zh-CN",
          "name": "IMSQRT"
        },
        {
          "locale": "zh-HK",
          "name": "IMSQRT"
        },
        {
          "locale": "zh-TW",
          "name": "IMSQRT"
        }
      ],
      "signature": {
        "display": "IMSQRT(inumber)",
        "parameters": [
          {
            "description": null,
            "name": "inumber",
            "optional": false,
            "repeats": false
          }
        ],
        "trailing_repeats": false
      },
      "surface_name": "IMSQRT",
      "version_marker": null,
      "xlcall": {
        "code": "400",
        "symbol": "xlfImsqrt"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/imsqrt-function-e1753f80-ba11-4664-a10e-e17368396b70"
  },
  "try_it": {
    "formula": "=IMSQRT(\"8+6i\")"
  },
  "url": "https://handbook.dnacalc.com/functions/IMSQRT.html",
  "variants": [],
  "versions": [
    {
      "behaviour": "2,029 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.",
      "excel_build": "16.0 build 20430",
      "platform": "Windows, 64-bit, CPU not recorded",
      "sources": [
        "https://github.com/DnaCalc/ExcelFunctionsHandbook/blob/5dc75391aa5125ccc5abdb095da85950980d6fd8/content/evidence/environments/FUNC.IMSQRT.json"
      ]
    }
  ]
}