(vals: ReadonlyArray<Expression>)
| 849 | // SYMBOLIC data (a valueless symbol, an unresolved expression) has no |
| 850 | // numeric reading: stay inert rather than sort NaN placeholders into |
| 851 | // the quantile split and bake a definite `(…, NaN, …)` tuple that a |
| 852 | // later assignment contradicts. See `collectData`, which is the rule |
| 853 | // the whole aggregate family shares — and whose single walk feeds both |
| 854 | // the exact and the float path below. |
| 855 | const xs = collectData(ops); |
| 856 | if (xs === null) return undefined; |
| 857 | const nonReal = nonRealUnivariateError(engine, 'Quartiles', xs); |
| 858 | if (nonReal) return nonReal; |
no test coverage detected