FTEST
Quirk foundCategory: Compatibility · Last tested 2026-09-01
Real compatibility results for the FTEST 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
| Engine | Documented | Live-tested | Verdict |
|---|---|---|---|
| Excel (desktop) | Yes | No — documented only | n/a |
| Excel for the web | — | Yes (recalc, 2026-09-01) | Supported, behaves as documented |
| Google Sheets | Yes | Yes (Drive import, 2026-08-31) | Supported, behaves as documented |
| LibreOffice Calc | Yes | Yes (25.8.7.3, 2026-08-31) | Quirk found |
LibreOffice version history
We executed the same test cases under each LibreOffice release to show exactly when FTEST’s support changed — not documentation claims, real results.
| LibreOffice version | Verdict | Tested |
|---|---|---|
| 24.2.0.3 | Quirk found | 2026-08-31 |
| 24.8.7.2 | Quirk found | 2026-08-31 |
| 25.2.0.3 | Quirk found | 2026-08-31 |
| 25.8.7.3 | Quirk found | 2026-08-31 |
Why isn't FTEST working in LibreOffice?
FTEST exists in LibreOffice 25.8.7.3, but it is not a drop-in match for
Excel — our executed tests found real behavioral differences (detailed in the test results on this
page). If a formula that works in Excel or Google Sheets misbehaves in LibreOffice, compare your usage
against the failing cases above before assuming your data is wrong.
Discovered quirks
-
=FTEST(C2:C6,B2:B6) on
LibreOffice Calc returned
#VALUE!, but the documented/expected
result is #DIV/0!.
Provenance
Excel documents: "If the number of data points in array1 or array2 is less than 2, or if the variance of array1 or array2 is zero, FTEST returns the #DIV/0! error value." C2:C6 is five copies of 7, so its variance is exactly zero and the F ratio's denominator vanishes. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #VALUE! here instead of the documented #DIV/0!, the same substitution batch C recorded for this function's modern replacement F.TEST on the identical inputs. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1.; MISMATCH vs expected: expected '#DIV/0!', got '#VALUE!'
-
=FTEST(D2:D2,E2:E2) on
LibreOffice Calc returned
#VALUE!, but the documented/expected
result is #DIV/0!.
Provenance
Excel documents: "If the number of data points in array1 or array2 is less than 2 ... FTEST returns the #DIV/0! error value." A one-point sample has no n-1 estimator. Asserted separately from the zero-variance case because they are different guards on the same documented error. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #VALUE! here instead of the documented #DIV/0!, the same substitution batch C recorded for this function's modern replacement F.TEST on the identical inputs. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1.; MISMATCH vs expected: expected '#DIV/0!', got '#VALUE!'
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.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =ROUND(FTEST(A2:A6,B2:B6),8) | Microsoft's documented worked example: the two-tailed F-test on the two samples | 0.64831785 | 0.64831785ProvenanceMicrosoft publishes '=FTEST(A2:A6,B2:B6)' with the result 0.64831785. Derived independently in Python at 50 digits, and along a different path from any statistics library's F routines: the two sample variances are computed by hand from the data (sample 1 mean 11.6, sum of squared deviations 159.2, variance 159.2/4 = 39.8; sample 2 mean 31.4, sum of squared deviations 259.2, variance 259.2/4 = 64.8), giving the ratio F = 39.8/64.8 = 0.6141975308641975 on 4 and 4 degrees of freedom. The upper-tail probability is then taken from the REGULARIZED INCOMPLETE BETA function rather than from an F distribution routine -- P(F > f) = I_{d2/(d2+d1*f)}(d2/2, d1/2) = 0.67584107660691275 -- and the two-tailed answer is 2*min(p, 1-p) = 0.64831784678617450366, which rounds to exactly the published 0.64831785. This is the same example data, and the same derived value, that batch C asserted for the modern replacement F.TEST; asserting both is the point, because it checks that an engine's legacy alias really is the same function. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Matched |
| =ROUND(FTEST(A2:A6,B2:B6)-FTEST(B2:B6,A2:A6),12) | Swapping the two samples must not change a two-tailed F-test | 0 | 0ProvenanceNot a published example; derived from the documented definition. FTEST "returns the two-tailed probability that the variances in array1 and array2 are not significantly different" -- a statement about the pair of samples with no privileged first argument, so the function must be symmetric. Mechanically: swapping the samples replaces F by 1/F, which swaps the two tails, and 2*min(p, 1-p) is invariant under that swap. Asserted as a difference of exactly zero rather than as two separate values so that the check cannot be passed by an engine that gets both directions equally wrong. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Matched |
| =FTEST(C2:C6,B2:B6) | A sample whose variance is zero | #DIV/0! | #DIV/0!ProvenanceExcel documents: "If the number of data points in array1 or array2 is less than 2, or if the variance of array1 or array2 is zero, FTEST returns the #DIV/0! error value." C2:C6 is five copies of 7, so its variance is exactly zero and the F ratio's denominator vanishes. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #VALUE! here instead of the documented #DIV/0!, the same substitution batch C recorded for this function's modern replacement F.TEST on the identical inputs. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Matched |
| =FTEST(D2:D2,E2:E2) | Samples with fewer than two data points each | #DIV/0! | #DIV/0!ProvenanceExcel documents: "If the number of data points in array1 or array2 is less than 2 ... FTEST returns the #DIV/0! error value." A one-point sample has no n-1 estimator. Asserted separately from the zero-variance case because they are different guards on the same documented error. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #VALUE! here instead of the documented #DIV/0!, the same substitution batch C recorded for this function's modern replacement F.TEST on the identical inputs. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
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.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =ROUND(FTEST(A2:A6,B2:B6),8) | Microsoft's documented worked example: the two-tailed F-test on the two samples | 0.64831785 | 0.64831785ProvenanceMicrosoft publishes '=FTEST(A2:A6,B2:B6)' with the result 0.64831785. Derived independently in Python at 50 digits, and along a different path from any statistics library's F routines: the two sample variances are computed by hand from the data (sample 1 mean 11.6, sum of squared deviations 159.2, variance 159.2/4 = 39.8; sample 2 mean 31.4, sum of squared deviations 259.2, variance 259.2/4 = 64.8), giving the ratio F = 39.8/64.8 = 0.6141975308641975 on 4 and 4 degrees of freedom. The upper-tail probability is then taken from the REGULARIZED INCOMPLETE BETA function rather than from an F distribution routine -- P(F > f) = I_{d2/(d2+d1*f)}(d2/2, d1/2) = 0.67584107660691275 -- and the two-tailed answer is 2*min(p, 1-p) = 0.64831784678617450366, which rounds to exactly the published 0.64831785. This is the same example data, and the same derived value, that batch C asserted for the modern replacement F.TEST; asserting both is the point, because it checks that an engine's legacy alias really is the same function. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Matched |
| =ROUND(FTEST(A2:A6,B2:B6)-FTEST(B2:B6,A2:A6),12) | Swapping the two samples must not change a two-tailed F-test | 0 | 0ProvenanceNot a published example; derived from the documented definition. FTEST "returns the two-tailed probability that the variances in array1 and array2 are not significantly different" -- a statement about the pair of samples with no privileged first argument, so the function must be symmetric. Mechanically: swapping the samples replaces F by 1/F, which swaps the two tails, and 2*min(p, 1-p) is invariant under that swap. Asserted as a difference of exactly zero rather than as two separate values so that the check cannot be passed by an engine that gets both directions equally wrong. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Matched |
| =FTEST(C2:C6,B2:B6) | A sample whose variance is zero | #DIV/0! | #DIV/0!ProvenanceExcel documents: "If the number of data points in array1 or array2 is less than 2, or if the variance of array1 or array2 is zero, FTEST returns the #DIV/0! error value." C2:C6 is five copies of 7, so its variance is exactly zero and the F ratio's denominator vanishes. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #VALUE! here instead of the documented #DIV/0!, the same substitution batch C recorded for this function's modern replacement F.TEST on the identical inputs. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Matched |
| =FTEST(D2:D2,E2:E2) | Samples with fewer than two data points each | #DIV/0! | #DIV/0!ProvenanceExcel documents: "If the number of data points in array1 or array2 is less than 2 ... FTEST returns the #DIV/0! error value." A one-point sample has no n-1 estimator. Asserted separately from the zero-variance case because they are different guards on the same documented error. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #VALUE! here instead of the documented #DIV/0!, the same substitution batch C recorded for this function's modern replacement F.TEST on the identical inputs. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Matched |
LibreOffice Calc 25.8.7.3 (tested 2026-08-31)
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =ROUND(FTEST(A2:A6,B2:B6),8) | Microsoft's documented worked example: the two-tailed F-test on the two samples | 0.64831785 | 0.64831785ProvenanceMicrosoft publishes '=FTEST(A2:A6,B2:B6)' with the result 0.64831785. Derived independently in Python at 50 digits, and along a different path from any statistics library's F routines: the two sample variances are computed by hand from the data (sample 1 mean 11.6, sum of squared deviations 159.2, variance 159.2/4 = 39.8; sample 2 mean 31.4, sum of squared deviations 259.2, variance 259.2/4 = 64.8), giving the ratio F = 39.8/64.8 = 0.6141975308641975 on 4 and 4 degrees of freedom. The upper-tail probability is then taken from the REGULARIZED INCOMPLETE BETA function rather than from an F distribution routine -- P(F > f) = I_{d2/(d2+d1*f)}(d2/2, d1/2) = 0.67584107660691275 -- and the two-tailed answer is 2*min(p, 1-p) = 0.64831784678617450366, which rounds to exactly the published 0.64831785. This is the same example data, and the same derived value, that batch C asserted for the modern replacement F.TEST; asserting both is the point, because it checks that an engine's legacy alias really is the same function. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Matched |
| =ROUND(FTEST(A2:A6,B2:B6)-FTEST(B2:B6,A2:A6),12) | Swapping the two samples must not change a two-tailed F-test | 0 | 0ProvenanceNot a published example; derived from the documented definition. FTEST "returns the two-tailed probability that the variances in array1 and array2 are not significantly different" -- a statement about the pair of samples with no privileged first argument, so the function must be symmetric. Mechanically: swapping the samples replaces F by 1/F, which swaps the two tails, and 2*min(p, 1-p) is invariant under that swap. Asserted as a difference of exactly zero rather than as two separate values so that the check cannot be passed by an engine that gets both directions equally wrong. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Matched |
| =FTEST(C2:C6,B2:B6) | A sample whose variance is zero | #VALUE! | #DIV/0!ProvenanceExcel documents: "If the number of data points in array1 or array2 is less than 2, or if the variance of array1 or array2 is zero, FTEST returns the #DIV/0! error value." C2:C6 is five copies of 7, so its variance is exactly zero and the F ratio's denominator vanishes. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #VALUE! here instead of the documented #DIV/0!, the same substitution batch C recorded for this function's modern replacement F.TEST on the identical inputs. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Mismatch |
| =FTEST(D2:D2,E2:E2) | Samples with fewer than two data points each | #VALUE! | #DIV/0!ProvenanceExcel documents: "If the number of data points in array1 or array2 is less than 2 ... FTEST returns the #DIV/0! error value." A one-point sample has no n-1 estimator. Asserted separately from the zero-variance case because they are different guards on the same documented error. EXECUTED RESULT: all four LibreOffice builds (24.2.0.3, 24.8.7.2, 25.2.0.3, 25.8.7.3) return #VALUE! here instead of the documented #DIV/0!, the same substitution batch C recorded for this function's modern replacement F.TEST on the identical inputs. Set up from Microsoft's own worked-example table for FTEST: the header row Data1 / Data2 in row 1 and the two five-value samples 6, 7, 9, 15, 21 and 20, 28, 31, 38, 40 in A2:A6 and B2:B6, exactly as the page pastes them at A1. Two extra columns this corpus adds for the documented error branches: C2:C6 is five copies of 7 (a sample whose variance is zero) and D2 / E2 are single-cell samples. Column F is untouched because this harness writes the formula under test into cell F1. |
Mismatch |
Docs & syntax
- Excel (desktop): official documentation
- Google Sheets: official documentation
- LibreOffice Calc: official documentation
Where FTEST behaves differently
- Every error code LibreOffice reports as #VALUE!
Across our 2,334-case executed corpus, 272 cases in 135 functions return #VALUE! in LibreOffice Calc 25.8.7.3 where Microsoft documents #NUM! (244), #N/A (15), #DIV/0! (10) or #REF! (3). Google Sheets returns the documented code on 239 of the 249 it has a function for. Identical in all four LibreOffice builds tested.