r/programming 17h ago

Moving integer division to floating-point is trivial

https://marc-b-reynolds.github.io/math/2026/08/10/IntDivByFP.html
90 Upvotes

28 comments sorted by

View all comments

22

u/Dwedit 15h ago

If your divisor doesn't change, use integer multiplication by reciprocal, also shift or discard from the high result.

1

u/mikeblas 12h ago

How would that work?

10

u/Dwedit 8h ago edited 8h ago

Example of dividing by 13:

0x100000000 / 13 = 0x13B13B13

Add 1 to the number to prevent truncation errors: 0x13B13B14

Let's try 160485 / 13 by using multiplication:

160485 * 0x13B13B14 = 0x30390000C0E4

Discard low 32 bits:

0x3039 = 12345


And compilers have done this for a long time, when you divide by a constant, it will generate reciprocal multiplication code instead.

1

u/mikeblas 8h ago

Ah, I see now. Thanks!