I've often heard it said that any sort of "dimensional" (involving length, time, mass, charge, etc.) calculation should be put in a dimensionless form for two reasons
- Getting a value ~ 1e14 when all of your inputs are near 1 is rather obvious (and unlikely) making it easier to pinpoint algorithmic errors.
- Conventional IEEE floating point numbers are denser near zero so dimensionless calculations are more accurate.
I have a pretty intuitive grasp of the first point (if all my lengths ≈ 1 and my masses ≈ 1 and my times ≈ 1 then I can expect all of my forces will reasonably ≈ 1) but I'm having a more difficult time digesting the second. I totally understand why the epsilon between floats depends on your location on the real line, but I don't see how this fact can be exploited for better accuracy. For instance, if you're using the SI speed of light (
c = 3e8) and add to it a small epsilon (
eps = 1e-8), then
c + eps == c and you've "lost" the epsilon to the floating-point void. I don't see how using a dimensionless speed of light (
c = 1) diminishes this sort of issue. Why are "dimensionless" simulations said to be more accurate?