3 ms·
A sure sign of an inexperienced programmer in numerical computing is when they check for equality to zero of a floating-point number as if (x == 0) ... instea
by beryilma 3y ago
A sure sign of an inexperienced programmer in numerical computing is when they check for equality to zero of a floating-point number as
if (x == 0) ...
instead of something like
if (abs(x) < eps) ...
where eps is a suitably defined small number.
- bee_rider 3y agoSometimes it is fine. For example, reference BLAS will check if the input scalars in DGEMM are exactly zero, for C <- alpha*AB + beta*C If beta is exactly 0, you don’t have to read C, just write to it. The key here is that beta is likely to be an exact value that is entered as a constant, and detecting it allows for a worthwhile optimization.
- esrauch 3y agoI think funny enough a sure sign of an inexperienced programmer in bigco application programming is the other way around, that they wrongly learn a metal model of "floating point is approximate, never ever do ==" in school.
- Reubensson 3y agoI would guess even most of time people using epsilon don't understand it. Its not like there is universal constant error with floating point numbers. I feel that saying just use epsilon is not much better than x == 0 and could be harder to find bugs if it sometimes works and othertimes does not.