I don't think this is correct, at least in the context of the implementation I shared.Hurkyl wrote: Sun Jun 28, 2026 10:13 pm q requires zero bits of storage; it's hard-coded.
That's the point of a fixed-point data type: it's functionally identical to floating-point representations, but you don't have to use any bits to store the exponent part because you fix it to a constant (in this case to -16) and never change it. So you get a 64 bit significand rather than the 53 bit significand of the standard 64-bit floating point type which is great if you're in the range where you have enough precision and aren't wasting too much. (and the fixed exponent helps if you have to do a software implementation using integer types)
In cases where the base of the ratio becomes arbitrarily based on the number of machines, then I suppose it would be fine to round to the nearest value, which is already happening anyway, unless you fully switch to rational types (which again, you can afford, since the ratio only gets updated whenever a source of power goes offline, not every tick).Hurkyl wrote: Sun Jun 28, 2026 10:13 pm You're missing the point that there are other, relatively arbitrary multipliers on things like power usage. For example, brownouts can throttle energy usage by an amount depending on the available and required power. Modules can change the energy usage too, which can again be fairly arbitrarily scaled if the beacon they're in is partially powered.
Then it's an actual bug (if 2.5J are being used in excess), not just a floating-point inaccuracy.Hurkyl wrote: Sun Jun 28, 2026 10:13 pm I'm betting that there's an off-by-one error in expectations. Like, if you turn it on at tick zero, your burner miner outputs a coal at tick 240, 480, 720, and so forth.


