3 ms·
It’s not that I don’t understand, it’s that I do. Floats are inherently lossy representations. Yes, this means the more operations you perform on a float input,
by TylerE 3y ago
It’s not that I don’t understand, it’s that I do. Floats are inherently lossy representations. Yes, this means the more operations you perform on a float input, the fuzzier the value is.You ignore that harsh reality at your peril. If you find engineering rigor sad, I don’t know what to tell you.
- saagarjha 3y ago"Floats are not deterministic" is not engineering rigor, it's just wrong. They are specified precisely by IEEE-754 in how they must behave and which operations are allowed to produce which results.
- TylerE 3y agoIEEE 754 conforming floats conform to IEEE-754. If they actually conform. Low end devices with shitty software implementations often get the hard edge cases wrong.
- saagarjha 3y agoYes and when that happens it is important to know what went wrong rather than just handwaving "oh it's that float stuff again I can't trust it".
- jacobolus 3y ago> the more operations you perform on a float input, the fuzzier the value is No, any float always precisely represents a specific number. The issue is that only a finite number of numbers are representable. Some algorithms are poorly conditioned and when implemented using floating point arithmetic will lead to a result that is different than what you would get in idealized real number arithmetic. That doesn't make any floating point value "fuzzy".
- aidenn0 3y ago> No, any float always precisely represents a specific number. The issue is that only a finite number of numbers are representable. A float always precisely represents a specific number, but that number is not always precisely the equal to the algebraic result of the operations performed (even when ignoring transcendental and irrational functions). This should be obvious since there is no limit to rational numbers, but finite floating point numbers. If you design your algorithms very carefully, you can end up with the ratio of the output of your algorithm to the ratio of the algebraic result close to unity over a wide domain of inputs.