Floating-point arithmetic

690 points · 18 comments · view on lemmy.world

18 Comments

Kajika@lemmy.ml · 78 pts · 2y (7 replies)

Took me 2 hours to find out why the final output of a neural network was a bunch of NaN. This is always very annoying but I can't really complain, it make sense. Just sucks.

kurwa@lemmy.world · 44 pts · 2y

I hope it was garlic NaN at least.

flying_sheep@lemmy.ml · 13 pts · 2y (5 replies)

I guess you can always just add an assert not data.isna().any() in strategic locations

Kajika@lemmy.ml · 27 pts · 2y (4 replies)

That could be a nice way. Sadly it was in a C++ code base (using tensorflow). Therefore no such nice things (would be slow too). I skill-issued myself thinking a struct would be 0 -initialized but MyStruct input; would not while MyStruct input {}; will (that was the fix). Long story.

fkn@lemmy.world · 12 pts · 2y

I too have forgotten to memset my structs in c++ tensorflow after prototyping in python.

TheFadingOne@feddit.de · 3 pts · 2y

If you use the GNU libc the feenableexcept function, which you can use to enable certain floating point exceptions, could be useful to catch unexpected/unwanted NaNs

nickwitha_k@lemmy.sdf.org · 1 pts · 2y

Oof. This makes me appreciate the abstractions in Go. It's a small thing but initializing structs with zero values by default is nice.

flying_sheep@lemmy.ml · 1 pts · 2y

Oof. C++ really is a harsh mistress.

affiliate@lemmy.world · 31 pts · 2y

this is just like in regular math too. not being a number is just so fun that nobody wants to go back to being a number once they get a taste of it

Tolookah@discuss.tchncs.de · 7 pts · 2y

Thanks. This is great

kubica@kbin.social · 6 pts · 2y

Fucking over-dramatic divisions by 0, sigh.

dan@upvote.au · 5 pts · 2y

Also applies to nulls in SQL queries.

It's not fun tracing where nulls are coming from when dealing with a 1500 line data warehouse pipeline query that aggregates 20 different tables.

palordrolap@kbin.social · 4 pts · 2y

"Bounds checking, mobof--ker! Do you speak it?"

Johanno@feddit.de · 3 pts · 2y

Nanananana! Batman!

ReakDuck@lemmy.ml · 3 pts · 2y

As I was coding in C++ my own Engine with OpenGL. I forgot something to do. Maybe forgot to assign a pointer or forgot to pass a variable. At the end I had copied a NaN value to a vertieces of my Model as the Model should be a wrapper for Data I wanted to read and visualize.

Printing the entire Model into the terminal confused me why everything is NaN suddenly when it started nicely.

ElectricMoose@lemmy.world · 3 pts · 2y

Consider IEEE754 arithmetic as monadic, simple!

navi@lemmy.tespia.org · 3 pts · 2y

NaN is such a fun floating point virus. Some really wonky gameplay after we hit NaN in a few spots.

Moosely@lemmy.world · 1 pts · 2y

This gave me some real Agent Smith vibes