A wrong number here under-sizes a pond that a professional engineer sealed. So every formula in the engine is pinned by a test to a value someone can check by hand or find in print, and this page says which tests exist and what they compare.
One engine, two places, the same bits
The engine is one Rust crate. The server links it natively and your browser runs it compiled to WebAssembly. Every power, root and logarithm goes through the same portable math library on both. A test compares every fixture and every calculator export between the two, each number as its 64 bits, with no tolerance. The calculators on this site run that same crate.
Three sets of fixtures
- Derived: cases simple enough to work by hand, checked to nine decimal places. A single CN runoff, one Tc segment, a unit hydrograph peak, an orifice at one head, a WQv.
- Cross-check: published worked examples from TR-55, NEH 630, FHWA HEC-22, NYC DEP and the NYS design manual, each with its full inputs, its published answer and a stated tolerance.
- Regression: blessed snapshots of whole runs, so a change that moves a result has to be deliberate.
Every run also checks itself: mass balance through each pond, a stage-storage and stage-discharge that only rise, and no negative flow. A run that breaks one says so in its notes.
Reference data carries its source
Every curve number row, rainfall distribution, coefficient and rule records its edition, its source and whether it has been verified against the printed page. While any record is unverified, runs and reports say PRELIMINARY, as this page does.
The cross-check table
Not published yet. It is generated from the engine’s cross-check fixtures and appears here, example by example, with the published value, PondSheet’s value, the difference and the tolerance, once those fixtures are in the build.