Floating-Point Arithmetic on Deterministic Systems
summary
Claim: commodity IEEE 754 floats and common compiler optimizations produce nondeterministic results—ordering matters (1.1−0.3−0.8 yields different answers by evaluation order) and fused multiply ad can flip correctness depending on -O flags. Historical failure: 0.1 truncation on an older system accumulates to a third‑second error over 100 hours and contributes to a 1991 Gulf War interceptor miss. Options evaluated: software reference implementations like softfloat, reimplementing BLAS in software, fixed‑point, caching callsite results, single‑machine lifetimes, posits; software or bespoke formats trade speed for reproducible correctness.
AI-written summary · about
chapters (11)
- 0:00Floating-point challenges
- 3:32IEEE 754 basics
- 9:34Floating-point quirks
- 16:37Floating-point errors
- 19:51Deterministic computation
- 24:54IEEE 754 gaps
- 30:14Approaches to determinism
- 36:32Software-defined solutions
- 40:28Caching results
- 44:55Practical solutions
- 47:11Q&A
related talks
01h 04mCross-Platform Floating-Point Determinism Out of the Box
48mFuture-Proofing Numerical Accuracy with Formal Specifications
02mWhen Computers Can't Math - Floating Point Rounding Error Explained
56mHow to Quickly Convert Floating-Point Numbers in C++
01h 37mAn Overview of Program Optimization Techniques
01h 05mPerformance Optimization in Software Development - Being Friendly to Your Hardware
01h 02mFastware
05mLightning Talk: Micro C++ Benchmarks & Murphy's Law
