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

Programmer Humor

32869 readers
1306 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 11 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 11 months ago

I hope it was garlic NaN at least.

[–] flying_sheep@lemmy.ml 13 points 11 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 11 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 11 months ago

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

[–] TheFadingOne@feddit.de 5 points 11 months ago* (last edited 11 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 11 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 11 months ago

Oof. C++ really is a harsh mistress.

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

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

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

It also depends on the context

[–] affiliate@lemmy.world 32 points 11 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 11 months ago

Fucking over-dramatic divisions by 0, sigh.

[–] dan@upvote.au 7 points 11 months ago* (last edited 11 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.

[–] Omega_Haxors@lemmy.ml 7 points 11 months ago* (last edited 11 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

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

Thanks. This is great

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

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

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

Consider IEEE754 arithmetic as monadic, simple!

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

Nanananana! Batman!

[–] ReakDuck@lemmy.ml 3 points 11 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.

[–] navi@lemmy.tespia.org 3 points 11 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 11 months ago

This gave me some real Agent Smith vibes