Skip to content

Commit 0a74184

Browse files
committed
Test subtraction and clean up.
1 parent b667b70 commit 0a74184

2 files changed

Lines changed: 32 additions & 16 deletions

File tree

src/bigfloat.ts

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -178,27 +178,30 @@ export class BigFloat {
178178
return(carry);
179179
}
180180

181-
mulBig(factor: BigFloat) {
182-
let limbList = factor.limbList;
183-
const limbCount = limbList.length;
184-
let out = new BigFloat();
185-
186-
for(let limbNum = 0; limbNum < limbCount; ++limbNum) {
187-
this.mulInt(limbList[limbNum], out.limbList, 0, limbNum, 0xffffffff);
181+
private mulBig(multiplier: BigFloat) {
182+
let multiplierLimbs = multiplier.limbList;
183+
const lenMultiplier = multiplierLimbs.length;
184+
let product = new BigFloat();
185+
let productLimbs = product.limbList;
186+
187+
for(let posMultiplier = 0; posMultiplier < lenMultiplier; ++posMultiplier) {
188+
this.mulInt(multiplierLimbs[posMultiplier], productLimbs, 0, posMultiplier, 0xffffffff);
188189
}
189190

190-
out.isNegative = this.isNegative ^ factor.isNegative;
191-
out.fractionLen = this.fractionLen + factor.fractionLen;
191+
product.isNegative = this.isNegative ^ multiplier.isNegative;
192+
product.fractionLen = this.fractionLen + multiplier.fractionLen;
192193

193-
return(out);
194+
return(product);
194195
}
195196

196-
mul(factor: number | BigFloat) {
197-
if(typeof(factor) == 'number') {
198-
factor = BigFloat.tempFloat.setDouble(factor as number);
197+
/** Multiply and return product in a new BigFloat. */
198+
199+
mul(multiplier: number | BigFloat) {
200+
if(typeof(multiplier) == 'number') {
201+
multiplier = BigFloat.tempFloat.setDouble(multiplier as number);
199202
}
200203

201-
return(this.mulBig(factor as BigFloat));
204+
return(this.mulBig(multiplier as BigFloat));
202205
}
203206

204207
absDeltaFrom(other: BigFloat) {
@@ -257,7 +260,7 @@ export class BigFloat {
257260
}
258261
}
259262

260-
addBig(addend: BigFloat) {
263+
private addBig(addend: BigFloat) {
261264
let augend = this as BigFloat;
262265
let sum = new BigFloat();
263266

@@ -328,7 +331,7 @@ export class BigFloat {
328331
return(sum);
329332
}
330333

331-
subBig(subtrahend: BigFloat) {
334+
private subBig(subtrahend: BigFloat) {
332335
let minuend = this as BigFloat;
333336
let difference = new BigFloat();
334337

@@ -422,10 +425,14 @@ export class BigFloat {
422425
}
423426
}
424427

428+
/** Add and return sum in a new BigFloat. */
429+
425430
add(addend: number | BigFloat) {
426431
return(this.addSub(addend, 0));
427432
}
428433

434+
/** Subtract and return difference in a new BigFloat. */
435+
429436
sub(subtrahend: number | BigFloat) {
430437
return(this.addSub(subtrahend, 1));
431438
}

test/test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,15 @@ let testList: Test[] = [
144144
expr: a.toString(10) + ' + ' + b.toString(10) + '\n',
145145
libResult: a.add(b).toString(10)
146146
});
147+
},
148+
() => {
149+
a.setDouble(randDouble());
150+
b.setDouble(randDouble());
151+
152+
return({
153+
expr: a.toString(10) + ' - ' + b.toString(10) + '\n',
154+
libResult: a.sub(b).toString(10)
155+
});
147156
}
148157
]
149158

0 commit comments

Comments
 (0)