Close: 20 of 618,440 recorded answers differ in the last bits, worst 2 ULP
Everything else matches (618,437 in the answer bank and 3 workbook cells). Last-bit means a finite number within 16 ULP of Excel's. How we measure this · See the Rust code
Local names in 40 languages
Language
Name in Excel
Arabic
ERF.PRECISE
Bulgarian
ERF.PRECISE
Czech
ERF.PRECISE
Danish
ERF.PRECISE
German
ERF.PRECISE
Greek
ERF.PRECISE
English (Australia)
ERF.PRECISE
English (United Kingdom)
ERF.PRECISE
English (United States)
ERF.PRECISE
Spanish
FUN.ERROR.EXACTO
Estonian
ERF.PRECISE
Finnish
VIRHEFUNKTIO.TARKKA
French
ERF.PRECIS
Hebrew
ERF.PRECISE
Croatian
ERF.PRECISE
Hungarian
HIBAF.PONTOS
Indonesian
ERF.PRECISE
Italian
ERF.PRECISE
Japanese
ERF.PRECISE
Korean
ERF.PRECISE
Lithuanian
ERF.PRECISE
Latvian
ERF.PRECISE
Norwegian
FEILF.PRESIS
Dutch
FOUTFUNCTIE.NAUWKEURIG
Polish
FUNKCJA.BŁ.DOKŁ
Portuguese (Brazil)
ERF.PRECISE
Portuguese (Portugal)
FUNCERRO.PRECISO
Romanian
ERF.PRECISE
Russian
ФОШ.ТОЧН
Slovak
ERF.PRECISE
Slovenian
ERF.PRECISE
Serbian (Latin)
ERF.PRECISE
Swedish
FELF.EXAKT
Thai
ERF.PRECISE
Turkish
HATAİŞLEV.DUYARLI
Ukrainian
ERF.PRECISE
Vietnamese
ERF.PRECISE
Chinese (Simplified)
ERF.PRECISE
Chinese (Hong Kong)
ERF.PRECISE
Chinese (Traditional)
ERF.PRECISE
Names from Microsoft's support site.
What it does
ERF.PRECISE(x)
ERF.PRECISE(x) returns the normalised integral of exp(-t*t) from zero to x. The normalisation factor is 2/sqrt(pi). It is odd: negating x negates the mathematical result.
Try it
=ERF.PRECISE(0.25) is about 0.276326390168237. =ERF.PRECISE(-0.25) has the negative value.
Quirks
Nonnumeric arguments give #VALUE!. The PRECISE name does not imply correctly rounded results on every input. The measured below-half stage and the unresolved upper stage need separate treatment. Subnormal inputs transferred to worksheet cells can be read back as zero, so the input route is part of a useful reproduction.
Below 0.5, ERF is a stored (4, 5) rational from a table not yet identified
With RN(v) meaning v rounded to 64 bits on the x87 unit and then stored to binary64, ERF.PRECISE for |x| < 0.5 is x*N(t)/D(t) with t = RN(x*x), p = RN(x*N), y = RN(p/D), and N and D Horner sums in t in which every product and every sum is RN. N has degree 4 and D degree 5, and the coefficients read off Excel's answers, order 0 upward, are N: 0x3ff1df5e70c7956b, 0x3fc201d8627a7d2c, 0x3fa6f289d165b303, 0x3f5d93a5813e372c, 0x3f2932767df264b2; D: 0x3fefada15778ece6, 0x3fdd191aca8d2499, 0x3fb79f85ba68803e, 0x3f856de5da86af12, 0x3f4609751b5b6488, 0x3ef4f20a473a5ab0. The rational stops at 0.5 itself. It equals erf to a flat 9E-17 up to 0.5, and its error climbs at once beyond, so 0.5 is its design interval and not Cody's 0.46875. No published table has been matched: Cody's 1969 rational is refuted by its linear terms, and Cephes has the same shape with different ratios. Evidence record EV-DIST-0026, which predates this note, attributes ERF.PRECISE and ERFC.PRECISE to the a < 1 branches of the NSWC GRATIO routine and says no coefficient table exists; below 0.5 this note replaces that attribution. Because every step rounds, answers need not be correctly rounded: of the 654 recorded rows of build 20131 in [0.25, 0.5), 400 differ from the correctly rounded erf, by up to 3 units, and small arguments can be 1 unit high, as below. ERFC and ERFC.PRECISE below 0.5 are 1 less this value, and GAUSS at tiny arguments takes half of it at its stored z/sqrt(2).
Explanation (inferred): That the legacy ERF(x) shares this body is inferred: ERF.PRECISE, ERFC and ERFC.PRECISE rows were scored in full, and for ERF itself the record holds only nine non-zero single-argument inputs below 0.5 (build 19929), all equal to the rational.
Formula
Excel
Mathematical value
ERF.PRECISE(0.4524739583333333) Excel 16.0 build 20131, platform and bitness not recorded, AMD Ryzen 7 4800HInputs and reference value
Number supplied through a cell.
x: 0.4524739583333333 0x3fdcf55555555555
mpmath erf at 800 bits from the binary64 input, correctly rounded.
0.4777590107351978 0x3fde939a879e86f6
0.4777590107351976 0x3fde939a879e86f3
ERF.PRECISE(9.094947017729282e-13) Excel 16.0 build 20131, platform and bitness not recorded, AMD Ryzen 7 4800HInputs and reference value
Number supplied through a cell.
x: 9.094947017729282e-13 0x3d70000000000000
mpmath erf at 800 bits from the binary64 input, correctly rounded.
1.0262548740643186e-12 0x3d720dd750429b6e
1.0262548740643184e-12 0x3d720dd750429b6d
ERF.PRECISE(9.999999999999998e-11) Excel 16.0 build 20131, platform and bitness not recorded, AMD Ryzen 7 4800HInputs and reference value
Number supplied through a cell.
x: 9.999999999999998e-11 0x3ddb7cdfd9d7bdb9
mpmath erf at 800 bits from the binary64 input, correctly rounded.
For normal abs(x)<0.5, use R(op)=RN53(RN64(op)): round each operation to a 64-bit significand, then store to binary64. Decode the following hexadecimal strings as binary64 bit patterns, not integers converted to floating-point values.
Power
Numerator coefficient
Denominator coefficient
0
3ff1df5e70c7956b
3fefada15778ece6
1
3fc201d8627a7d2c
3fdd191aca8d2499
2
3fa6f289d165b303
3fb79f85ba68803e
3
3f5d93a5813e372c
3f856de5da86af12
4
3f2932767df264b2
3f4609751b5b6488
5
—
3ef4f20a473a5ab0
Store t=R(x*x).
Evaluate each polynomial by Horner, beginning with its highest-power coefficient. Every step is v=R(R(v*t)+coefficient). Keep the multiplication store separate from the addition store; do not use FMA.
Store p=R(x*N) and return R(p/D).
Worked x=0.25: t=0.0625; the staged coefficient evaluation gives N=1.126001525484713, D=1.018724202200851, p=0.2815003813711783, and result 0.276326390168237 (0x3fd1af54e232d60a). These are outputs of the stated reconstruction, with all input coefficients retained above.
The degrees and stores are supported by discriminating readings. The final bits of several higher-order coefficients remain open: the fixed c14 model matched 59,982 of a fresh 60,000-row holdout. Do not extrapolate this ratio above abs(x)=0.5. For larger magnitudes the current code uses the signed stored complement copysign(R(1-upper_ERFC(abs(x))),x). At exactly plus or minus 0.5 it instead retains its runtime ERF fallback. The fixed ratio and the mathematical value agree in bits at the positive half point, so that single recorded answer does not identify which private branch owns it. Zero and nonnormal inputs also retain the fallback and their separate transfer/publication rules. The upper ERFC exponential stage is measured, but its remaining rational factor is a stand-in. No published Handbook suite establishes a whole-domain equality claim.
Rust code
Show the CalcFunc source of this function
Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.
No implementation has been published with a Handbook test suite for this function.
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.
Excel 16.0 build
Platform and CPU
Captured inputs
19929
Windows, bitness not recorded, CPU not recorded
42
20131
Windows, bitness not recorded, AMD Ryzen 7 4800H with Radeon Graphics
409,213
XC-ERF.PRECISE-001: build 19929 versus build 20131; 1 same-input pairs, 0 differing answers. Compared axes: excel-build. Numeric answers were compared by their recorded binary64 bits; other answers by typed value.
Agreement on these compared inputs does not establish agreement on unmeasured inputs.
These are earlier recorded answers, not new Excel runs or an additional cross-build comparison. The function JSON retains each source locator, exact argument bits where available, and input-route status. Call notation does not imply that captured binary64 values were entered as decimal formula literals.
Excel 16.0 build 20131
platform not recorded
ERF.PRECISE(0.4524739583333333) returned 0.4777590107351978 (0x3fde939a879e86f6). ERF.PRECISE(9.094947017729282e-13) returned 1.0262548740643186e-12 (0x3d720dd750429b6e). 1 further recorded control is attached. Inputs were supplied through cells using Value2. These are controls from this environment, not a same-input comparison with another build.
42 captured inputs are indexed for this environment. Capture dates are not recorded. This is a reading count, not a comparison with another build. Retained control =ERF.PRECISE(0) returned 0.0 (0x0000000000000000). The selected archive row does not record its input plumbing; no input route is inferred.
Windows, bitness not recorded, AMD Ryzen 7 4800H with Radeon Graphics
409,213 captured inputs are indexed for this environment. Capture dates: 2026-07-16 to 2026-07-17. This is a reading count, not a comparison with another build. Retained control ERF.PRECISE(1) returned 0.8427007929497149 (0x3feaf767a741088b). The selected archive row does not record its input plumbing; no input route is inferred.