@phensley/decimal
Advanced tools
Comparing version 1.6.0 to 1.6.1
@@ -52,4 +52,4 @@ import { add, divide, multiply, subtract, trimLeadingZeros, DivMod } from './math'; | ||
var size = function (n) { | ||
var q = (n / 7 /* Constants.RDIGITS */) | 0; | ||
var r = n - q * 7 /* Constants.RDIGITS */; | ||
var q = (n / 7 /* RDIGITS */) | 0; | ||
var r = n - q * 7 /* RDIGITS */; | ||
return r === 0 ? q : q + 1; | ||
@@ -67,3 +67,3 @@ }; | ||
this._exp = 0; | ||
this.flag = 0 /* DecimalFlag.NONE */; | ||
this.flag = 0 /* NONE */; | ||
if (typeof num === 'string' || typeof num === 'number') { | ||
@@ -89,3 +89,3 @@ this.parse(num); | ||
Decimal.prototype.isNaN = function () { | ||
return this.flag === 1 /* DecimalFlag.NAN */; | ||
return this.flag === 1 /* NAN */; | ||
}; | ||
@@ -102,3 +102,3 @@ /** | ||
Decimal.prototype.isInfinity = function () { | ||
return this.flag === 2 /* DecimalFlag.INFINITY */; | ||
return this.flag === 2 /* INFINITY */; | ||
}; | ||
@@ -122,3 +122,3 @@ /** | ||
// NAN is never equal to itself or any other value | ||
if (u.flag === 1 /* DecimalFlag.NAN */ || v.flag === 1 /* DecimalFlag.NAN */) { | ||
if (u.flag === 1 /* NAN */ || v.flag === 1 /* NAN */) { | ||
return -1; | ||
@@ -133,3 +133,3 @@ } | ||
// Positive infinity after all other values | ||
return u.flag === 2 /* DecimalFlag.INFINITY */ ? (u.sign === -1 ? -1 : 1) : v.sign === -1 ? 1 : -1; | ||
return u.flag === 2 /* INFINITY */ ? (u.sign === -1 ? -1 : 1) : v.sign === -1 ? 1 : -1; | ||
} | ||
@@ -234,3 +234,3 @@ u = u.stripTrailingZeros(); | ||
v = coerceDecimal(v); | ||
var r = this.handleFlags(0 /* Op.ADDITION */, v); | ||
var r = this.handleFlags(0 /* ADDITION */, v); | ||
if (r === undefined) { | ||
@@ -249,3 +249,3 @@ if (this.isZero()) { | ||
v = coerceDecimal(v); | ||
var r = this.handleFlags(1 /* Op.SUBTRACTION */, v); | ||
var r = this.handleFlags(1 /* SUBTRACTION */, v); | ||
if (r === undefined) { | ||
@@ -265,3 +265,3 @@ if (this.isZero()) { | ||
v = coerceDecimal(v); | ||
var r = this.handleFlags(2 /* Op.MULTIPLICATION */, v); | ||
var r = this.handleFlags(2 /* MULTIPLICATION */, v); | ||
if (r !== undefined) { | ||
@@ -302,3 +302,3 @@ return r; | ||
v = coerceDecimal(v); | ||
var r = this.handleFlags(3 /* Op.DIVISION */, v); | ||
var r = this.handleFlags(3 /* DIVISION */, v); | ||
if (r !== undefined) { | ||
@@ -352,5 +352,5 @@ return r; | ||
v = coerceDecimal(v); | ||
var rq = this.handleFlags(3 /* Op.DIVISION */, v); | ||
var rq = this.handleFlags(3 /* DIVISION */, v); | ||
if (rq !== undefined) { | ||
var rm = this.handleFlags(4 /* Op.MOD */, v); | ||
var rm = this.handleFlags(4 /* MOD */, v); | ||
return [rq, rm]; | ||
@@ -394,3 +394,3 @@ } | ||
v = coerceDecimal(v); | ||
var r = this.handleFlags(4 /* Op.MOD */, v); | ||
var r = this.handleFlags(4 /* MOD */, v); | ||
return r === undefined ? this.divmod(v)[1] : r; | ||
@@ -411,3 +411,3 @@ }; | ||
var n = d[i]; | ||
r = i * 7 /* Constants.RDIGITS */; | ||
r = i * 7 /* RDIGITS */; | ||
while (n % 10 === 0) { | ||
@@ -456,3 +456,3 @@ n /= 10 | 0; | ||
var len = this.data.length; | ||
return (len - 1) * 7 /* Constants.RDIGITS */ + digitCount(this.data[len - 1]); | ||
return (len - 1) * 7 /* RDIGITS */ + digitCount(this.data[len - 1]); | ||
}; | ||
@@ -654,3 +654,3 @@ /** | ||
var d = this.data[i]; | ||
var c = i === last ? digitCount(d) : 7 /* Constants.RDIGITS */; | ||
var c = i === last ? digitCount(d) : 7 /* RDIGITS */; | ||
// Loop over the decimal digits | ||
@@ -701,5 +701,5 @@ for (var j = 0; j < c; j++) { | ||
switch (this.flag) { | ||
case 1 /* DecimalFlag.NAN */: | ||
case 1 /* NAN */: | ||
return 'NaN'; | ||
case 2 /* DecimalFlag.INFINITY */: | ||
case 2 /* INFINITY */: | ||
default: | ||
@@ -711,5 +711,5 @@ return this.sign === 1 ? 'Infinity' : '-Infinity'; | ||
switch (this.flag) { | ||
case 1 /* DecimalFlag.NAN */: | ||
case 1 /* NAN */: | ||
return [{ type: 'nan', value: 'NaN' }]; | ||
case 2 /* DecimalFlag.INFINITY */: | ||
case 2 /* INFINITY */: | ||
default: | ||
@@ -754,11 +754,11 @@ var s = this.sign === 1 ? 'Infinity' : '-Infinity'; | ||
// Any operation involving a NAN returns a NAN | ||
if (uflag === 1 /* DecimalFlag.NAN */ || vflag === 1 /* DecimalFlag.NAN */) { | ||
if (uflag === 1 /* NAN */ || vflag === 1 /* NAN */) { | ||
return NAN; | ||
} | ||
var uinf = uflag === 2 /* DecimalFlag.INFINITY */; | ||
var vinf = vflag === 2 /* DecimalFlag.INFINITY */; | ||
var uinf = uflag === 2 /* INFINITY */; | ||
var vinf = vflag === 2 /* INFINITY */; | ||
var uzero = u.isZero(); | ||
var vzero = v.isZero(); | ||
switch (op) { | ||
case 0 /* Op.ADDITION */: | ||
case 0 /* ADDITION */: | ||
if (uinf && vinf) { | ||
@@ -771,3 +771,3 @@ return u.sign === v.sign ? (u.sign === 1 ? POSITIVE_INFINITY : NEGATIVE_INFINITY) : NAN; | ||
break; | ||
case 1 /* Op.SUBTRACTION */: | ||
case 1 /* SUBTRACTION */: | ||
if (uinf && vinf) { | ||
@@ -786,3 +786,3 @@ return u.sign === v.sign ? NAN : u.sign === 1 ? POSITIVE_INFINITY : NEGATIVE_INFINITY; | ||
break; | ||
case 2 /* Op.MULTIPLICATION */: | ||
case 2 /* MULTIPLICATION */: | ||
if (uinf) { | ||
@@ -795,3 +795,3 @@ return vzero ? NAN : u.sign === v.sign ? POSITIVE_INFINITY : NEGATIVE_INFINITY; | ||
break; | ||
case 3 /* Op.DIVISION */: | ||
case 3 /* DIVISION */: | ||
if (uinf && vinf) { | ||
@@ -816,3 +816,3 @@ return NAN; | ||
break; | ||
case 4 /* Op.MOD */: | ||
case 4 /* MOD */: | ||
if (uinf || vzero) { | ||
@@ -847,4 +847,4 @@ return NAN; | ||
// Compute the shift in terms of our radix. | ||
var q = (shift / 7 /* Constants.RDIGITS */) | 0; | ||
var r = shift - q * 7 /* Constants.RDIGITS */; | ||
var q = (shift / 7 /* RDIGITS */) | 0; | ||
var r = shift - q * 7 /* RDIGITS */; | ||
// Expand w to hold shifted result and zero all elements. | ||
@@ -863,3 +863,3 @@ var n = size(prec + shift); | ||
var powlo = POWERS10[r]; | ||
var powhi = POWERS10[7 /* Constants.RDIGITS */ - r]; | ||
var powhi = POWERS10[7 /* RDIGITS */ - r]; | ||
var hi = 0; | ||
@@ -912,3 +912,3 @@ var lo = 0; | ||
var div = new DivMod(); | ||
var _d = div.word(shift, 7 /* Constants.RDIGITS */), q = _d[0], r = _d[1]; | ||
var _d = div.word(shift, 7 /* RDIGITS */), q = _d[0], r = _d[1]; | ||
var data = w.data.slice(); | ||
@@ -921,3 +921,3 @@ w.data.fill(0); | ||
// q is always non-zero here, else there would be no shift | ||
_a = div.pow10(data[q - 1], 7 /* Constants.RDIGITS */ - 1), rnd = _a[0], rest = _a[1]; | ||
_a = div.pow10(data[q - 1], 7 /* RDIGITS */ - 1), rnd = _a[0], rest = _a[1]; | ||
if (rest === 0) { | ||
@@ -932,3 +932,3 @@ rest = allzero(data, q - 1) === 0 ? 1 : 0; | ||
var hiprev = 0; | ||
var ph = POWERS10[7 /* Constants.RDIGITS */ - r]; | ||
var ph = POWERS10[7 /* RDIGITS */ - r]; | ||
// q is always < data.length here; otherwise r == 0 | ||
@@ -998,3 +998,3 @@ _b = div.pow10(data[q], r), hiprev = _b[0], rest = _b[1]; | ||
s = d[i] + k; | ||
k = s === 10000000 /* Constants.RADIX */ ? 1 : 0; | ||
k = s === 10000000 /* RADIX */ ? 1 : 0; | ||
d[i] = k ? 0 : s; | ||
@@ -1094,7 +1094,7 @@ } | ||
if (isNaN(arg)) { | ||
this.flag = 1 /* DecimalFlag.NAN */; | ||
this.flag = 1 /* NAN */; | ||
return; | ||
} | ||
if (!isFinite(arg)) { | ||
this.flag = 2 /* DecimalFlag.INFINITY */; | ||
this.flag = 2 /* INFINITY */; | ||
this.sign = arg === Infinity ? 1 : -1; | ||
@@ -1121,7 +1121,7 @@ return; | ||
if (NAN_VALUES.has(str)) { | ||
this.flag = 1 /* DecimalFlag.NAN */; | ||
this.flag = 1 /* NAN */; | ||
return; | ||
} | ||
if (POS_INFINITY.has(str)) { | ||
this.flag = 2 /* DecimalFlag.INFINITY */; | ||
this.flag = 2 /* INFINITY */; | ||
this.sign = 1; | ||
@@ -1131,3 +1131,3 @@ return; | ||
if (NEG_INFINITY.has(str)) { | ||
this.flag = 2 /* DecimalFlag.INFINITY */; | ||
this.flag = 2 /* INFINITY */; | ||
this.sign = -1; | ||
@@ -1156,5 +1156,5 @@ return; | ||
switch (code) { | ||
case 69 /* Chars.ELOWER */: | ||
case 101 /* Chars.EUPPER */: | ||
if (flags & 4 /* ParseFlags.EXP */) { | ||
case 69 /* ELOWER */: | ||
case 101 /* EUPPER */: | ||
if (flags & 4 /* EXP */) { | ||
return "Extra exponent character at ".concat(i); | ||
@@ -1170,4 +1170,4 @@ } | ||
// Indicate we have an exponent, and clear the sign flag. | ||
flags |= 4 /* ParseFlags.EXP */; | ||
flags &= ~1 /* ParseFlags.SIGN */; | ||
flags |= 4 /* EXP */; | ||
flags &= ~1 /* SIGN */; | ||
// Copy the parsed number to the exponent and reset the digit count. | ||
@@ -1180,34 +1180,34 @@ dig = 0; | ||
break; | ||
case 45 /* Chars.MINUS */: | ||
case 43 /* Chars.PLUS */: | ||
case 45 /* MINUS */: | ||
case 43 /* PLUS */: | ||
if (dig === 0) { | ||
return 'Found a bare sign symbol'; | ||
} | ||
if (flags & 1 /* ParseFlags.SIGN */) { | ||
if (flags & 1 /* SIGN */) { | ||
return "Duplicate sign character at ".concat(i); | ||
} | ||
sign = code === 45 /* Chars.MINUS */ ? -1 : 1; | ||
flags |= 1 /* ParseFlags.SIGN */; | ||
sign = code === 45 /* MINUS */ ? -1 : 1; | ||
flags |= 1 /* SIGN */; | ||
break; | ||
case 46 /* Chars.DOT */: | ||
if (flags & 2 /* ParseFlags.POINT */) { | ||
case 46 /* DOT */: | ||
if (flags & 2 /* POINT */) { | ||
return "Extra radix point seen at ".concat(i); | ||
} | ||
flags |= 2 /* ParseFlags.POINT */; | ||
flags |= 2 /* POINT */; | ||
exp -= dig; | ||
break; | ||
case 48 /* Chars.DIGIT0 */: | ||
case 49 /* Chars.DIGIT1 */: | ||
case 50 /* Chars.DIGIT2 */: | ||
case 51 /* Chars.DIGIT3 */: | ||
case 52 /* Chars.DIGIT4 */: | ||
case 53 /* Chars.DIGIT5 */: | ||
case 54 /* Chars.DIGIT6 */: | ||
case 55 /* Chars.DIGIT7 */: | ||
case 56 /* Chars.DIGIT8 */: | ||
case 57 /* Chars.DIGIT9 */: | ||
n += (code - 48 /* Chars.DIGIT0 */) * POWERS10[z]; | ||
case 48 /* DIGIT0 */: | ||
case 49 /* DIGIT1 */: | ||
case 50 /* DIGIT2 */: | ||
case 51 /* DIGIT3 */: | ||
case 52 /* DIGIT4 */: | ||
case 53 /* DIGIT5 */: | ||
case 54 /* DIGIT6 */: | ||
case 55 /* DIGIT7 */: | ||
case 56 /* DIGIT8 */: | ||
case 57 /* DIGIT9 */: | ||
n += (code - 48 /* DIGIT0 */) * POWERS10[z]; | ||
z++; | ||
dig++; | ||
if (z === 7 /* Constants.RDIGITS */) { | ||
if (z === 7 /* RDIGITS */) { | ||
data.push(n); | ||
@@ -1214,0 +1214,0 @@ n = 0; |
@@ -19,5 +19,5 @@ import { POWERS10 } from './types'; | ||
var z = u[j] + vj + k; | ||
w[j] = z % 10000000 /* Constants.RADIX */; | ||
w[j] = z % 10000000 /* RADIX */; | ||
// .. k is being set to 1 or 0, to carry | ||
k = (z / 10000000 /* Constants.RADIX */) | 0; | ||
k = (z / 10000000 /* RADIX */) | 0; | ||
// A3. Loop on j | ||
@@ -46,3 +46,3 @@ j++; | ||
var z = u[j] - v[j] - k; | ||
w[j] = z < 0 ? z + 10000000 /* Constants.RADIX */ : z; | ||
w[j] = z < 0 ? z + 10000000 /* RADIX */ : z; | ||
// k is set to 1 or 0, indicating a borrow | ||
@@ -56,3 +56,3 @@ k = z < 0 ? 1 : 0; | ||
var z = u[j] - k; | ||
w[j] = z < 0 ? z + 10000000 /* Constants.RADIX */ : z; | ||
w[j] = z < 0 ? z + 10000000 /* RADIX */ : z; | ||
k = z < 0 ? 1 : 0; | ||
@@ -89,4 +89,4 @@ j++; | ||
var p = k + w[i + j] + u[i] * v[j]; | ||
k = (p / 10000000 /* Constants.RADIX */) | 0; | ||
w[i + j] = p - k * 10000000 /* Constants.RADIX */; | ||
k = (p / 10000000 /* RADIX */) | 0; | ||
w[i + j] = p - k * 10000000 /* RADIX */; | ||
// M5. Loop on i | ||
@@ -111,4 +111,4 @@ i++; | ||
var p = k + u[i] * v; | ||
k = (p / 10000000 /* Constants.RADIX */) | 0; | ||
w[i] = p - k * 10000000 /* Constants.RADIX */; | ||
k = (p / 10000000 /* RADIX */) | 0; | ||
w[i] = p - k * 10000000 /* RADIX */; | ||
} | ||
@@ -143,3 +143,3 @@ if (k > 0) { | ||
// D1. Normalize | ||
var d = (10000000 /* Constants.RADIX */ / (v[n - 1] + 1)) | 0; | ||
var d = (10000000 /* RADIX */ / (v[n - 1] + 1)) | 0; | ||
if (d !== 1) { | ||
@@ -156,3 +156,3 @@ multiplyword(u, uc, nplusm, d); | ||
// D3. Calculate q̂ and r̂. | ||
p = u[j + n - 1] + u[j + n] * 10000000 /* Constants.RADIX */; | ||
p = u[j + n - 1] + u[j + n] * 10000000 /* RADIX */; | ||
var qhat = (p / v[n - 1]) | 0; | ||
@@ -162,6 +162,6 @@ var rhat = p - qhat * v[n - 1]; | ||
// D3. Test if q̂ = radix ... | ||
if (qhat < 10000000 /* Constants.RADIX */) { | ||
if (qhat < 10000000 /* RADIX */) { | ||
var z = qhat * v[n - 2]; | ||
hi = (z / 10000000 /* Constants.RADIX */) | 0; | ||
lo = z - hi * 10000000 /* Constants.RADIX */; | ||
hi = (z / 10000000 /* RADIX */) | 0; | ||
lo = z - hi * 10000000 /* RADIX */; | ||
if (hi <= rhat) { | ||
@@ -176,3 +176,3 @@ if (hi !== rhat || lo <= u[j + n - 2]) { | ||
rhat += v[n - 1]; | ||
if (rhat >= 10000000 /* Constants.RADIX */) { | ||
if (rhat >= 10000000 /* RADIX */) { | ||
break; | ||
@@ -187,8 +187,8 @@ } | ||
p = qhat * v[i] + k; | ||
hi = (p / 10000000 /* Constants.RADIX */) | 0; | ||
lo = p - hi * 10000000 /* Constants.RADIX */; | ||
hi = (p / 10000000 /* RADIX */) | 0; | ||
lo = p - hi * 10000000 /* RADIX */; | ||
// Subtract and determine carry. | ||
var x = u[i + j] - lo; | ||
k = x < 0 ? 1 : 0; | ||
u[i + j] = k ? x + 10000000 /* Constants.RADIX */ : x; | ||
u[i + j] = k ? x + 10000000 /* RADIX */ : x; | ||
k += hi; | ||
@@ -212,3 +212,3 @@ } | ||
for (var i = n - 1; i >= 0; i--) { | ||
p = u[i] + k * 10000000 /* Constants.RADIX */; | ||
p = u[i] + k * 10000000 /* RADIX */; | ||
r[i] = (p / d) | 0; | ||
@@ -230,3 +230,3 @@ k = p - r[i] * d; | ||
for (var i = n - 1; i >= 0; i--) { | ||
var p = u[i] + r * 10000000 /* Constants.RADIX */; | ||
var p = u[i] + r * 10000000 /* RADIX */; | ||
q[i] = (p / v) | 0; | ||
@@ -246,4 +246,4 @@ r = p - q[i] * v; | ||
s = u[i + j] + (v[i] + k); | ||
k = s >= 10000000 /* Constants.RADIX */ ? 1 : 0; | ||
u[i + j] = k ? s - 10000000 /* Constants.RADIX */ : s; | ||
k = s >= 10000000 /* RADIX */ ? 1 : 0; | ||
u[i + j] = k ? s - 10000000 /* RADIX */ : s; | ||
i++; | ||
@@ -253,4 +253,4 @@ } | ||
s = u[i + j] + k; | ||
k = s === 10000000 /* Constants.RADIX */ ? 1 : /* istanbul ignore next */ 0; | ||
u[i + j] = k === 1 ? s - 10000000 /* Constants.RADIX */ : /* istanbul ignore next */ s; | ||
k = s === 10000000 /* RADIX */ ? 1 : /* istanbul ignore next */ 0; | ||
u[i + j] = k === 1 ? s - 10000000 /* RADIX */ : /* istanbul ignore next */ s; | ||
i++; | ||
@@ -257,0 +257,0 @@ } |
@@ -9,3 +9,3 @@ import { DivMod } from './math'; | ||
var m = b.length; | ||
var _c = div.word(shift, 7 /* Constants.RDIGITS */), q = _c[0], r = _c[1]; | ||
var _c = div.word(shift, 7 /* RDIGITS */), q = _c[0], r = _c[1]; | ||
if (r === 0) { | ||
@@ -27,3 +27,3 @@ while (--m >= 0) { | ||
--n; | ||
_a = div.pow10(b[m--], 7 /* Constants.RDIGITS */ - r), hi = _a[0], loprev = _a[1]; | ||
_a = div.pow10(b[m--], 7 /* RDIGITS */ - r), hi = _a[0], loprev = _a[1]; | ||
if (hi !== 0) { | ||
@@ -38,3 +38,3 @@ c = cmp(a[n], hi); | ||
for (; m >= 0; m--, n--) { | ||
_b = div.pow10(b[m], 7 /* Constants.RDIGITS */ - r), hi = _b[0], lo = _b[1]; | ||
_b = div.pow10(b[m], 7 /* RDIGITS */ - r), hi = _b[0], lo = _b[1]; | ||
x = ph * loprev + hi; | ||
@@ -69,13 +69,13 @@ c = cmp(a[n], x); | ||
export var digitCount = function (w) { | ||
if (w < 10000 /* Constants.P4 */) { | ||
if (w < 100 /* Constants.P2 */) { | ||
return w < 10 /* Constants.P1 */ ? 1 : 2; | ||
if (w < 10000 /* P4 */) { | ||
if (w < 100 /* P2 */) { | ||
return w < 10 /* P1 */ ? 1 : 2; | ||
} | ||
return w < 1000 /* Constants.P3 */ ? 3 : 4; | ||
return w < 1000 /* P3 */ ? 3 : 4; | ||
} | ||
if (w < 1000000 /* Constants.P6 */) { | ||
return w < 100000 /* Constants.P5 */ ? 5 : 6; | ||
if (w < 1000000 /* P6 */) { | ||
return w < 100000 /* P5 */ ? 5 : 6; | ||
} | ||
return w < 10000000 /* Constants.P7 */ ? 7 : 8; | ||
return w < 10000000 /* P7 */ ? 7 : 8; | ||
}; | ||
//# sourceMappingURL=operations.js.map |
export var POWERS10 = [ | ||
1 /* Constants.P0 */, | ||
10 /* Constants.P1 */, | ||
100 /* Constants.P2 */, | ||
1000 /* Constants.P3 */, | ||
10000 /* Constants.P4 */, | ||
100000 /* Constants.P5 */, | ||
1000000 /* Constants.P6 */, | ||
10000000 /* Constants.P7 */, | ||
100000000 /* Constants.P8 */, | ||
1 /* P0 */, | ||
10 /* P1 */, | ||
100 /* P2 */, | ||
1000 /* P3 */, | ||
10000 /* P4 */, | ||
100000 /* P5 */, | ||
1000000 /* P6 */, | ||
10000000 /* P7 */, | ||
100000000 /* P8 */, | ||
]; | ||
//# sourceMappingURL=types.js.map |
@@ -56,4 +56,4 @@ "use strict"; | ||
var size = function (n) { | ||
var q = (n / 7 /* Constants.RDIGITS */) | 0; | ||
var r = n - q * 7 /* Constants.RDIGITS */; | ||
var q = (n / 7 /* RDIGITS */) | 0; | ||
var r = n - q * 7 /* RDIGITS */; | ||
return r === 0 ? q : q + 1; | ||
@@ -71,3 +71,3 @@ }; | ||
this._exp = 0; | ||
this.flag = 0 /* DecimalFlag.NONE */; | ||
this.flag = 0 /* NONE */; | ||
if (typeof num === 'string' || typeof num === 'number') { | ||
@@ -93,3 +93,3 @@ this.parse(num); | ||
Decimal.prototype.isNaN = function () { | ||
return this.flag === 1 /* DecimalFlag.NAN */; | ||
return this.flag === 1 /* NAN */; | ||
}; | ||
@@ -106,3 +106,3 @@ /** | ||
Decimal.prototype.isInfinity = function () { | ||
return this.flag === 2 /* DecimalFlag.INFINITY */; | ||
return this.flag === 2 /* INFINITY */; | ||
}; | ||
@@ -126,3 +126,3 @@ /** | ||
// NAN is never equal to itself or any other value | ||
if (u.flag === 1 /* DecimalFlag.NAN */ || v.flag === 1 /* DecimalFlag.NAN */) { | ||
if (u.flag === 1 /* NAN */ || v.flag === 1 /* NAN */) { | ||
return -1; | ||
@@ -137,3 +137,3 @@ } | ||
// Positive infinity after all other values | ||
return u.flag === 2 /* DecimalFlag.INFINITY */ ? (u.sign === -1 ? -1 : 1) : v.sign === -1 ? 1 : -1; | ||
return u.flag === 2 /* INFINITY */ ? (u.sign === -1 ? -1 : 1) : v.sign === -1 ? 1 : -1; | ||
} | ||
@@ -238,3 +238,3 @@ u = u.stripTrailingZeros(); | ||
v = (0, exports.coerceDecimal)(v); | ||
var r = this.handleFlags(0 /* Op.ADDITION */, v); | ||
var r = this.handleFlags(0 /* ADDITION */, v); | ||
if (r === undefined) { | ||
@@ -253,3 +253,3 @@ if (this.isZero()) { | ||
v = (0, exports.coerceDecimal)(v); | ||
var r = this.handleFlags(1 /* Op.SUBTRACTION */, v); | ||
var r = this.handleFlags(1 /* SUBTRACTION */, v); | ||
if (r === undefined) { | ||
@@ -269,3 +269,3 @@ if (this.isZero()) { | ||
v = (0, exports.coerceDecimal)(v); | ||
var r = this.handleFlags(2 /* Op.MULTIPLICATION */, v); | ||
var r = this.handleFlags(2 /* MULTIPLICATION */, v); | ||
if (r !== undefined) { | ||
@@ -306,3 +306,3 @@ return r; | ||
v = (0, exports.coerceDecimal)(v); | ||
var r = this.handleFlags(3 /* Op.DIVISION */, v); | ||
var r = this.handleFlags(3 /* DIVISION */, v); | ||
if (r !== undefined) { | ||
@@ -356,5 +356,5 @@ return r; | ||
v = (0, exports.coerceDecimal)(v); | ||
var rq = this.handleFlags(3 /* Op.DIVISION */, v); | ||
var rq = this.handleFlags(3 /* DIVISION */, v); | ||
if (rq !== undefined) { | ||
var rm = this.handleFlags(4 /* Op.MOD */, v); | ||
var rm = this.handleFlags(4 /* MOD */, v); | ||
return [rq, rm]; | ||
@@ -398,3 +398,3 @@ } | ||
v = (0, exports.coerceDecimal)(v); | ||
var r = this.handleFlags(4 /* Op.MOD */, v); | ||
var r = this.handleFlags(4 /* MOD */, v); | ||
return r === undefined ? this.divmod(v)[1] : r; | ||
@@ -415,3 +415,3 @@ }; | ||
var n = d[i]; | ||
r = i * 7 /* Constants.RDIGITS */; | ||
r = i * 7 /* RDIGITS */; | ||
while (n % 10 === 0) { | ||
@@ -460,3 +460,3 @@ n /= 10 | 0; | ||
var len = this.data.length; | ||
return (len - 1) * 7 /* Constants.RDIGITS */ + (0, operations_1.digitCount)(this.data[len - 1]); | ||
return (len - 1) * 7 /* RDIGITS */ + (0, operations_1.digitCount)(this.data[len - 1]); | ||
}; | ||
@@ -658,3 +658,3 @@ /** | ||
var d = this.data[i]; | ||
var c = i === last ? (0, operations_1.digitCount)(d) : 7 /* Constants.RDIGITS */; | ||
var c = i === last ? (0, operations_1.digitCount)(d) : 7 /* RDIGITS */; | ||
// Loop over the decimal digits | ||
@@ -705,5 +705,5 @@ for (var j = 0; j < c; j++) { | ||
switch (this.flag) { | ||
case 1 /* DecimalFlag.NAN */: | ||
case 1 /* NAN */: | ||
return 'NaN'; | ||
case 2 /* DecimalFlag.INFINITY */: | ||
case 2 /* INFINITY */: | ||
default: | ||
@@ -715,5 +715,5 @@ return this.sign === 1 ? 'Infinity' : '-Infinity'; | ||
switch (this.flag) { | ||
case 1 /* DecimalFlag.NAN */: | ||
case 1 /* NAN */: | ||
return [{ type: 'nan', value: 'NaN' }]; | ||
case 2 /* DecimalFlag.INFINITY */: | ||
case 2 /* INFINITY */: | ||
default: | ||
@@ -758,11 +758,11 @@ var s = this.sign === 1 ? 'Infinity' : '-Infinity'; | ||
// Any operation involving a NAN returns a NAN | ||
if (uflag === 1 /* DecimalFlag.NAN */ || vflag === 1 /* DecimalFlag.NAN */) { | ||
if (uflag === 1 /* NAN */ || vflag === 1 /* NAN */) { | ||
return NAN; | ||
} | ||
var uinf = uflag === 2 /* DecimalFlag.INFINITY */; | ||
var vinf = vflag === 2 /* DecimalFlag.INFINITY */; | ||
var uinf = uflag === 2 /* INFINITY */; | ||
var vinf = vflag === 2 /* INFINITY */; | ||
var uzero = u.isZero(); | ||
var vzero = v.isZero(); | ||
switch (op) { | ||
case 0 /* Op.ADDITION */: | ||
case 0 /* ADDITION */: | ||
if (uinf && vinf) { | ||
@@ -775,3 +775,3 @@ return u.sign === v.sign ? (u.sign === 1 ? POSITIVE_INFINITY : NEGATIVE_INFINITY) : NAN; | ||
break; | ||
case 1 /* Op.SUBTRACTION */: | ||
case 1 /* SUBTRACTION */: | ||
if (uinf && vinf) { | ||
@@ -790,3 +790,3 @@ return u.sign === v.sign ? NAN : u.sign === 1 ? POSITIVE_INFINITY : NEGATIVE_INFINITY; | ||
break; | ||
case 2 /* Op.MULTIPLICATION */: | ||
case 2 /* MULTIPLICATION */: | ||
if (uinf) { | ||
@@ -799,3 +799,3 @@ return vzero ? NAN : u.sign === v.sign ? POSITIVE_INFINITY : NEGATIVE_INFINITY; | ||
break; | ||
case 3 /* Op.DIVISION */: | ||
case 3 /* DIVISION */: | ||
if (uinf && vinf) { | ||
@@ -820,3 +820,3 @@ return NAN; | ||
break; | ||
case 4 /* Op.MOD */: | ||
case 4 /* MOD */: | ||
if (uinf || vzero) { | ||
@@ -851,4 +851,4 @@ return NAN; | ||
// Compute the shift in terms of our radix. | ||
var q = (shift / 7 /* Constants.RDIGITS */) | 0; | ||
var r = shift - q * 7 /* Constants.RDIGITS */; | ||
var q = (shift / 7 /* RDIGITS */) | 0; | ||
var r = shift - q * 7 /* RDIGITS */; | ||
// Expand w to hold shifted result and zero all elements. | ||
@@ -867,3 +867,3 @@ var n = size(prec + shift); | ||
var powlo = types_1.POWERS10[r]; | ||
var powhi = types_1.POWERS10[7 /* Constants.RDIGITS */ - r]; | ||
var powhi = types_1.POWERS10[7 /* RDIGITS */ - r]; | ||
var hi = 0; | ||
@@ -916,3 +916,3 @@ var lo = 0; | ||
var div = new math_1.DivMod(); | ||
var _d = div.word(shift, 7 /* Constants.RDIGITS */), q = _d[0], r = _d[1]; | ||
var _d = div.word(shift, 7 /* RDIGITS */), q = _d[0], r = _d[1]; | ||
var data = w.data.slice(); | ||
@@ -925,3 +925,3 @@ w.data.fill(0); | ||
// q is always non-zero here, else there would be no shift | ||
_a = div.pow10(data[q - 1], 7 /* Constants.RDIGITS */ - 1), rnd = _a[0], rest = _a[1]; | ||
_a = div.pow10(data[q - 1], 7 /* RDIGITS */ - 1), rnd = _a[0], rest = _a[1]; | ||
if (rest === 0) { | ||
@@ -936,3 +936,3 @@ rest = (0, operations_1.allzero)(data, q - 1) === 0 ? 1 : 0; | ||
var hiprev = 0; | ||
var ph = types_1.POWERS10[7 /* Constants.RDIGITS */ - r]; | ||
var ph = types_1.POWERS10[7 /* RDIGITS */ - r]; | ||
// q is always < data.length here; otherwise r == 0 | ||
@@ -1002,3 +1002,3 @@ _b = div.pow10(data[q], r), hiprev = _b[0], rest = _b[1]; | ||
s = d[i] + k; | ||
k = s === 10000000 /* Constants.RADIX */ ? 1 : 0; | ||
k = s === 10000000 /* RADIX */ ? 1 : 0; | ||
d[i] = k ? 0 : s; | ||
@@ -1098,7 +1098,7 @@ } | ||
if (isNaN(arg)) { | ||
this.flag = 1 /* DecimalFlag.NAN */; | ||
this.flag = 1 /* NAN */; | ||
return; | ||
} | ||
if (!isFinite(arg)) { | ||
this.flag = 2 /* DecimalFlag.INFINITY */; | ||
this.flag = 2 /* INFINITY */; | ||
this.sign = arg === Infinity ? 1 : -1; | ||
@@ -1125,7 +1125,7 @@ return; | ||
if (NAN_VALUES.has(str)) { | ||
this.flag = 1 /* DecimalFlag.NAN */; | ||
this.flag = 1 /* NAN */; | ||
return; | ||
} | ||
if (POS_INFINITY.has(str)) { | ||
this.flag = 2 /* DecimalFlag.INFINITY */; | ||
this.flag = 2 /* INFINITY */; | ||
this.sign = 1; | ||
@@ -1135,3 +1135,3 @@ return; | ||
if (NEG_INFINITY.has(str)) { | ||
this.flag = 2 /* DecimalFlag.INFINITY */; | ||
this.flag = 2 /* INFINITY */; | ||
this.sign = -1; | ||
@@ -1160,5 +1160,5 @@ return; | ||
switch (code) { | ||
case 69 /* Chars.ELOWER */: | ||
case 101 /* Chars.EUPPER */: | ||
if (flags & 4 /* ParseFlags.EXP */) { | ||
case 69 /* ELOWER */: | ||
case 101 /* EUPPER */: | ||
if (flags & 4 /* EXP */) { | ||
return "Extra exponent character at ".concat(i); | ||
@@ -1174,4 +1174,4 @@ } | ||
// Indicate we have an exponent, and clear the sign flag. | ||
flags |= 4 /* ParseFlags.EXP */; | ||
flags &= ~1 /* ParseFlags.SIGN */; | ||
flags |= 4 /* EXP */; | ||
flags &= ~1 /* SIGN */; | ||
// Copy the parsed number to the exponent and reset the digit count. | ||
@@ -1184,34 +1184,34 @@ dig = 0; | ||
break; | ||
case 45 /* Chars.MINUS */: | ||
case 43 /* Chars.PLUS */: | ||
case 45 /* MINUS */: | ||
case 43 /* PLUS */: | ||
if (dig === 0) { | ||
return 'Found a bare sign symbol'; | ||
} | ||
if (flags & 1 /* ParseFlags.SIGN */) { | ||
if (flags & 1 /* SIGN */) { | ||
return "Duplicate sign character at ".concat(i); | ||
} | ||
sign = code === 45 /* Chars.MINUS */ ? -1 : 1; | ||
flags |= 1 /* ParseFlags.SIGN */; | ||
sign = code === 45 /* MINUS */ ? -1 : 1; | ||
flags |= 1 /* SIGN */; | ||
break; | ||
case 46 /* Chars.DOT */: | ||
if (flags & 2 /* ParseFlags.POINT */) { | ||
case 46 /* DOT */: | ||
if (flags & 2 /* POINT */) { | ||
return "Extra radix point seen at ".concat(i); | ||
} | ||
flags |= 2 /* ParseFlags.POINT */; | ||
flags |= 2 /* POINT */; | ||
exp -= dig; | ||
break; | ||
case 48 /* Chars.DIGIT0 */: | ||
case 49 /* Chars.DIGIT1 */: | ||
case 50 /* Chars.DIGIT2 */: | ||
case 51 /* Chars.DIGIT3 */: | ||
case 52 /* Chars.DIGIT4 */: | ||
case 53 /* Chars.DIGIT5 */: | ||
case 54 /* Chars.DIGIT6 */: | ||
case 55 /* Chars.DIGIT7 */: | ||
case 56 /* Chars.DIGIT8 */: | ||
case 57 /* Chars.DIGIT9 */: | ||
n += (code - 48 /* Chars.DIGIT0 */) * types_1.POWERS10[z]; | ||
case 48 /* DIGIT0 */: | ||
case 49 /* DIGIT1 */: | ||
case 50 /* DIGIT2 */: | ||
case 51 /* DIGIT3 */: | ||
case 52 /* DIGIT4 */: | ||
case 53 /* DIGIT5 */: | ||
case 54 /* DIGIT6 */: | ||
case 55 /* DIGIT7 */: | ||
case 56 /* DIGIT8 */: | ||
case 57 /* DIGIT9 */: | ||
n += (code - 48 /* DIGIT0 */) * types_1.POWERS10[z]; | ||
z++; | ||
dig++; | ||
if (z === 7 /* Constants.RDIGITS */) { | ||
if (z === 7 /* RDIGITS */) { | ||
data.push(n); | ||
@@ -1218,0 +1218,0 @@ n = 0; |
@@ -22,5 +22,5 @@ "use strict"; | ||
var z = u[j] + vj + k; | ||
w[j] = z % 10000000 /* Constants.RADIX */; | ||
w[j] = z % 10000000 /* RADIX */; | ||
// .. k is being set to 1 or 0, to carry | ||
k = (z / 10000000 /* Constants.RADIX */) | 0; | ||
k = (z / 10000000 /* RADIX */) | 0; | ||
// A3. Loop on j | ||
@@ -50,3 +50,3 @@ j++; | ||
var z = u[j] - v[j] - k; | ||
w[j] = z < 0 ? z + 10000000 /* Constants.RADIX */ : z; | ||
w[j] = z < 0 ? z + 10000000 /* RADIX */ : z; | ||
// k is set to 1 or 0, indicating a borrow | ||
@@ -60,3 +60,3 @@ k = z < 0 ? 1 : 0; | ||
var z = u[j] - k; | ||
w[j] = z < 0 ? z + 10000000 /* Constants.RADIX */ : z; | ||
w[j] = z < 0 ? z + 10000000 /* RADIX */ : z; | ||
k = z < 0 ? 1 : 0; | ||
@@ -94,4 +94,4 @@ j++; | ||
var p = k + w[i + j] + u[i] * v[j]; | ||
k = (p / 10000000 /* Constants.RADIX */) | 0; | ||
w[i + j] = p - k * 10000000 /* Constants.RADIX */; | ||
k = (p / 10000000 /* RADIX */) | 0; | ||
w[i + j] = p - k * 10000000 /* RADIX */; | ||
// M5. Loop on i | ||
@@ -117,4 +117,4 @@ i++; | ||
var p = k + u[i] * v; | ||
k = (p / 10000000 /* Constants.RADIX */) | 0; | ||
w[i] = p - k * 10000000 /* Constants.RADIX */; | ||
k = (p / 10000000 /* RADIX */) | 0; | ||
w[i] = p - k * 10000000 /* RADIX */; | ||
} | ||
@@ -150,3 +150,3 @@ if (k > 0) { | ||
// D1. Normalize | ||
var d = (10000000 /* Constants.RADIX */ / (v[n - 1] + 1)) | 0; | ||
var d = (10000000 /* RADIX */ / (v[n - 1] + 1)) | 0; | ||
if (d !== 1) { | ||
@@ -163,3 +163,3 @@ (0, exports.multiplyword)(u, uc, nplusm, d); | ||
// D3. Calculate q̂ and r̂. | ||
p = u[j + n - 1] + u[j + n] * 10000000 /* Constants.RADIX */; | ||
p = u[j + n - 1] + u[j + n] * 10000000 /* RADIX */; | ||
var qhat = (p / v[n - 1]) | 0; | ||
@@ -169,6 +169,6 @@ var rhat = p - qhat * v[n - 1]; | ||
// D3. Test if q̂ = radix ... | ||
if (qhat < 10000000 /* Constants.RADIX */) { | ||
if (qhat < 10000000 /* RADIX */) { | ||
var z = qhat * v[n - 2]; | ||
hi = (z / 10000000 /* Constants.RADIX */) | 0; | ||
lo = z - hi * 10000000 /* Constants.RADIX */; | ||
hi = (z / 10000000 /* RADIX */) | 0; | ||
lo = z - hi * 10000000 /* RADIX */; | ||
if (hi <= rhat) { | ||
@@ -183,3 +183,3 @@ if (hi !== rhat || lo <= u[j + n - 2]) { | ||
rhat += v[n - 1]; | ||
if (rhat >= 10000000 /* Constants.RADIX */) { | ||
if (rhat >= 10000000 /* RADIX */) { | ||
break; | ||
@@ -194,8 +194,8 @@ } | ||
p = qhat * v[i] + k; | ||
hi = (p / 10000000 /* Constants.RADIX */) | 0; | ||
lo = p - hi * 10000000 /* Constants.RADIX */; | ||
hi = (p / 10000000 /* RADIX */) | 0; | ||
lo = p - hi * 10000000 /* RADIX */; | ||
// Subtract and determine carry. | ||
var x = u[i + j] - lo; | ||
k = x < 0 ? 1 : 0; | ||
u[i + j] = k ? x + 10000000 /* Constants.RADIX */ : x; | ||
u[i + j] = k ? x + 10000000 /* RADIX */ : x; | ||
k += hi; | ||
@@ -219,3 +219,3 @@ } | ||
for (var i = n - 1; i >= 0; i--) { | ||
p = u[i] + k * 10000000 /* Constants.RADIX */; | ||
p = u[i] + k * 10000000 /* RADIX */; | ||
r[i] = (p / d) | 0; | ||
@@ -238,3 +238,3 @@ k = p - r[i] * d; | ||
for (var i = n - 1; i >= 0; i--) { | ||
var p = u[i] + r * 10000000 /* Constants.RADIX */; | ||
var p = u[i] + r * 10000000 /* RADIX */; | ||
q[i] = (p / v) | 0; | ||
@@ -254,4 +254,4 @@ r = p - q[i] * v; | ||
s = u[i + j] + (v[i] + k); | ||
k = s >= 10000000 /* Constants.RADIX */ ? 1 : 0; | ||
u[i + j] = k ? s - 10000000 /* Constants.RADIX */ : s; | ||
k = s >= 10000000 /* RADIX */ ? 1 : 0; | ||
u[i + j] = k ? s - 10000000 /* RADIX */ : s; | ||
i++; | ||
@@ -261,4 +261,4 @@ } | ||
s = u[i + j] + k; | ||
k = s === 10000000 /* Constants.RADIX */ ? 1 : /* istanbul ignore next */ 0; | ||
u[i + j] = k === 1 ? s - 10000000 /* Constants.RADIX */ : /* istanbul ignore next */ s; | ||
k = s === 10000000 /* RADIX */ ? 1 : /* istanbul ignore next */ 0; | ||
u[i + j] = k === 1 ? s - 10000000 /* RADIX */ : /* istanbul ignore next */ s; | ||
i++; | ||
@@ -265,0 +265,0 @@ } |
@@ -12,3 +12,3 @@ "use strict"; | ||
var m = b.length; | ||
var _c = div.word(shift, 7 /* Constants.RDIGITS */), q = _c[0], r = _c[1]; | ||
var _c = div.word(shift, 7 /* RDIGITS */), q = _c[0], r = _c[1]; | ||
if (r === 0) { | ||
@@ -30,3 +30,3 @@ while (--m >= 0) { | ||
--n; | ||
_a = div.pow10(b[m--], 7 /* Constants.RDIGITS */ - r), hi = _a[0], loprev = _a[1]; | ||
_a = div.pow10(b[m--], 7 /* RDIGITS */ - r), hi = _a[0], loprev = _a[1]; | ||
if (hi !== 0) { | ||
@@ -41,3 +41,3 @@ c = cmp(a[n], hi); | ||
for (; m >= 0; m--, n--) { | ||
_b = div.pow10(b[m], 7 /* Constants.RDIGITS */ - r), hi = _b[0], lo = _b[1]; | ||
_b = div.pow10(b[m], 7 /* RDIGITS */ - r), hi = _b[0], lo = _b[1]; | ||
x = ph * loprev + hi; | ||
@@ -74,14 +74,14 @@ c = cmp(a[n], x); | ||
var digitCount = function (w) { | ||
if (w < 10000 /* Constants.P4 */) { | ||
if (w < 100 /* Constants.P2 */) { | ||
return w < 10 /* Constants.P1 */ ? 1 : 2; | ||
if (w < 10000 /* P4 */) { | ||
if (w < 100 /* P2 */) { | ||
return w < 10 /* P1 */ ? 1 : 2; | ||
} | ||
return w < 1000 /* Constants.P3 */ ? 3 : 4; | ||
return w < 1000 /* P3 */ ? 3 : 4; | ||
} | ||
if (w < 1000000 /* Constants.P6 */) { | ||
return w < 100000 /* Constants.P5 */ ? 5 : 6; | ||
if (w < 1000000 /* P6 */) { | ||
return w < 100000 /* P5 */ ? 5 : 6; | ||
} | ||
return w < 10000000 /* Constants.P7 */ ? 7 : 8; | ||
return w < 10000000 /* P7 */ ? 7 : 8; | ||
}; | ||
exports.digitCount = digitCount; | ||
//# sourceMappingURL=operations.js.map |
@@ -5,12 +5,12 @@ "use strict"; | ||
exports.POWERS10 = [ | ||
1 /* Constants.P0 */, | ||
10 /* Constants.P1 */, | ||
100 /* Constants.P2 */, | ||
1000 /* Constants.P3 */, | ||
10000 /* Constants.P4 */, | ||
100000 /* Constants.P5 */, | ||
1000000 /* Constants.P6 */, | ||
10000000 /* Constants.P7 */, | ||
100000000 /* Constants.P8 */, | ||
1 /* P0 */, | ||
10 /* P1 */, | ||
100 /* P2 */, | ||
1000 /* P3 */, | ||
10000 /* P4 */, | ||
100000 /* P5 */, | ||
1000000 /* P6 */, | ||
10000000 /* P7 */, | ||
100000000 /* P8 */, | ||
]; | ||
//# sourceMappingURL=types.js.map |
{ | ||
"name": "@phensley/decimal", | ||
"version": "1.6.0", | ||
"version": "1.6.1", | ||
"description": "Arbitrary precision decimal math", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
369434