EXP(number) raises e to the supplied exponent. Microsoft documents EXP and LN as inverses; use base^exponent for a different base. EXP is useful when a growth model is written as an exponent, or when returning log-scale values to their original scale.
Try it
=EXP(0.05) is about 1.051271096376024. Applied to an initial balance of 200, =200*EXP(0.05) is about 210.2542192752048. The exponent is the total continuously compounded rate over the interval; it is not a count of discrete interest payments.
=EXP(0) returns 1. A negative exponent gives a positive reciprocal-scale result, such as =EXP(-1) at about 0.3678794411714423.
Quirks
A finite mathematical exponential can exceed the largest representable binary64 number. The recorded EXP(1000) worksheet reading is #NUM!, which the current finite-result policy reproduces. At the opposite end, rounding can produce a subnormal or zero in the kernel; the worksheet's publication policy and input route must be considered separately.
For tiny x, EXP(x) rounds close to one. Subtracting one can lose the quantity you wanted, and may give zero. PMT's small-rate route has a separate compensated exponential-minus-one step.
Do not replace an entire composition with one exponential: the stored LN result and multiply in BINOM.DIST's all-success route, and the normalized product in GEOMEAN, are separately observed stages. The LN/EXP environment comparison also records machine-dependent answers on some inputs.
How to implement
The current source uses an extended x87 chain. Its working precision has a 64-bit significand and extended exponent range; the final result is stored to binary64 once.
Load x exactly and multiply it, in extended precision with ties-to-even, by the resident log2(e) constant. The source constant is 0xB8AA3B295C17F0BC * 2^-63. Call the extended result t; do not store it as a binary64 intermediate.
Work on u=abs(t). Round u to the nearest integer, ties-to-even, giving k. Compute the extended fraction f=u-k, which lies between -0.5 and 0.5.
Evaluate the modeled F2XM1(f) instruction, add extended 1, and scale the result by 2^k with the modeled FSCALE operation. This gives an approximation to 2^u without an intermediate binary64 assignment.
If t was negative, take the extended reciprocal of that positive result. Store the answer once to binary64, ties-to-even. Map a nonfinite published result to the worksheet error through the surface policy.
At x=0, t=k=f=0, so the fractional instruction gives zero and the reconstructed result is exactly one. For x=1, t is about 1.442695, k=1 and f about 0.442695; doubling the fractional result reconstructs about 2.718281828459045. Negative inputs take the reciprocal before storage, rather than storing the positive answer and dividing afterward.
F2XM1 is an approximate instruction leaf. A portable implementation must model it or declare a different numerical target; replacing it with an ideal power-of-two leaf is contradicted by recorded broader windows. The local fingerprint labels do not identify every input region or the CPU's private implementation. The source offers native and software x87 backends, with residual and environment limits described in the cited records.
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.
25 exp "EXP" (1, 1) [V"number"] |s, a, sv| {
let x = num(s, a, 0)?;
out_with_subnormal(s, ExcelRealPolicy::FINITE.publish(x, k::exp_fn::exp_kernel(x)))
}
pubfnexp_kernel(n: f64) -> f64 {
// Excel's EXP is the x87 chain, not the platform `exp`; the// backend reproduces it bit-for-bit on x86_64. See `crate::ported::excel_numeric`.crate::ported::excel_numeric::excel_exp(n)
}
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
36
20131
Windows, bitness not recorded, AMD Ryzen 7 4800H with Radeon Graphics
734
18429
Windows, 64-bit, Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
54
20131
Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics
54
20228
Windows, 64-bit, CPU not recorded
90
20430
Windows, 64-bit, CPU not recorded
1,612
XC-EXP-001: build 19929 versus build 20430; 3 same-input pairs, 0 differing answers. Compared axes: excel-build. Numeric answers were compared by their recorded binary64 bits; other answers by typed value.
XC-EXP-002: build 20131 versus build 18429; 54 same-input pairs, 6 differing answers. Compared axes: cpu, excel-build, os. Numeric answers were compared by their recorded binary64 bits; other answers by typed value.
The differing machines changed Excel build and other recorded environment properties together. These observations do not isolate a build-only or CPU-only cause. The linked record retains each input, answer, and recheck status.
A recorded example, XD-EXP-001: the input 1.816072400038452 has bits 0x3ffd0ea1eed55587. On 2026-07-03, build 20131 on AMD Ryzen 7 4800H with Radeon Graphics returned 6.1476654002836915 (0x401897359943e077). On the other machine, 2026-07-05, build 18429 on Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz returned 6.147665400283691 (0x401897359943e076). These answers differ by one unit in the last place. Each machine ran this probe once; no repeat is recorded. The input was placed in a cell through Range.Value2 and its round trip was checked, rather than entered as a rounded decimal formula literal.
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 19929
Windows, bitness not recorded, CPU not recorded
36 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 =EXP(0) returned 1.0 (0x3ff0000000000000). The selected archive row does not record its input plumbing; no input route is inferred.
Observed formulas and results
=EXP(0) → 1.0 0x3ff0000000000000(not-recorded)
Excel 16.0 build 20131
Windows, bitness not recorded, AMD Ryzen 7 4800H with Radeon Graphics
734 captured inputs are indexed for this environment. Capture dates: 2026-07-21 to 2026-07-23. This is a reading count, not a comparison with another build. Retained control EXP(-4.4545571568632) returned 0.01162546699313378 (0x3f87cf17c44a36a5). The selected archive row does not record its input plumbing; no input route is inferred.
Windows, 64-bit, Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
54 captured inputs are indexed for this environment. Capture dates: 2026-07-05 to 2026-07-05. This is a reading count, not a comparison with another build. The indexed same-input control EXP(1.816072400038452) returned 6.147665400283691 (0x401897359943e076); XD-EXP-001 changed CPU, Excel build and OS together and remains not-rechecked.
Windows, 64-bit, AMD Ryzen 7 4800H with Radeon Graphics
54 captured inputs are indexed for this environment. Capture dates: 2026-07-03 to 2026-07-03. This is a reading count, not a comparison with another build. The indexed same-input control EXP(1.816072400038452) returned 6.1476654002836915 (0x401897359943e077); XD-EXP-001 changed CPU, Excel build and OS together and remains not-rechecked.
90 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. Retained control EXP(-0.651804390066281) returned 0.5211046518808217 (0x3fe0ace3a9b3e419). The capture specifies exact-double bulk Value2 cell input.
1,612 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. Retained control EXP(1) returned 2.718281828459045 (0x4005bf0a8b145769). The capture specifies exact-double bulk Value2 cell input.
On 6 recorded inputs this environment's answer is 1 ULP from the answer recorded in 16.0 build 20131, AMD Zen 2 (Windows, 64-bit). CPU, Excel build and operating system all differ between the two machines, so the cause is not isolated.
Run on Intel Core Processor (Haswell, no TSX): gives this answer on 6 of 6 of these inputs. Code
On 6 recorded inputs this environment's answer is 1 ULP from the answer recorded in 16.0 build 18429, Intel Coffee Lake (Windows, 64-bit). CPU, Excel build and operating system all differ between the two machines, so the cause is not isolated.
Not run on this CPU. On x86_64 the kernel executes the CPU's own x87 instructions, so its answer follows the machine; on Intel Core Processor (Haswell, no TSX) it gave this answer on 0 of 6. Code
Use LN for the inverse and POWER or ^ for another base. See GEOMEAN and BINOM.DIST for measured compositions that reuse EXP, and PMT for a compensated exponential-minus-one route.