this post was submitted on 08 Feb 2024
703 points (99.3% liked)

Programmer Humor

32051 readers
1447 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
top 21 comments
sorted by: hot top controversial new old
[–] Kajika@lemmy.ml 80 points 7 months ago (2 children)

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 points 7 months ago

I hope it was garlic NaN at least.

[–] flying_sheep@lemmy.ml 13 points 7 months ago (2 children)

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

[–] Kajika@lemmy.ml 29 points 7 months ago (4 children)

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 points 7 months ago

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

[–] TheFadingOne@feddit.de 5 points 7 months ago* (last edited 7 months ago)

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 points 7 months ago

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 points 7 months ago

Oof. C++ really is a harsh mistress.

[–] Omega_Haxors@lemmy.ml 3 points 7 months ago* (last edited 7 months ago) (1 children)

If (var.nan){var = 0} my beloved.

[–] hangukdise@lemmy.ml 2 points 7 months ago

It also depends on the context

[–] affiliate@lemmy.world 32 points 7 months ago

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

[–] kubica@kbin.social 8 points 7 months ago

Fucking over-dramatic divisions by 0, sigh.

[–] dan@upvote.au 7 points 7 months ago* (last edited 7 months ago)

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.

[–] Tolookah@discuss.tchncs.de 7 points 7 months ago

Thanks. This is great

[–] Omega_Haxors@lemmy.ml 7 points 7 months ago* (last edited 7 months ago)

The funniest thing about NaNs is that they're actually coded so you can see what caused it if you look at the binary. Only problem is; due to the nature of NaNs, that code is almost always going to resolve to "tried to perform arithmetic on a NaN"

There are also coded NaNs which are defined and sometimes useful, such as +/-INF, MAX, MIN (epsilon), and Imaginary

[–] palordrolap@kbin.social 6 points 7 months ago* (last edited 7 months ago)

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

[–] ReakDuck@lemmy.ml 3 points 7 months ago

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.

[–] Johanno@feddit.de 3 points 7 months ago

Nanananana! Batman!

[–] ElectricMoose@lemmy.world 3 points 7 months ago

Consider IEEE754 arithmetic as monadic, simple!

[–] navi@lemmy.tespia.org 3 points 7 months ago

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

[–] Moosely@lemmy.world 1 points 7 months ago

This gave me some real Agent Smith vibes