{"version":3,"file":"static/chunks/7704-2f594f5653fd024d.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/@mui/icons-material/esm/CheckCircle.js","webpack://_N_E/../../node_modules/decimal.js/decimal.mjs"],"sourcesContent":["\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z\"\n}), 'CheckCircle');","/*!\r\n * decimal.js v10.5.0\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2025 Michael Mclaughlin \r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n // See https://github.com/MikeMcl/decimal.js/pull/217\r\n x = new Ctor(1).minus(x).div(x.plus(1)).sqrt().atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, -1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|bigint|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|bigint|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|bigint|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` (`n` is -1) and `min` (`n` is 1).\r\n */\r\nfunction maxOrMin(Ctor, args, n) {\r\n var k, y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n\r\n // NaN?\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n }\r\n\r\n k = x.cmp(y);\r\n\r\n if (k === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// ±Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // TODO BigInt str: no need to check for decimal point, exponential form or leading zeros.\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|bigint|Decimal} The y-coordinate.\r\n * x {number|string|bigint|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|bigint|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Infinity or NaN?\r\n if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n if (t === 'string') {\r\n if ((i = v.charCodeAt(0)) === 45) { // minus sign\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n if (i === 43) v = v.slice(1); // plus sign\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n if (t === 'bigint') {\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|bigint|Decimal} The argument of the logarithm.\r\n * y {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, -1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The base.\r\n * y {number|string|bigint|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n"],"names":["__webpack_exports__","Z","createSvgIcon","_jsx","d","inexact","quadrant","NUMERALS","LN10","PI","DEFAULTS","precision","rounding","modulo","toExpNeg","toExpPos","minE","maxE","crypto","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","tag","mathfloor","Math","floor","mathpow","pow","isBinary","isHex","isOctal","isDecimal","LN10_PRECISION","length","PI_PRECISION","P","toStringTag","digitsToString","i","k","ws","indexOfLastWord","str","w","LOG_BASE","getZeroString","checkInt32","min","max","Error","checkRoundingDigits","rm","repeating","di","r","rd","ceil","convertBase","baseIn","baseOut","j","arrL","arr","strL","indexOf","charAt","reverse","absoluteValue","abs","x","constructor","s","finalise","e","clampedTo","clamp","Ctor","NaN","gt","cmp","comparedTo","y","xdL","ydL","xd","yd","xs","ys","cosine","cos","pr","sd","len","isZero","tinyPow","toString","taylorSeries","times","cos2x","minus","plus","toLessThanHalfPi","neg","cubeRoot","cbrt","m","n","rep","t","t3","t3plusx","isFinite","toExponential","slice","divide","eq","decimalPlaces","dp","dividedBy","div","dividedToIntegerBy","divToInt","equals","greaterThan","greaterThanOrEqualTo","gte","hyperbolicCosine","cosh","one","cosh2_x","d8","hyperbolicSine","sinh","sqrt","sinh2_x","d5","d16","d20","hyperbolicTangent","tanh","inverseCosine","acos","isNeg","getPi","atan","inverseHyperbolicCosine","acosh","lte","ln","inverseHyperbolicSine","asinh","inverseHyperbolicTangent","atanh","wpr","xsd","inverseSine","asin","halfPi","inverseTangent","px","x2","isInteger","isInt","isNaN","isNegative","isPositive","isPos","lessThan","lt","lessThanOrEqualTo","logarithm","log","base","isBase10","inf","num","arg","naturalLogarithm","getLn10","sub","xe","xLTy","push","BASE","pop","shift","getBase10Exponent","mod","q","naturalExponential","exp","negated","add","carry","unshift","z","getPrecision","round","sine","sin","sin2_x","squareRoot","tangent","tan","mul","rL","toBinary","toStringBinary","toDecimalPlaces","toDP","finiteToString","toFixed","toFraction","maxD","d0","d1","d2","n0","n1","toHexadecimal","toHex","toNearest","toNumber","toOctal","toPower","yn","intPow","toPrecision","toSignificantDigits","toSD","truncated","trunc","valueOf","toJSON","multiplyInteger","temp","compare","a","b","aL","bL","subtract","logBase","more","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","sign","isTruncated","digits","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","args","denominator","guard","sum","c","c0","numerator","x1","String","parseDecimal","replace","search","substring","charCodeAt","isHyperbolic","u","pi","atan2","config","obj","p","v","useDefaults","defaults","ps","getRandomValues","randomBytes","hypot","arguments","isDecimalInstance","Decimal","log2","log10","random","Uint32Array","copy","Symbol","for","clone","test","parseOther","divisor","isFloat","toLowerCase","prototype","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","set","hasOwnProperty"],"sourceRoot":""}