← All functions

IMSINH

Quirk found

Category: Engineering · Last tested 2026-09-01

Real compatibility results for the IMSINH function: executed in Excel for the web, Google Sheets and LibreOffice Calc, with desktop Excel behavior from Microsoft’s official documentation (we do not run desktop Excel — Excel for the web is a different application and is executed separately). Syntax and links to that documentation are below.

Support matrix

EngineDocumentedLive-testedVerdict
Excel (desktop)Yes No — documented only n/a
Excel for the web— Yes (recalc, 2026-09-01) Supported, behaves as documented
Google SheetsYes Yes (Drive import, 2026-08-31) Quirk found
LibreOffice CalcYes Yes (25.8.7.3, 2026-08-31) Unsupported (not recognized)

LibreOffice version history

We executed the same test cases under each LibreOffice release to show exactly when IMSINH’s support changed — not documentation claims, real results.

LibreOffice versionVerdictTested
24.2.0.3 Unsupported (not recognized) 2026-08-31
24.8.7.2 Unsupported (not recognized) 2026-08-31
25.2.0.3 Unsupported (not recognized) 2026-08-31
25.8.7.3 Unsupported (not recognized) 2026-08-31

Why isn't IMSINH working in LibreOffice?

IMSINH comes back as a #NAME? (unrecognized function) error in LibreOffice Calc 25.8.7.3 in our executed tests — but not because the function is missing. This is not a typo or a settings problem. LibreOffice does implement this function — typed on its own, =IMSINH(…) evaluates correctly on every release we tested — but its .xlsx importer does not recognise the _xlfn.IMSINH token that Excel writes into the file for it, so an Excel-authored workbook opens here with #NAME?. The gap is in the file-format mapping, not in the function. The same formula is documented for Excel and documented for Google Sheets. Watch the LibreOffice version support page — we re-run every test on each new release, so it will flip to Supported here as soon as it lands.

Why isn’t IMSINH working in Google Sheets?

IMSINH runs in Google Sheets, but our executed cases show it does not match Excel’s documented behavior on every input (the failing cases are listed on this page). If a formula that behaves one way in Excel gives you a different answer in Sheets, compare your usage against those cases before assuming your data is wrong.

Discovered quirks

Executed test cases

Excel for the web (executed 2026-09-01 via OneDrive recalculation)

These values come from Excel for the web, not from desktop Excel. They are two different implementations of the calculation engine, and this run measured only the web one: the corpus was uploaded to OneDrive as .xlsx, recalculated by Excel for the web on open, and downloaded again for readback. Excel for the web is a rolling service with no pinnable version, so the run is identified by its date. Where a value here disagrees with the Expected column — which is Microsoft’s documentation of the desktop product — we cannot tell you whether the web engine diverges from the desktop one or the documentation is wrong about both, because we do not run desktop Excel.

FormulaDescriptionResultExpectedVerdict
=IMSINH("4+3i") Microsoft's documented worked example: the hyperbolic sine of 4+3i -27.0168132580039+3.85373803791938i -27.0168132580039+3.85373803791938i
Provenance

Microsoft publishes '=IMSINH("4+3i")' with the result -27.0168132580039+3.85373803791938i. Derived independently with mpmath at 40 digits: sinh(x+yi) = sinh(x)cos(y) + i*cosh(x)sin(y). At 40 digits sinh(4)cos(3) = -27.01681325800393448814 and cosh(4)sin(3) = 3.853738037919377321623. Cross-check against the sibling published example: batch D asserts IMCOSH("4+3i") = -27.0349456030742+3.85115333481178i, and cosh^2 - sinh^2 = 1 holds for these two complex values to 15 digits.. EXCEL'S COMPLEX-STRING FORMAT, which this corpus derives rather than assumes: a result is rendered as the real part, then the sign, then the imaginary coefficient followed by the suffix, with each part printed to at most 15 significant digits and trailing zeros stripped; a zero real part is omitted entirely, a zero imaginary part reduces the result to a bare real number, and an imaginary coefficient of exactly 1 or -1 prints as "i" / "-i" with no digit. That rule was written as a formatter in Python by batch D and validated against seven independently published Microsoft strings (IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMEXP, IMLN); batch E re-ran that validation and then extended it, reproducing THIRTEEN MORE published Microsoft strings byte for byte (IMLOG10, IMLOG2, IMPOWER, both IMPRODUCT examples, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN) before predicting anything -- twenty published strings in all. ONE REFINEMENT BATCH E HAD TO MAKE: batch D fed the formatter the EXACT value computed at 40 digits, which happened to render identically to the IEEE double for all seven of its strings. That is not true here. A spreadsheet engine holds a double, not the exact value, and two of this batch's published strings only come out right if the derivation rounds to the nearest double BEFORE formatting: IMPOWER("2+3i",3) is exactly -46+9i in exact arithmetic but Microsoft publishes -46+9.00000000000001i, which is what exp(3*ln(2+3i)) gives in double precision; and IMSEC("4+3i") has an exact real part of -0.06529402785794704644..., whose 15-digit rounding ends ...47, while the correctly-rounded double -0.065294027857947051 rounds to ...471, which is what Microsoft publishes. So every value in this batch is derived exactly with mpmath at 40 digits, THEN rounded to the double an engine actually holds, THEN formatted. String results are compared exactly, so a formatting-only difference (a trailing zero, "1i" for "i", a different digit count) fails the case and is recorded as its own divergence class, separate from a wrong numeric value. STORAGE-FORM GAP, and NOT a missing capability -- the distinction is the whole point of this case. IMSINH is an Excel 2013 addition, so real Excel does not store it in a .xlsx under its plain name: Microsoft's XLSX-extensions future-function list (the reference this harness has used since batch A, mirrored in XlsxWriter's "Formulas added in Excel 2010 and later" table) gives the storage token as _xlfn.IMSINH, alongside _xlfn.IMCOSH, _xlfn.IMCOT, _xlfn.IMCSC, _xlfn.IMCSCH, _xlfn.IMSEC, _xlfn.IMSECH, _xlfn.IMSINH and _xlfn.IMTAN. harness/xlfn_map.py therefore writes _xlfn.IMSINH here, exactly as Excel would. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #NAME? for that token. A five-spelling probe pins down what this is: _xlfn.IMSINH, COM.MICROSOFT.IMSINH, ORG.OPENOFFICE.IMSINH and _xlfn.ORG.OPENOFFICE.IMSINH are all #NAME? on every build, while the UNPREFIXED IMSINH(...) evaluates on every build and returns exactly the string asserted here, byte for byte. So LibreOffice implements IMSINH, and its OOXML import simply has no mapping for the _xlfn.IMSINH token Excel writes -- meaning a workbook saved by Excel that uses IMSINH arrives in LibreOffice as #NAME? even though LibreOffice could compute it. This is the exact mirror image of batch B's COT/COTH/CSC/CSCH finding, where the _xlfn. token was the ONLY spelling LibreOffice accepted, and it is the same class batch D recorded for IMCOSH, IMCOT, IMCSC and IMCSCH. It is recorded as its own divergence class rather than as an ordinary unsupported-function result.

Matched
=IMSINH(TRUE) A logical argument, which the page rejects outright #VALUE! #VALUE!
Provenance

Excel documents: "If inumber is a logical value, IMSINH returns the #VALUE! error value." A deliberate refusal to coerce -- TRUE becomes 1 in nearly every other numeric context. STORAGE-FORM GAP, and NOT a missing capability -- the distinction is the whole point of this case. IMSINH is an Excel 2013 addition, so real Excel does not store it in a .xlsx under its plain name: Microsoft's XLSX-extensions future-function list (the reference this harness has used since batch A, mirrored in XlsxWriter's "Formulas added in Excel 2010 and later" table) gives the storage token as _xlfn.IMSINH, alongside _xlfn.IMCOSH, _xlfn.IMCOT, _xlfn.IMCSC, _xlfn.IMCSCH, _xlfn.IMSEC, _xlfn.IMSECH, _xlfn.IMSINH and _xlfn.IMTAN. harness/xlfn_map.py therefore writes _xlfn.IMSINH here, exactly as Excel would. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #NAME? for that token. A five-spelling probe pins down what this is: _xlfn.IMSINH, COM.MICROSOFT.IMSINH, ORG.OPENOFFICE.IMSINH and _xlfn.ORG.OPENOFFICE.IMSINH are all #NAME? on every build, while the UNPREFIXED IMSINH(...) evaluates on every build. So LibreOffice implements IMSINH, and its OOXML import simply has no mapping for the _xlfn.IMSINH token Excel writes -- meaning a workbook saved by Excel that uses IMSINH arrives in LibreOffice as #NAME? even though LibreOffice could compute it. This is the exact mirror image of batch B's COT/COTH/CSC/CSCH finding, where the _xlfn. token was the ONLY spelling LibreOffice accepted, and it is the same class batch D recorded for IMCOSH, IMCOT, IMCSC and IMCSCH. It is recorded as its own divergence class rather than as an ordinary unsupported-function result.

Matched
=IMSINH("abc") A string that is not in the documented complex-number format #NUM! #NUM!
Provenance

Excel documents: "If inumber is a value that is not in the x+yi or x+yj text format, IMSINH returns the #NUM! error value." Note this is #NUM!, not the #VALUE! that the logical-value clause on the same page specifies -- the two malformed-input branches are documented as returning DIFFERENT errors, which is why both are asserted. STORAGE-FORM GAP, and NOT a missing capability -- the distinction is the whole point of this case. IMSINH is an Excel 2013 addition, so real Excel does not store it in a .xlsx under its plain name: Microsoft's XLSX-extensions future-function list (the reference this harness has used since batch A, mirrored in XlsxWriter's "Formulas added in Excel 2010 and later" table) gives the storage token as _xlfn.IMSINH, alongside _xlfn.IMCOSH, _xlfn.IMCOT, _xlfn.IMCSC, _xlfn.IMCSCH, _xlfn.IMSEC, _xlfn.IMSECH, _xlfn.IMSINH and _xlfn.IMTAN. harness/xlfn_map.py therefore writes _xlfn.IMSINH here, exactly as Excel would. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #NAME? for that token. A five-spelling probe pins down what this is: _xlfn.IMSINH, COM.MICROSOFT.IMSINH, ORG.OPENOFFICE.IMSINH and _xlfn.ORG.OPENOFFICE.IMSINH are all #NAME? on every build, while the UNPREFIXED IMSINH(...) evaluates on every build. So LibreOffice implements IMSINH, and its OOXML import simply has no mapping for the _xlfn.IMSINH token Excel writes -- meaning a workbook saved by Excel that uses IMSINH arrives in LibreOffice as #NAME? even though LibreOffice could compute it. This is the exact mirror image of batch B's COT/COTH/CSC/CSCH finding, where the _xlfn. token was the ONLY spelling LibreOffice accepted, and it is the same class batch D recorded for IMCOSH, IMCOT, IMCSC and IMCSCH. It is recorded as its own divergence class rather than as an ordinary unsupported-function result.

Matched

Google Sheets (executed 2026-08-31 via Drive import)

Google Sheets is a rolling service with no pinnable version, so this run is identified by its date. The corpus was imported to Drive as .xlsx, recalculated by Sheets, and exported back for readback.

FormulaDescriptionResultExpectedVerdict
=IMSINH("4+3i") Microsoft's documented worked example: the hyperbolic sine of 4+3i -27.0168132580039+3.85373803791938i -27.0168132580039+3.85373803791938i
Provenance

Microsoft publishes '=IMSINH("4+3i")' with the result -27.0168132580039+3.85373803791938i. Derived independently with mpmath at 40 digits: sinh(x+yi) = sinh(x)cos(y) + i*cosh(x)sin(y). At 40 digits sinh(4)cos(3) = -27.01681325800393448814 and cosh(4)sin(3) = 3.853738037919377321623. Cross-check against the sibling published example: batch D asserts IMCOSH("4+3i") = -27.0349456030742+3.85115333481178i, and cosh^2 - sinh^2 = 1 holds for these two complex values to 15 digits.. EXCEL'S COMPLEX-STRING FORMAT, which this corpus derives rather than assumes: a result is rendered as the real part, then the sign, then the imaginary coefficient followed by the suffix, with each part printed to at most 15 significant digits and trailing zeros stripped; a zero real part is omitted entirely, a zero imaginary part reduces the result to a bare real number, and an imaginary coefficient of exactly 1 or -1 prints as "i" / "-i" with no digit. That rule was written as a formatter in Python by batch D and validated against seven independently published Microsoft strings (IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMEXP, IMLN); batch E re-ran that validation and then extended it, reproducing THIRTEEN MORE published Microsoft strings byte for byte (IMLOG10, IMLOG2, IMPOWER, both IMPRODUCT examples, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN) before predicting anything -- twenty published strings in all. ONE REFINEMENT BATCH E HAD TO MAKE: batch D fed the formatter the EXACT value computed at 40 digits, which happened to render identically to the IEEE double for all seven of its strings. That is not true here. A spreadsheet engine holds a double, not the exact value, and two of this batch's published strings only come out right if the derivation rounds to the nearest double BEFORE formatting: IMPOWER("2+3i",3) is exactly -46+9i in exact arithmetic but Microsoft publishes -46+9.00000000000001i, which is what exp(3*ln(2+3i)) gives in double precision; and IMSEC("4+3i") has an exact real part of -0.06529402785794704644..., whose 15-digit rounding ends ...47, while the correctly-rounded double -0.065294027857947051 rounds to ...471, which is what Microsoft publishes. So every value in this batch is derived exactly with mpmath at 40 digits, THEN rounded to the double an engine actually holds, THEN formatted. String results are compared exactly, so a formatting-only difference (a trailing zero, "1i" for "i", a different digit count) fails the case and is recorded as its own divergence class, separate from a wrong numeric value. STORAGE-FORM GAP, and NOT a missing capability -- the distinction is the whole point of this case. IMSINH is an Excel 2013 addition, so real Excel does not store it in a .xlsx under its plain name: Microsoft's XLSX-extensions future-function list (the reference this harness has used since batch A, mirrored in XlsxWriter's "Formulas added in Excel 2010 and later" table) gives the storage token as _xlfn.IMSINH, alongside _xlfn.IMCOSH, _xlfn.IMCOT, _xlfn.IMCSC, _xlfn.IMCSCH, _xlfn.IMSEC, _xlfn.IMSECH, _xlfn.IMSINH and _xlfn.IMTAN. harness/xlfn_map.py therefore writes _xlfn.IMSINH here, exactly as Excel would. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #NAME? for that token. A five-spelling probe pins down what this is: _xlfn.IMSINH, COM.MICROSOFT.IMSINH, ORG.OPENOFFICE.IMSINH and _xlfn.ORG.OPENOFFICE.IMSINH are all #NAME? on every build, while the UNPREFIXED IMSINH(...) evaluates on every build and returns exactly the string asserted here, byte for byte. So LibreOffice implements IMSINH, and its OOXML import simply has no mapping for the _xlfn.IMSINH token Excel writes -- meaning a workbook saved by Excel that uses IMSINH arrives in LibreOffice as #NAME? even though LibreOffice could compute it. This is the exact mirror image of batch B's COT/COTH/CSC/CSCH finding, where the _xlfn. token was the ONLY spelling LibreOffice accepted, and it is the same class batch D recorded for IMCOSH, IMCOT, IMCSC and IMCSCH. It is recorded as its own divergence class rather than as an ordinary unsupported-function result.

Matched
=IMSINH(TRUE) A logical argument, which the page rejects outright #NUM! #VALUE!
Provenance

Excel documents: "If inumber is a logical value, IMSINH returns the #VALUE! error value." A deliberate refusal to coerce -- TRUE becomes 1 in nearly every other numeric context. STORAGE-FORM GAP, and NOT a missing capability -- the distinction is the whole point of this case. IMSINH is an Excel 2013 addition, so real Excel does not store it in a .xlsx under its plain name: Microsoft's XLSX-extensions future-function list (the reference this harness has used since batch A, mirrored in XlsxWriter's "Formulas added in Excel 2010 and later" table) gives the storage token as _xlfn.IMSINH, alongside _xlfn.IMCOSH, _xlfn.IMCOT, _xlfn.IMCSC, _xlfn.IMCSCH, _xlfn.IMSEC, _xlfn.IMSECH, _xlfn.IMSINH and _xlfn.IMTAN. harness/xlfn_map.py therefore writes _xlfn.IMSINH here, exactly as Excel would. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #NAME? for that token. A five-spelling probe pins down what this is: _xlfn.IMSINH, COM.MICROSOFT.IMSINH, ORG.OPENOFFICE.IMSINH and _xlfn.ORG.OPENOFFICE.IMSINH are all #NAME? on every build, while the UNPREFIXED IMSINH(...) evaluates on every build. So LibreOffice implements IMSINH, and its OOXML import simply has no mapping for the _xlfn.IMSINH token Excel writes -- meaning a workbook saved by Excel that uses IMSINH arrives in LibreOffice as #NAME? even though LibreOffice could compute it. This is the exact mirror image of batch B's COT/COTH/CSC/CSCH finding, where the _xlfn. token was the ONLY spelling LibreOffice accepted, and it is the same class batch D recorded for IMCOSH, IMCOT, IMCSC and IMCSCH. It is recorded as its own divergence class rather than as an ordinary unsupported-function result.

Mismatch
=IMSINH("abc") A string that is not in the documented complex-number format #NUM! #NUM!
Provenance

Excel documents: "If inumber is a value that is not in the x+yi or x+yj text format, IMSINH returns the #NUM! error value." Note this is #NUM!, not the #VALUE! that the logical-value clause on the same page specifies -- the two malformed-input branches are documented as returning DIFFERENT errors, which is why both are asserted. STORAGE-FORM GAP, and NOT a missing capability -- the distinction is the whole point of this case. IMSINH is an Excel 2013 addition, so real Excel does not store it in a .xlsx under its plain name: Microsoft's XLSX-extensions future-function list (the reference this harness has used since batch A, mirrored in XlsxWriter's "Formulas added in Excel 2010 and later" table) gives the storage token as _xlfn.IMSINH, alongside _xlfn.IMCOSH, _xlfn.IMCOT, _xlfn.IMCSC, _xlfn.IMCSCH, _xlfn.IMSEC, _xlfn.IMSECH, _xlfn.IMSINH and _xlfn.IMTAN. harness/xlfn_map.py therefore writes _xlfn.IMSINH here, exactly as Excel would. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #NAME? for that token. A five-spelling probe pins down what this is: _xlfn.IMSINH, COM.MICROSOFT.IMSINH, ORG.OPENOFFICE.IMSINH and _xlfn.ORG.OPENOFFICE.IMSINH are all #NAME? on every build, while the UNPREFIXED IMSINH(...) evaluates on every build. So LibreOffice implements IMSINH, and its OOXML import simply has no mapping for the _xlfn.IMSINH token Excel writes -- meaning a workbook saved by Excel that uses IMSINH arrives in LibreOffice as #NAME? even though LibreOffice could compute it. This is the exact mirror image of batch B's COT/COTH/CSC/CSCH finding, where the _xlfn. token was the ONLY spelling LibreOffice accepted, and it is the same class batch D recorded for IMCOSH, IMCOT, IMCSC and IMCSCH. It is recorded as its own divergence class rather than as an ordinary unsupported-function result.

Matched

LibreOffice Calc 25.8.7.3 (tested 2026-08-31)

FormulaDescriptionResultExpectedVerdict
=IMSINH("4+3i") Microsoft's documented worked example: the hyperbolic sine of 4+3i #NAME? -27.0168132580039+3.85373803791938i
Provenance

Microsoft publishes '=IMSINH("4+3i")' with the result -27.0168132580039+3.85373803791938i. Derived independently with mpmath at 40 digits: sinh(x+yi) = sinh(x)cos(y) + i*cosh(x)sin(y). At 40 digits sinh(4)cos(3) = -27.01681325800393448814 and cosh(4)sin(3) = 3.853738037919377321623. Cross-check against the sibling published example: batch D asserts IMCOSH("4+3i") = -27.0349456030742+3.85115333481178i, and cosh^2 - sinh^2 = 1 holds for these two complex values to 15 digits.. EXCEL'S COMPLEX-STRING FORMAT, which this corpus derives rather than assumes: a result is rendered as the real part, then the sign, then the imaginary coefficient followed by the suffix, with each part printed to at most 15 significant digits and trailing zeros stripped; a zero real part is omitted entirely, a zero imaginary part reduces the result to a bare real number, and an imaginary coefficient of exactly 1 or -1 prints as "i" / "-i" with no digit. That rule was written as a formatter in Python by batch D and validated against seven independently published Microsoft strings (IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMEXP, IMLN); batch E re-ran that validation and then extended it, reproducing THIRTEEN MORE published Microsoft strings byte for byte (IMLOG10, IMLOG2, IMPOWER, both IMPRODUCT examples, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN) before predicting anything -- twenty published strings in all. ONE REFINEMENT BATCH E HAD TO MAKE: batch D fed the formatter the EXACT value computed at 40 digits, which happened to render identically to the IEEE double for all seven of its strings. That is not true here. A spreadsheet engine holds a double, not the exact value, and two of this batch's published strings only come out right if the derivation rounds to the nearest double BEFORE formatting: IMPOWER("2+3i",3) is exactly -46+9i in exact arithmetic but Microsoft publishes -46+9.00000000000001i, which is what exp(3*ln(2+3i)) gives in double precision; and IMSEC("4+3i") has an exact real part of -0.06529402785794704644..., whose 15-digit rounding ends ...47, while the correctly-rounded double -0.065294027857947051 rounds to ...471, which is what Microsoft publishes. So every value in this batch is derived exactly with mpmath at 40 digits, THEN rounded to the double an engine actually holds, THEN formatted. String results are compared exactly, so a formatting-only difference (a trailing zero, "1i" for "i", a different digit count) fails the case and is recorded as its own divergence class, separate from a wrong numeric value. STORAGE-FORM GAP, and NOT a missing capability -- the distinction is the whole point of this case. IMSINH is an Excel 2013 addition, so real Excel does not store it in a .xlsx under its plain name: Microsoft's XLSX-extensions future-function list (the reference this harness has used since batch A, mirrored in XlsxWriter's "Formulas added in Excel 2010 and later" table) gives the storage token as _xlfn.IMSINH, alongside _xlfn.IMCOSH, _xlfn.IMCOT, _xlfn.IMCSC, _xlfn.IMCSCH, _xlfn.IMSEC, _xlfn.IMSECH, _xlfn.IMSINH and _xlfn.IMTAN. harness/xlfn_map.py therefore writes _xlfn.IMSINH here, exactly as Excel would. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #NAME? for that token. A five-spelling probe pins down what this is: _xlfn.IMSINH, COM.MICROSOFT.IMSINH, ORG.OPENOFFICE.IMSINH and _xlfn.ORG.OPENOFFICE.IMSINH are all #NAME? on every build, while the UNPREFIXED IMSINH(...) evaluates on every build and returns exactly the string asserted here, byte for byte. So LibreOffice implements IMSINH, and its OOXML import simply has no mapping for the _xlfn.IMSINH token Excel writes -- meaning a workbook saved by Excel that uses IMSINH arrives in LibreOffice as #NAME? even though LibreOffice could compute it. This is the exact mirror image of batch B's COT/COTH/CSC/CSCH finding, where the _xlfn. token was the ONLY spelling LibreOffice accepted, and it is the same class batch D recorded for IMCOSH, IMCOT, IMCSC and IMCSCH. It is recorded as its own divergence class rather than as an ordinary unsupported-function result.

Mismatch
=IMSINH(TRUE) A logical argument, which the page rejects outright #NAME? #VALUE!
Provenance

Excel documents: "If inumber is a logical value, IMSINH returns the #VALUE! error value." A deliberate refusal to coerce -- TRUE becomes 1 in nearly every other numeric context. STORAGE-FORM GAP, and NOT a missing capability -- the distinction is the whole point of this case. IMSINH is an Excel 2013 addition, so real Excel does not store it in a .xlsx under its plain name: Microsoft's XLSX-extensions future-function list (the reference this harness has used since batch A, mirrored in XlsxWriter's "Formulas added in Excel 2010 and later" table) gives the storage token as _xlfn.IMSINH, alongside _xlfn.IMCOSH, _xlfn.IMCOT, _xlfn.IMCSC, _xlfn.IMCSCH, _xlfn.IMSEC, _xlfn.IMSECH, _xlfn.IMSINH and _xlfn.IMTAN. harness/xlfn_map.py therefore writes _xlfn.IMSINH here, exactly as Excel would. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #NAME? for that token. A five-spelling probe pins down what this is: _xlfn.IMSINH, COM.MICROSOFT.IMSINH, ORG.OPENOFFICE.IMSINH and _xlfn.ORG.OPENOFFICE.IMSINH are all #NAME? on every build, while the UNPREFIXED IMSINH(...) evaluates on every build. So LibreOffice implements IMSINH, and its OOXML import simply has no mapping for the _xlfn.IMSINH token Excel writes -- meaning a workbook saved by Excel that uses IMSINH arrives in LibreOffice as #NAME? even though LibreOffice could compute it. This is the exact mirror image of batch B's COT/COTH/CSC/CSCH finding, where the _xlfn. token was the ONLY spelling LibreOffice accepted, and it is the same class batch D recorded for IMCOSH, IMCOT, IMCSC and IMCSCH. It is recorded as its own divergence class rather than as an ordinary unsupported-function result.

Mismatch
=IMSINH("abc") A string that is not in the documented complex-number format #NAME? #NUM!
Provenance

Excel documents: "If inumber is a value that is not in the x+yi or x+yj text format, IMSINH returns the #NUM! error value." Note this is #NUM!, not the #VALUE! that the logical-value clause on the same page specifies -- the two malformed-input branches are documented as returning DIFFERENT errors, which is why both are asserted. STORAGE-FORM GAP, and NOT a missing capability -- the distinction is the whole point of this case. IMSINH is an Excel 2013 addition, so real Excel does not store it in a .xlsx under its plain name: Microsoft's XLSX-extensions future-function list (the reference this harness has used since batch A, mirrored in XlsxWriter's "Formulas added in Excel 2010 and later" table) gives the storage token as _xlfn.IMSINH, alongside _xlfn.IMCOSH, _xlfn.IMCOT, _xlfn.IMCSC, _xlfn.IMCSCH, _xlfn.IMSEC, _xlfn.IMSECH, _xlfn.IMSINH and _xlfn.IMTAN. harness/xlfn_map.py therefore writes _xlfn.IMSINH here, exactly as Excel would. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #NAME? for that token. A five-spelling probe pins down what this is: _xlfn.IMSINH, COM.MICROSOFT.IMSINH, ORG.OPENOFFICE.IMSINH and _xlfn.ORG.OPENOFFICE.IMSINH are all #NAME? on every build, while the UNPREFIXED IMSINH(...) evaluates on every build. So LibreOffice implements IMSINH, and its OOXML import simply has no mapping for the _xlfn.IMSINH token Excel writes -- meaning a workbook saved by Excel that uses IMSINH arrives in LibreOffice as #NAME? even though LibreOffice could compute it. This is the exact mirror image of batch B's COT/COTH/CSC/CSCH finding, where the _xlfn. token was the ONLY spelling LibreOffice accepted, and it is the same class batch D recorded for IMCOSH, IMCOT, IMCSC and IMCSCH. It is recorded as its own divergence class rather than as an ordinary unsupported-function result.

Mismatch

Docs & syntax

Where IMSINH behaves differently