Live data from Hacker News

Divine By Zero

thedailywtf.com

21–26 of 26 posts

Re: Divine By Zero

#21
post #7

I was confused about the "php" == 0, until I found http://php.net/manual/en/types.comparisons.php . So "php" == 0 is true and "php" == true is true, but 0 == true is false. Yikes! It seems like comparisons in PHP are as bad as they are in JS. I have a hard time believing this is real. Does WTF do any verification?

Those PHP "features" are the real WTF.

Re: Divine By Zero

#22

As much as I love TDWTF I have to say I'm disappointed to see a submission from there get 46 upvotes on the front page. Great story though

Maybe they're hoping that someone can explain what this person was thinking?

I doubt it, but I guess it's at least possible that someone here works with the criminally insane.

Re: Divine By Zero

#23

As much as I love TDWTF I have to say I'm disappointed to see a submission from there get 46 upvotes on the front page. Great story though

Yeah, agreed. The whole premise of the function is insane but I'm pretty sure the story is a lie because I just can't see how anybody would write the code this way unless they were intentionally trying to obfuscate code for humour/annoyance.

Re: Divine By Zero

#24
post #19

Lets say for a moment that this isn't made up. The questions that struck me immediately are as follows: 1. What was the motivation for creating this function? Was it (hopefully) to show off how "smart" he was? Was the company he worked for doing any kind of calculations related to (dear god no) financial or medical data that he thought he could improve? 2. How does anyone in this world escape grade school without kno…

I've had situations where I'm calculating a ratio or something for each member of a result set, and needed a "safe_divide" function. Mine was much less complex than this one, but returned 0 if the denominator was 0.

Re: Divine By Zero

#25
post #19

Lets say for a moment that this isn't made up. The questions that struck me immediately are as follows: 1. What was the motivation for creating this function? Was it (hopefully) to show off how "smart" he was? Was the company he worked for doing any kind of calculations related to (dear god no) financial or medical data that he thought he could improve? 2. How does anyone in this world escape grade school without kno…

Regarding #3: Division by zero should be a recoverable error in many programming situations. That's part of the beauty of NaN as defined by the IEEE standard for floating point numbers. It's quite a handy thing to be able to just do the operation and sort out the NaNs afterward. Suppose, for example, that you want to calculate the pixel-wise percent change in intensity between two grayscale images A and B. In a language with good built-in support for matrix datatypes, such as MATLAB, the ability to handle division by zero gracefully can quite often simplify the code.

result = (A-B)./A*100;

Now I can just use the isfinite function to produce a matrix of logical values that tells me which pixel locations have valid values (simultaneously handling the case of numerical overflow). Granted, this doesn't do much to simplify the code above. We could have just checked beforehand to find the pixels of A that had zero values. However, if you have a complicated expression involving multiple divisions, logarithms, or other functions that are undefined for some portion of the real numbers, treating these situations as "recoverable" in some sense allows you to write cleaner, more readable code if your implementation language permits you to just do the operation and check for NaN values (+Inf and -Inf too) afterward.

Re: Divine By Zero

#26
post #6

Is there an opposite website to The Daily WTF - a collection of short, elegant and clever code?

Thank you for your answers. To add something myself, the book Programming Pearls contains exactly this - short, elegant solutions, plus some extra food for thought and exercises.

http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/...

Post reply on HN