47 points

Serious answer: Posits seem cool, like they do most of what floats do, but better (in a given amount of space). I think supporting them in hardware would be awesome, but of course there’s a chicken and egg problem there with supporting them in programming languages.

permalink
report
reply
21 points
*

Posits aside, that page had one of the best, clearest explanations of how floating point works that I’ve ever read. The authors of my college textbooks could have learned a thing or two about clarity from this writer.

permalink
report
parent
reply
3 points
*

I had the great honour of seeing John Gustafson give a presentation about unums shortly after he first proposed posits (type III unums). The benefits over floating point arithmetic seemed incredible, and they seemed largely much more simple.

I also got to chat with him about “Gustafson’s Law”, which kinda flips Amdahl’s Law on its head. Parallel computing has long been a bit of an interest for me I was also in my last year of computer science studies then and we were covering similar subjects at the time. I found that timing to be especially amusing.

permalink
report
parent
reply
41 points

No real use you say? How would they engineer boats without floats?

permalink
report
reply
13 points

Just invert a sink.

permalink
report
parent
reply
7 points

Just build submarines, smh my head.

permalink
report
parent
reply
25 points

Based and precision pilled.

permalink
report
reply
25 points

I know this is in jest, but if 0.1+0.2!=0.3 hasn’t caught you out at least once, then you haven’t even done any programming.

permalink
report
reply
8 points

IMO they should just remove the equality operator on floats.

permalink
report
parent
reply
8 points

Me making my first calculator in c.

permalink
report
parent
reply
6 points

what if i add more =

permalink
report
parent
reply
5 points

That should really be written as the gamma function, because factorial is only defined for members of Z. /s

permalink
report
parent
reply
22 points

As a programmer who grew up without a FPU (Archimedes/Acorn), I have never liked float. But I thought this war had been lost a long time ago. Floats are everywhere. I’ve not done graphics for a bit, but I never saw a graphics card that took any form of fixed point. All geometry you load in is in floats. The shaders all work in floats.

Briefly ARM MCU work was non-float, but loads of those have float support now.

I mean you can tell good low level programmers because of how they feel about floats. But the battle does seam lost. There is lots of bit of technology that has taken turns I don’t like. Sometimes the market/bazaar has spoken and it’s wrong, but you still have to grudgingly go with it or everything is too difficult.

permalink
report
reply
10 points

But if you throw an FPU in water, does it not sink?

It’s all lies.

permalink
report
parent
reply
9 points

all work in floats

We even have float16 / float8 now for low-accuracy hi-throughput work.

permalink
report
parent
reply
6 points
*

Even float4. You get +/- 0, 0.5, 1, 1.5, 2, 3, Inf, and two values for NaN.

Come to think of it, the idea of -NaN tickles me a bit. “It’s not a number, but it’s a negative not a number”.

permalink
report
parent
reply
6 points
*

I think you got that wrong, you got +Inf, -Inf and two NaNs, but they’re both just NaN. As you wrote signed NaN makes no sense, though technically speaking they still have a sign bit.

permalink
report
parent
reply
3 points

IMO, floats model real observations.

And since there is no precision in nature, there shouldn’t be precision in floats either.

So their odd behavior is actually entirely justified. This is why I can accept them.

permalink
report
parent
reply
2 points

I just gave up fighting. There is no system that is going to both fast and infinitely precision.

So long ago I worked in a game middleware company. One of the most common problems was skinning in local space vs global space. We kept having customers try and have global skinning and massive worlds, then upset by geometry distortion when miles away from the origin.

permalink
report
parent
reply
1 point

How do y’all solve that, out of curiosity?

I’m a hobbyist game dev and when I was playing with large map generation I ended up breaking the world into a hierarchy of map sections. Tiles in a chunk were locally mapped using floats within comfortable boundaries. But when addressing portions of the map, my global coordinates included the chunk coords as an extra pair.

So an object’s location in the 2D world map might be ((122, 45), (12.522, 66.992)), where the first elements are the map chunk location and the last two are the precise “offset” coordinates within that chunk.

It wasn’t the most elegant to work with, but I was still able to generate an essentially limitless map without floating point errors poking holes in my tiling.

I’ve always been curious how that gets done in real game dev though. if you don’t mind sharing, I’d love to learn!

permalink
report
parent
reply
2 points

I’d have to boulder check, but I think old handheld consoles like the Gameboy or the DS use fixed-point.

permalink
report
parent
reply
1 point

I’m pretty sure they do, but the key word there is “old”.

permalink
report
parent
reply
1 point

Floats make a lot of math way simpler, especially for audio, but then you run into the occasional NaN error.

permalink
report
parent
reply
1 point

On the PS3 cell processor vector units, any NaN meant zero. Makes life easier if there is errors in the data.

permalink
report
parent
reply

Programmer Humor

!programmer_humor@programming.dev

Create post

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

  • Keep content in english
  • No advertisements
  • Posts must be related to programming or programmer topics

Community stats

  • 1.9K

    Monthly active users

  • 1.1K

    Posts

  • 39K

    Comments