Excel 16.0 build 20430
Windows, 64-bit, CPU not recorded
1,211 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.
Math and trigonometry functions
Matches all 1,244 recorded answers
Recorded: 1,211 in the answer bank and 33 workbook cells. How we measure this · See the Rust code
| Language | Name in Excel |
|---|---|
| Arabic | PRODUCT |
| Bulgarian | PRODUCT |
| Czech | PRODUCT |
| Danish | PRODUKT |
| German | PRODUKT |
| Greek | PRODUCT |
| English (Australia) | PRODUCT |
| English (United Kingdom) | PRODUCT |
| English (United States) | PRODUCT |
| Spanish | PRODUCTO |
| Estonian | PRODUCT |
| Finnish | TULO |
| French | PRODUIT |
| Hebrew | PRODUCT |
| Croatian | PRODUCT |
| Hungarian | SZORZAT |
| Indonesian | PRODUCT |
| Italian | PRODOTTO |
| Japanese | PRODUCT |
| Korean | PRODUCT |
| Lithuanian | PRODUCT |
| Latvian | PRODUCT |
| Norwegian | PRODUKT |
| Dutch | PRODUCT |
| Polish | ILOCZYN |
| Portuguese (Brazil) | PRODUTO |
| Portuguese (Portugal) | PRODUCT |
| Romanian | PRODUCT |
| Russian | ПРОИЗВЕД |
| Slovak | PRODUCT |
| Slovenian | PRODUCT |
| Serbian (Latin) | PRODUCT |
| Swedish | PRODUKT |
| Thai | PRODUCT |
| Turkish | ÇARPIM |
| Ukrainian | PRODUCT |
| Vietnamese | PRODUCT |
| Chinese (Simplified) | PRODUCT |
| Chinese (Hong Kong) | PRODUCT |
| Chinese (Traditional) | PRODUCT |
Names from Microsoft's support site.
PRODUCT(number1, [number2], ...)
PRODUCT(number1, [number2], ...) multiplies its admitted arguments and returns the product.
PRODUCT(a₁, …, a_k) = a₁ · a₂ · … · a_k
Arguments that are numbers, logical values, or text representations of numbers are counted; arguments that are error values or text that cannot be translated into numbers cause errors.
If an argument is an array or reference, only numbers in the array or reference are counted. Empty cells, logical values, text, or error values in the array or reference are ignored.
So the same value multiplies or vanishes depending on how it arrived:
| Value | Typed directly | Reached through a range or array |
|---|---|---|
2 | multiplies | multiplies |
TRUE | multiplies as 1 | ignored |
"3" | multiplies as 3 | ignored |
"abc" | causes an error | ignored |
| empty cell | — | ignored |
#N/A | causes an error | documented as ignored |
Returns Number.
0, as above, not the mathematical empty product 1.0, and it wins over everything, including values that would
otherwise overflow.PRODUCT is not a lift kernel; array arguments are consumed by scanning, under the
right-hand column of the table above. It never returns an array.| Error | Condition | Source |
|---|---|---|
#VALUE! | A directly typed argument is text that does not read as a number | Microsoft VBA page |
| propagated | A directly typed argument is an error value | Microsoft VBA page ("cause errors") |
#VALUE! | Fewer than one or more than 255 arguments | arity, refused at entry |
The error bound is benign; the range is not. For k factors the relative error of a sequential
product is bounded by roughly (k−1)·u/(1−(k−1)u) — linear in k, with no cancellation term,
because multiplication has no catastrophic cancellation (Higham, ASNA, ch. 3). Products are
accurate. What they are not is safe: the intermediate can overflow or underflow even when the
final result is perfectly representable. 1e300 · 1e300 · 1e-300 is 1e300 mathematically and
+∞ or #NUM! by naive evaluation, and the same happens in the underflow direction, where the
loss is silent — a subnormal intermediate quietly discards bits and the final value comes back
wrong rather than erroring.
The standard remedies, in increasing order of effort:
frexp/ldexp style). This makes intermediate range failures impossible
while keeping the same rounding sequence as the naive fold on the mantissa.ln and exp costs far more accuracy than the fold ever did.A natural-best implementation should take route 1. An implementation targeting Excel
compatibility should take none of them until Excel's own intermediate behaviour is pinned, because
each of them changes which inputs produce an error.
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.
PRODUCT · 1 lines · calc-func/src/catalogue/aggregate.rs on GitHubaggregate(PRODUCT, "PRODUCT", NUMBERS, product)
aggregate catalogue/aggregateproduct catalogue/aggregatetimes catalogue/aggregateholds_held_arrays catalogue/aggregatenumber_of catalogue/aggregateeach_number catalogue/aggregateread_values catalogue/aggregatereader catalogue/aggregateread_reference catalogue/aggregateoperand coerceNo implementation has been published with a Handbook test suite for this function.
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 |
|---|---|---|
| 20430 | Windows, 64-bit, CPU not recorded | 1,211 |
The 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.
Recorded environments and comparison details.
Windows, 64-bit, CPU not recorded
1,211 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.
SUMPRODUCT — despite the name, not a relative: it multiplies across arrays elementwise
and then sums, and it applies its own coercion rules.FACT, FACTDOUBLE, MULTINOMIAL — closed forms for products that PRODUCT would
compute term by term, and better conditioned for it.POWER — PRODUCT(x,x,x) and POWER(x,3) are the same mathematics by different
algorithms; see POWER on the integer-exponent path.AGGREGATE — the route to a product-like reduction that skips errors by declaration
rather than by an undocumented scan rule. AGGREGATE has no product option, which is itself
worth knowing before you plan around it.EXP(SUM(LN(range))) — the classical workaround for overflow, valid only for strictly
positive data, and less accurate than a scaled product.No named variants are recorded yet.
Suggest a correction or contribute an implementation · For agents