fix broken amount multiplication

This commit is contained in:
Florian Dold 2020-07-16 17:21:12 +05:30
parent bcd9e2e5ff
commit 18f7406d46
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B

View File

@ -342,22 +342,26 @@ function mult(a: AmountJson, n: number): Result {
if (n == 0) {
return { amount: getZero(a.currency), saturated: false };
}
let acc = { ...a };
let x = a;
let acc = getZero(a.currency);
while (n > 1) {
let r: Result;
if (n % 2 == 0) {
n = n / 2;
r = add(acc, acc);
} else {
n = n - 1;
r = add(acc, a);
n = (n - 1) / 2;
const r2 = add(acc, x)
if (r2.saturated) {
return r2;
}
if (r.saturated) {
return r;
acc = r2.amount;
}
acc = r.amount;
const r2 = add(x, x);
if (r2.saturated) {
return r2;
}
return { amount: acc, saturated: false };
x = r2.amount;
}
return add(acc, x);
}
// Export all amount-related functions here for better IDE experience.