Dave Lewis uploaded a new version of VMMaker to project VM Maker:
http://www.squeaksource.com/VMMaker/VMMaker.oscog-dtl.71.mcz==================== Summary ====================
Name: VMMaker.oscog-dtl.71
Author: dtl
Time: 4 June 2011, 1:27:56 am
UUID: f888ab51-e5b6-48f9-b48b-30f92e61ee50
Ancestors: VMMaker.oscog-eem.70
Montgomery multiplication bug fix from <
http://lists.squeakfoundation.org/pipermail/vm-dev/2011-June/008350.html>
Date: Sat, 4 Jun 2011 00:29:37 +0200
From: Nicolas Cellier <
[hidden email]>
To: Squeak Virtual Machine Development Discussion <
[hidden email]>
Subject: [Vm-dev] BUG in Montgomery multiplication
Recent addition, montgomery multiplication, has a bug:
it fails to correctly take last carry into account...
You can see it with this example (if you have the Smalltalk mock up) :
| m mInv a b |
m := 15485863.
mInv := 256 - ((m bitAnd: 255) reciprocalModulo: 256).
a := 8826019 digitMontgomeryTimes: 8826019 modulo: m mInvModB: mInv.
b := 8826019 naiveMontgomeryTimes: 8826019 modulo: m mInvModB: mInv.
self assert: a = b
Correct result is given by naive mock up : 10626344
The primitive gives a wrong result.
I attach a correction for the LargeInteger plugin (and for the
Smalltalk mock up too).
Sorry for uncomplete tests.
Please, update VMMaker ASAP.
Nicolas