4 ms·
> the implementation is a full 32-bit multiply using 16-bit limbs > (note: the LCG constants listed here are wrong) It's a buggy 24-bit multiply and the const
by elvis70 6y ago
> the implementation is a full 32-bit multiply using 16-bit limbs
> (note: the LCG constants listed here are wrong)
It's a buggy 24-bit multiply and the constants are accessed wrongly.
Look at the code https://www.qb64.org/forum/index.php?topic=1414.0 https://www.qb64.org/forum/index.php?topic=1414.0:
The third MUL computes the same value as the first but it should be [RndA+2] * [RndVar] and not [RndA] * [RndVar] hence a=0fd43fdh instead of a=0343fdh. Also carries are not taken into account in the first two ADDs.
The addition of c is similarly buggy.
- elvis70 6y agoI wrote a mistake. Carries can be ignored as the additions are made on the high-order word of the result.