{"version":3,"sources":["webpack:///./node_modules/decimal.js/decimal.js","webpack:///./src/components/home/header.vue?7416","webpack:///./src/mixins/login.js","webpack:///./src/assets/images/common/logo.jpg","webpack:///./src/mixins/cart.js","webpack:///./src/components/home/header.vue?7fc8","webpack:///src/components/home/header.vue","webpack:///./src/components/home/header.vue?36e3","webpack:///./src/components/home/header.vue","webpack:///./src/components/customer/customer-dialog.vue?5fd5","webpack:///./src/libs/util.js","webpack:///./src/components/customer/customer-dialog.vue?b31a","webpack:///src/components/customer/customer-dialog.vue","webpack:///./src/components/customer/customer-dialog.vue?c561","webpack:///./src/components/customer/customer-dialog.vue"],"names":["Decimal","inexact","quadrant","EXP_LIMIT","MAX_DIGITS","NUMERALS","LN10","PI","DEFAULTS","precision","rounding","modulo","toExpNeg","toExpPos","minE","maxE","crypto","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","mathfloor","Math","floor","mathpow","pow","isBinary","isHex","isOctal","isDecimal","BASE","LOG_BASE","LN10_PRECISION","length","PI_PRECISION","P","name","digitsToString","d","i","k","ws","indexOfLastWord","str","w","getZeroString","checkInt32","min","max","Error","checkRoundingDigits","rm","repeating","di","rd","ceil","convertBase","baseIn","baseOut","j","arrL","arr","strL","indexOf","charAt","reverse","absoluteValue","abs","x","this","constructor","s","finalise","e","comparedTo","cmp","y","xd","yd","xs","ys","NaN","xdL","ydL","cosine","cos","pr","Ctor","sd","len","tinyPow","toString","taylorSeries","times","cos2x","minus","plus","toLessThanHalfPi","neg","cubeRoot","cbrt","m","n","r","rep","t","t3","t3plusx","isFinite","isZero","toExponential","slice","divide","eq","decimalPlaces","dp","dividedBy","div","dividedToIntegerBy","divToInt","equals","greaterThan","gt","greaterThanOrEqualTo","gte","hyperbolicCosine","cosh","one","cosh2_x","d8","hyperbolicSine","sinh","sinh2_x","sqrt","d5","d16","d20","hyperbolicTangent","tanh","inverseCosine","acos","isNeg","getPi","asin","halfPi","inverseHyperbolicCosine","acosh","lte","ln","inverseHyperbolicSine","asinh","inverseHyperbolicTangent","atanh","xsd","wpr","inverseSine","atan","inverseTangent","px","x2","isInteger","isInt","isNaN","isNegative","isPositive","isPos","lessThan","lt","lessThanOrEqualTo","logarithm","log","base","isBase10","denominator","inf","num","arg","naturalLogarithm","getLn10","sub","xLTy","xe","push","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","logBase","more","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","sign","multiplyInteger","compare","subtract","temp","a","b","aL","bL","isTruncated","digits","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","args","ltgt","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","log2","log10","random","Uint32Array","copy","clone","test","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","data","loginLoading","bShowCustomerDialog","methods","login","loginID","loginPwd","types","trim","$error","params","LoginSource","LoginType","LoginID","$store","dispatch","url","Body","result","orgList","OrganizationList","filter","item","OrganizationType","commit","GlobalConfigs","Person","PostSysNo","CustomerManagerPersonSysNo","PersonSysNo","CustomerStatus","Extra","OrganizationSysNo","res","CustomerBase","go","$warning","message","module","exports","actionLoading","getCartLst","OrganizationToSysNo","state","organizationList","List","forEach","CartList","getCartCount","CartCount","addCartList","canByg","cartItemList","Quantity","IsClearStocks","goodsType","ModuleSysNo","ModuleSourceType","ModuleSourceClass","DeliveryType","ModuleSourceSysNo","SkuSysNo","skuList","sku","firstSpec","specValueList","spec","OrganizationFromSysNo","DataRangeSysNo","CartItemList","$success","getCartList","addSingleSkuCart","skuSysNo","cartList","cart","Sku","ProductGroup","ProductGroupBase","productGroupCode","ProductGroupCode","isExist","product","cartSysNo","CartSysNo","skuName","SkuName","salePrice","Price","SalePrice","quantity","fileMasterUrlList","FileMasterUrlList","ProductGroupName","goBuy","orderList","Numbers","DeliveryCountry","type","DeliveryPlace","deleteCart","CartSysNoList","staticRenderFns","_h","$createElement","_c","_self","attrs","staticClass","_v","_index","component","_vm","on","$event","stopPropagation","openWindow","_m","$route","path","querySearch","nativeOn","_k","keyCode","key","scopedSlots","_u","fn","ref","_s","SearchKey","preventDefault","handleDeleteKeyWord","model","value","callback","$$v","keyword","expression","_e","cartNum","handleCommand","staticStyle","customer","CustomerName","slot","setCustomerDialogVisible","defaultGoodImageUrl","scrollTop","el","from","to","duration","window","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","setTimeout","difference","scroll","start","end","step","scrollTo","getSkuImageUrl","getSkuShowUrl","ProductGroupFileMasterUrlList","getSkuSimpleImageUrl","getProductThumbnailUrl","FileThumbnailUrlList","getProductMasterUrl","getOriginalImageUrl","OriginalCountry","OriginalIcon","getOriginalName","OriginalName","getProductSaleQuantity","FakeSaleCount","ProductGroupStatistic","SaleCount","getSkuSaleQuantity","getSkuInventoryQuantity","isClearStocks","unitName","getGrossProfit","rate","getOrderPayTime","orderBase","OrderPaymentList","PayTime","getOrderStatus","order","nowStatus","OrderBase","OrderStatus","HasOrderRMA","OrderRMAType","OrderRMAStatus","rmaStatus","OrderPartRMA","getOrderPaymentType","_type","isGlobal","checkProductNum","changeNum","showTip","tip","MinQuantity","UnitName","LimitQuantity","$nextTick","getTradeType","getWithdrawType","dateFormat","date","fmt","o","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","RegExp","$1","getFullYear","substr","checkPhone","mobile","getRMAType","getRMAStatus","status","mVisible","openDialog","closeDialog","KeyWord","loading","dataList","directives","rawName","_l","index","class","isSelected","selectCustomer","bInitDialog","bSearchClick","disabled","submit"],"mappings":"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","file":"js/chunk-63e456f5.28bc1b88.js","sourcesContent":[";(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js v10.2.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2020 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\n var 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 Decimal, inexact, noConflict, 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\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 = { name: '[object Decimal]' };\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * ceil\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\n P.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\n P.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\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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n 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 x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.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|Decimal}\r\n *\r\n P.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\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|Decimal}\r\n *\r\n P.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\n P.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\n P.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|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\n P.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\n P.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\n P.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|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.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\n P.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\n P.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\n P.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\n P.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\n P.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 /*\r\n // Add aliases to match BigDecimal method names.\r\n // P.add = P.plus;\r\n P.subtract = P.minus;\r\n P.multiply = P.times;\r\n P.divide = P.div;\r\n P.remainder = P.mod;\r\n P.compareTo = P.cmp;\r\n P.negate = P.neg;\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\n function 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\n function 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\n function 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\n function 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\n function cosine(Ctor, x) {\r\n var k, y,\r\n len = x.d.length;\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 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\n var 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\n function 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\n function 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\n function 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\n function 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\n function 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\n function 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\n function 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\n function isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n }\r\n\r\n\r\n /*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\n function maxOrMin(Ctor, args, ltgt) {\r\n var 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 if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\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\n function 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\n function 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\n function 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\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\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\n function parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n 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\n function sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) return taylorSeries(Ctor, 2, x, x);\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\n function 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\n function 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\n function 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\n function 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\n function 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 * 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 * 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal} A value in radians.\r\n *\r\n */\r\n function 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|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal} A value in radians.\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal} A value in radians.\r\n *\r\n */\r\n function 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|Decimal} The y-coordinate.\r\n * x {number|string|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\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\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\n function 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|Decimal} A value in radians.\r\n *\r\n */\r\n function 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|Decimal} A value in radians.\r\n *\r\n */\r\n function 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\n function 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|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 // Duplicate.\r\n if (v instanceof Decimal) {\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 // Infinity, NaN.\r\n } else 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 } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if ((i = v.charCodeAt(0)) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n // Plus sign?\r\n if (i === 43) v = v.slice(1);\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 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.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.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|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function 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|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function 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\n function isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.name === '[object Decimal]' || 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function max() {\r\n return maxOrMin(this, arguments, 'lt');\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|Decimal}\r\n *\r\n */\r\n function min() {\r\n return maxOrMin(this, arguments, 'gt');\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|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function 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|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function 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|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\n function 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\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal} A value in radians.\r\n *\r\n */\r\n function 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|Decimal} A value in radians.\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function 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|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function 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 tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function 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|Decimal} A value in radians.\r\n *\r\n */\r\n function 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|Decimal}\r\n *\r\n */\r\n function trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(DEFAULTS);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Create the internal constants from their string values.\r\n LN10 = new Decimal(LN10);\r\n PI = new Decimal(PI);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n if (typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol') {\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\n P[Symbol.toStringTag] = 'Decimal';\r\n }\r\n\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self ? self : window;\r\n }\r\n\r\n noConflict = globalScope.Decimal;\r\n Decimal.noConflict = function () {\r\n globalScope.Decimal = noConflict;\r\n return Decimal;\r\n };\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&lang=less&\"","export default {\n data: function () {\n return {\n loginLoading: false,\n bShowCustomerDialog: false\n };\n },\n methods: {\n async login(loginID, loginPwd, types) {\n loginID = loginID.trim();\n if (types !== 90) {\n // 业务员登录\n if (!loginID || !loginPwd) {\n this.$error('请填写账号密码');\n return;\n }\n }\n try {\n this.loginLoading = true;\n let params = {\n LoginSource: 1,\n LoginType: 4,\n LoginID: loginID\n };\n // 业务员选择经销商登录时,不需要传密码,直接登录\n if (loginPwd) {\n params['LoginPwd'] = loginPwd;\n }\n const result = await this.$store.dispatch('postData', {\n url: '/user/LoginIn',\n data: {\n Body: params\n }\n });\n let orgList = result.OrganizationList.filter(item => {\n return item.OrganizationType === 17001 || item.OrganizationType === 17005; // 业务员或者经销商\n });\n // this.$store.state.Post = orgList[0].PostSysNo;\n this.loginLoading = false;\n if (orgList.length <= 0) {\n this.$error('登录账号错误!');\n return;\n }\n this.$store.commit('updateGlobalConfigs', result.GlobalConfigs);\n this.$store.commit('updatePerson', result.Person);\n this.$store.commit('updateOrganizationList', orgList);\n this.$store.commit('updateUId', loginID);\n // 判断是客户还是业务员,90 业务员\n if (orgList.length && orgList[0].PostSysNo === 90) {\n // 获取业务员下客户列表\n await this.$store.dispatch('postData', {\n url: '/user/SaveCustomerManagerPersonSysNo',\n data: {\n Body: {\n CustomerManagerPersonSysNo: result.Person.PersonSysNo\n }\n }\n });\n this.$store.commit('updateCustomerManagerPersonSysNo', result.Person.PersonSysNo);\n this.bShowCustomerDialog = true;\n } else {\n // 判断客户账号审核状态,10 审核通过 11审核不通过 0待审核\n if (result.CustomerStatus === 10) {\n // 获取客户信息\n let res = await this.$store.dispatch('postData', {\n url: '/user/GetCustomerByOrganizationSysNo',\n data: {\n Extra: {\n OrganizationSysNo: orgList[0].OrganizationSysNo\n }\n }\n });\n\n await this.$store.dispatch('postData', {\n url: '/user/SaveCustomerInfo',\n data: {\n Body: {\n CustomerBase: res.CustomerBase\n }\n }\n });\n this.$store.commit('updateCustomer', res.CustomerBase);\n this.go('/home');\n } else if (result.CustomerStatus === 11) {\n this.$error('您的账户已被禁用!');\n } else if (result.CustomerStatus === 0) {\n this.$warning('您的账户申请还在审核中!');\n } else if (result.CustomerStatus === 12) {\n this.$error('您的账户审核未通过!');\n } else {\n this.$error('您的账号异常!');\n }\n }\n } catch (e) {\n this.loginLoading = false;\n this.$error(e.message);\n }\n }\n }\n};\n","module.exports = __webpack_public_path__ + \"img/logo.9c5b25a8.jpg\";","export default {\n data() {\n return {\n actionLoading: false\n };\n },\n methods: {\n // 获取购物车列表\n async getCartLst() {\n try {\n const result = await this.$store.dispatch('postData', {\n url: '/deal/GetCartList',\n data: {\n Extra: {\n OrganizationToSysNo: this.$store.state.organizationList[0].OrganizationSysNo\n }\n }\n });\n let num = 0;\n result.List.forEach(item => {\n num += item.CartList.length;\n });\n this.$store.commit('updateCartNum', num);\n return result.List;\n } catch (e) {\n this.$error(e.message);\n }\n },\n // 购物车数量\n async getCartCount() {\n try {\n const result = await this.$store.dispatch('postData', {\n url: '/deal/GetCartCount',\n data: {\n Extra: {\n OrganizationToSysNo: this.$store.state.organizationList[0].OrganizationSysNo\n }\n }\n });\n this.$store.commit('updateCartNum', result.CartCount);\n } catch (e) {\n this.$error(e.message);\n }\n },\n // 批量添加商品到购物车\n async addCartList(data) {\n try {\n console.log(data);\n let cartItemList = [];\n let canByg = false;\n if (data.num > data.Quantity && data.IsClearStocks === 1) {\n this.$error('商品库存不足');\n canByg = false;\n return false;\n }\n if (data.goodsType === 1 && data.num > 0) {\n // 单规格单sku\n cartItemList = [{\n ModuleSysNo: 16000,\n ModuleSourceType: 16001,\n ModuleSourceClass: data.DeliveryType,\n ModuleSourceSysNo: data.SkuSysNo,\n Quantity: data.num\n }];\n canByg = true;\n } else if (data.goodsType === 2) {\n // 单规格多sku\n data.skuList.forEach(sku => {\n if (sku.num) {\n cartItemList.push({\n ModuleSysNo: 16000,\n ModuleSourceType: 16001,\n ModuleSourceClass: sku.DeliveryType,\n ModuleSourceSysNo: sku.SkuSysNo,\n Quantity: sku.num\n });\n }\n });\n canByg = true;\n } else if (data.goodsType === 3) {\n // 双规格多sku\n data.firstSpec.specValueList.forEach(spec => {\n spec.skuList.forEach(sku => {\n if (sku.num > sku.Quantity && sku.IsClearStocks === 1) {\n // this.$error('商品库存不足');\n canByg = false;\n return false;\n }\n if (sku.num) {\n cartItemList.push({\n ModuleSysNo: 16000,\n ModuleSourceType: 16001,\n ModuleSourceClass: sku.DeliveryType,\n ModuleSourceSysNo: sku.SkuSysNo,\n Quantity: sku.num\n });\n }\n });\n });\n }\n if (!canByg) {\n return false;\n }\n if (!cartItemList.length) {\n this.$error('购买数量不能为0');\n return;\n }\n await this.$store.dispatch('postData', {\n url: '/deal/AddCartList',\n data: {\n Body: {\n OrganizationFromSysNo: data.OrganizationSysNo,\n DataRangeSysNo: data.DataRangeSysNo,\n CartItemList: cartItemList,\n OrganizationToSysNo: this.$store.state.organizationList[0].OrganizationSysNo\n }\n }\n });\n this.$success('添加购物车成功');\n this.getCartList();\n } catch (e) {\n this.$warning(e.message);\n }\n },\n // 添加单个sku到购物车\n async addSingleSkuCart(data) {\n try {\n let skuSysNo, num;\n skuSysNo = data.SkuSysNo;\n num = data.num;\n if (num <= 0) return;\n await this.$store.dispatch('postData', {\n url: '/deal/AddCart',\n data: {\n Body: {\n OrganizationFromSysNo: data.OrganizationSysNo,\n DataRangeSysNo: data.DataRangeSysNo,\n ModuleSysNo: 16000,\n ModuleSourceType: 16001,\n ModuleSourceClass: data.DeliveryType,\n DeliveryType: data.DeliveryType,\n ModuleSourceSysNo: skuSysNo,\n Quantity: num,\n OrganizationToSysNo: this.$store.state.organizationList[0].OrganizationSysNo\n }\n }\n });\n this.$success('添加购物车成功');\n this.getCartList();\n } catch (e) {\n this.$warning(e.message);\n }\n },\n // 获取购物车列表,并组装数据\n async getCartList() {\n this.cartList = [];\n let result = await this.getCartLst();\n result.forEach(v => {\n v.CartList.forEach(cart => {\n let base = cart.Sku.ProductGroup.ProductGroupBase;\n let productGroupCode = base.ProductGroupCode;\n // 判断cartList中是否已存在该商品\n let isExist = false;\n let product = {};\n this.cartList.forEach(v => {\n if (v.productGroupCode === productGroupCode) {\n isExist = true;\n product = v;\n }\n });\n if (isExist) {\n let sku = {\n cartSysNo: cart.CartSysNo,\n skuName: cart.Sku.SkuName,\n salePrice: cart.Sku.Price.SalePrice,\n quantity: cart.Quantity\n };\n product.skuList.push(sku);\n } else {\n product = {\n fileMasterUrlList: base.FileMasterUrlList,\n ProductGroupName: base.ProductGroupName,\n productGroupCode: productGroupCode,\n skuList: [{\n cartSysNo: cart.CartSysNo,\n skuName: cart.Sku.SkuName,\n salePrice: cart.Sku.Price.SalePrice,\n quantity: cart.Quantity\n }]\n };\n this.cartList.push(product);\n }\n });\n });\n },\n // 立即购买\n goBuy(data) {\n try {\n let orderList = [];\n if (data.goodsType === 1 && data.num > 0) {\n console.log(data);\n if ((data.Quantity === 0 || data.Quantity < data.num) && data.sku.IsClearStocks === 1) {\n this.$warning(data.ProductGroupName + '库存不足'); return false;\n }\n // 单规格单sku\n data.sku.ProductGroupName = data.ProductGroupName;\n data.sku.Numbers = data.num;\n orderList.push(data.sku);\n if (data.sku.DeliveryCountry === '国内') {\n orderList[0].type = 1;\n }\n if (data.sku.DeliveryCountry === '境外') {\n orderList[0].type = 2;\n }\n } else if (data.goodsType === 2) {\n // 单规格多sku\n data.skuList.forEach(sku => {\n if (sku.num) {\n sku.sku.ProductGroupName = data.ProductGroupName;\n sku.sku.Numbers = sku.num;\n orderList.push(sku.sku);\n if (sku.sku.DeliveryPlace === '国内') {\n orderList[0].type = 1;\n }\n if (sku.sku.DeliveryPlace === '境外') {\n orderList[0].type = 2;\n }\n }\n });\n } else if (data.goodsType === 3) {\n if (data.num === 0) {\n this.$error('购买数量不能为0'); return false;\n }\n // 双规格多sku\n data.firstSpec.specValueList.forEach(spec => {\n spec.skuList.forEach(sku => {\n if (sku.num) {\n sku.sku.ProductGroupName = data.ProductGroupName;\n sku.sku.Numbers = sku.num;\n orderList.push(sku.sku);\n if (sku.sku.DeliveryPlace === '国内') {\n orderList[0].type = 1;\n }\n if (sku.sku.DeliveryPlace === '境外') {\n orderList[0].type = 2;\n }\n }\n });\n });\n }\n if (!orderList.length) {\n this.$error('购买数量不能为0'); return false;\n }\n this.$store.commit('updateOrder', orderList);\n this.$store.commit('orderType', 1);\n this.go('/order-confirm');\n } catch (e) {\n this.$warning(e.message);\n }\n },\n // 删除购物车\n async deleteCart(cartList) {\n try {\n this.actionLoading = true;\n await this.$store.dispatch('postData', {\n url: '/deal/DeleteCart',\n data: {\n Body: {\n CartSysNoList: cartList\n }\n }\n });\n this.actionLoading = false;\n this.$success(`删除成功`);\n } catch (e) {\n this.actionLoading = false;\n this.$error(e.message);\n }\n }\n }\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"topbar\"},[_c('div',{staticClass:\"layout w-1200 clearfix\"},[_c('div',{staticClass:\"fl logo\",on:{\"click\":function($event){$event.stopPropagation();return _vm.openWindow($event)}}},[_vm._m(0)]),_c('div',{staticClass:\"fl searchBox\"},[(_vm.$route.path !== '/order-list' && _vm.$route.path !== '/my-center' && _vm.$route.path !== '/tb-order-list')?_c('div',{staticClass:\"searchBar clearfix\"},[_c('el-autocomplete',{staticClass:\"fl pl5 ipt iptsearch\",attrs:{\"value-key\":\"SearchKey\",\"fetch-suggestions\":_vm.querySearch,\"placeholder\":\"请输入内容\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.search($event)}},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"flex all-c\"},[_c('span',{staticClass:\"flex-1\"},[_vm._v(_vm._s(item.SearchKey))]),_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.handleDeleteKeyWord(item)}}})])]}}],null,false,3069125664),model:{value:(_vm.keyword),callback:function ($$v) {_vm.keyword=$$v},expression:\"keyword\"}}),_c('a',{staticClass:\"fr btn icon icon-search\",attrs:{\"id\":\"topSearch\",\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.search($event)}}})],1):_vm._e()]),_c('div',{staticClass:\"fr shortcut_bar\"},[_c('ul',[_vm._m(1),_c('li',{staticClass:\"plr20\"},[_c('a',{attrs:{\"href\":\"javascript:;\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.go('/cart')}}},[_c('i',{staticClass:\"icon icon-gouwuche c-red f18 mr3 lb-vm\"}),_c('span',{staticClass:\" lb-vm\"},[_vm._v(\"购物车 (\"),_c('span',{staticClass:\"cartnumtop cartnum c-red\"},[_vm._v(_vm._s(_vm.$store.state.cartNum))]),_vm._v(\")\")])])]),_c('li',{staticClass:\"pl20\"},[_c('el-dropdown',{on:{\"command\":_vm.handleCommand}},[_c('a',{staticClass:\"el-dropdown-link\"},[_c('i',{staticClass:\"icon icon-user1 c-red f20 mr3 lb-vm\"}),_c('span',{staticClass:\"f12 lb-vm txt-elips\",staticStyle:{\"max-width\":\"14em\",\"overflow\":\"hidden\",\"height\":\"60px\"}},[_vm._v(_vm._s(_vm.$store.state.customer && _vm.$store.state.customer.CustomerName))])]),_c('el-dropdown-menu',{staticClass:\"user-downlist\",attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"command\":\"/my-center\"}},[_vm._v(\"个人中心\")]),(_vm.$store.state.CustomerManagerPersonSysNo)?_c('el-dropdown-item',{attrs:{\"command\":\"change\"}},[_vm._v(\"切换账号\")]):_vm._e(),_c('el-dropdown-item',{attrs:{\"command\":\"/basic-form\"}},[_vm._v(\"账户信息\")]),_c('el-dropdown-item',{attrs:{\"command\":\"/account-security\"}},[_vm._v(\"账户安全\")]),_c('el-dropdown-item',{attrs:{\"command\":\"quit\"}},[_vm._v(\"退出\")])],1)],1)],1)])])]),_c('customer-dialog',{attrs:{\"show-dialog\":_vm.bShowCustomerDialog},on:{\"update:visible\":_vm.setCustomerDialogVisible}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"javascript:;\"}},[_c('img',{staticClass:\"pim\",attrs:{\"src\":require(\"../../assets/images/common/logo.jpg\")}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"l1 bd_r plr20\"},[_c('a',{attrs:{\"href\":\"javascript:;\"}},[_c('span',{staticClass:\"lb-vm\"},[_vm._v(\"订购热线 0573-\")]),_c('span',{staticClass:\"f16 c-red f-b lb-vm\"},[_vm._v(\"89897755\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=0520d886&\"\nimport script from \"./header.vue?vue&type=script&lang=js&\"\nexport * from \"./header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./header.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./customer-dialog.vue?vue&type=style&index=0&id=2e3b52d4&lang=less&scoped=true&\"","import Decimal from 'decimal.js';\n\nconst defaultGoodImageUrl = 'http://myunonline-paifubao.oss-cn-hangzhou.aliyuncs.com/static/images/good/item_default.jpg';\n\nexport function scrollTop(el, from = 0, to, duration = 500) {\n if (!window.requestAnimationFrame) {\n window.requestAnimationFrame = (\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function (callback) {\n return window.setTimeout(callback, 1000 / 60);\n }\n );\n }\n const difference = Math.abs(from - to);\n const step = Math.ceil(difference / duration * 50);\n\n function scroll(start, end, step) {\n if (start === end) return;\n let d = (start + step > end) ? end : start + step;\n if (start > end) {\n d = (start - step < end) ? end : start - step;\n }\n if (el === window) {\n window.scrollTo(d, d);\n } else {\n el.scrollTop = d;\n }\n window.requestAnimationFrame(() => scroll(d, end, step));\n }\n\n scroll(from, to, step);\n}\n\nexport function getSkuImageUrl(item) {\n if (item.FileMasterUrlList && item.FileMasterUrlList.length > 0) {\n return item.FileMasterUrlList[0];\n } else {\n if (item.ProductGroup.ProductGroupBase.FileMasterUrlList && item.ProductGroup.ProductGroupBase.FileMasterUrlList.length > 0) {\n return item.ProductGroup.ProductGroupBase.FileMasterUrlList[0];\n }\n }\n return defaultGoodImageUrl;\n}\n\nexport function getSkuShowUrl(item) {\n if (item.FileMasterUrlList && item.FileMasterUrlList.length > 0) {\n return item.FileMasterUrlList[0];\n } else {\n if (item.ProductGroupFileMasterUrlList && item.ProductGroupFileMasterUrlList.length > 0) {\n return item.ProductGroupFileMasterUrlList[0];\n }\n }\n return defaultGoodImageUrl;\n}\n\nexport function getSkuSimpleImageUrl(item) {\n if (item.FileMasterUrlList && item.FileMasterUrlList.length > 0) {\n return item.FileMasterUrlList[0];\n }\n return defaultGoodImageUrl;\n}\n\nexport function getProductThumbnailUrl(item) {\n if (item.FileThumbnailUrlList && item.FileThumbnailUrlList.length > 0) {\n return item.FileThumbnailUrlList[0];\n } else {\n return defaultGoodImageUrl;\n }\n}\n\nexport function getProductMasterUrl(item) {\n if (item.FileMasterUrlList && item.FileMasterUrlList.length > 0) {\n return item.FileMasterUrlList[0];\n } else {\n return defaultGoodImageUrl;\n }\n}\n\nexport function getOriginalImageUrl(item) {\n return item.ProductGroupBase.OriginalCountry ? item.ProductGroupBase.OriginalCountry.OriginalIcon : '';\n}\n\nexport function getOriginalName(item) {\n return item.ProductGroupBase.OriginalCountry ? item.ProductGroupBase.OriginalCountry.OriginalName : '';\n}\n\nexport function getProductSaleQuantity(item) {\n return item.ProductGroupBase.FakeSaleCount + item.ProductGroupStatistic.SaleCount;\n}\n\nexport function getSkuSaleQuantity(sku) {\n return sku.FakeSaleCount + sku.SaleCount;\n}\n\nexport function getSkuInventoryQuantity(isClearStocks, quantity, unitName) {\n if (isClearStocks) {\n return `${quantity}${unitName}`;\n } else {\n return '不限';\n }\n}\n\nexport function getGrossProfit(rate) {\n return new Decimal(rate).mul(new Decimal(100));\n}\n\nexport function getOrderPayTime(orderBase) {\n return (orderBase.OrderPaymentList && orderBase.OrderPaymentList.length > 0) ? orderBase.OrderPaymentList[0].PayTime : '';\n}\n\nexport function getOrderStatus(order) {\n let nowStatus = '';\n if (order.OrderBase.OrderStatus === 0) {\n nowStatus = '待支付';\n } else if (order.OrderBase.OrderStatus === 1) {\n nowStatus = '待确认';\n } else if (order.OrderBase.OrderStatus === 2) {\n nowStatus = '待发货';\n } else if (order.OrderBase.OrderStatus === 3) {\n nowStatus = '待收货';\n } else if (order.OrderBase.OrderStatus === 4) {\n nowStatus = '部分发货';\n } else if (order.OrderBase.OrderStatus === 10) {\n nowStatus = '已完成';\n } else if (order.OrderBase.OrderStatus === 11) {\n nowStatus = '已取消';\n } else {\n nowStatus = '';\n }\n if (order.OrderBase.HasOrderRMA === 1) {\n if (order.OrderBase.OrderRMAType === 1) {\n // 退款\n if (order.OrderBase.OrderRMAStatus === 10) {\n order.rmaStatus = '退款成功';\n return '已关闭';\n } else if (order.OrderBase.OrderRMAStatus === 11) {\n return nowStatus;\n } else {\n return '退款中';\n }\n } else if (order.OrderBase.OrderRMAType === 2) {\n // 退款/退货\n if (order.OrderBase.OrderRMAStatus === 10) {\n order.rmaStatus = '退款/退货成功';\n if (order.OrderBase.OrderPartRMA === 3) {\n return '已关闭';\n } else if (order.OrderBase.OrderPartRMA === 1) {\n order.rmaStatus = '部分退款/退货成功';\n return nowStatus;\n } else {\n return nowStatus;\n }\n } else if (order.OrderBase.OrderRMAStatus === 11) {\n return nowStatus;\n } else {\n return '退货中';\n }\n }\n }\n return nowStatus;\n}\n\nexport function getOrderPaymentType(type) {\n let _type = '';\n switch (type) {\n case 0:\n _type = '余额支付';\n break;\n case 1:\n _type = '支付宝支付';\n break;\n case 2:\n _type = '微信支付';\n break;\n case 4:\n _type = '线下支付';\n break;\n case 14:\n _type = '信用付';\n break;\n case 15:\n _type = '网银支付';\n break;\n default:\n _type = '';\n }\n return _type;\n}\n\nexport function trim(str, isGlobal) {\n let result;\n result = str.replace(/(^\\s+)|(\\s+$)/g, '');\n if (isGlobal) {\n result = result.replace(/\\s/g, '');\n }\n return result;\n}\n\n// 判断商品数量是否符合起订、限购、库存量\nexport function checkProductNum(item, changeNum = false) {\n item.showTip = false;\n item.tip = '';\n let result = item.num;\n if (!result && result !== 0) {\n item.tip = '请输入商品数量';\n item.showTip = true;\n return;\n }\n if (item.num < 0) {\n result = 0;\n } else {\n // 判断是否小于起订量\n if (item.num < item.MinQuantity) {\n item.tip = `最小起订量为${item.MinQuantity}${item.UnitName}`;\n item.showTip = true;\n }\n if (!item.showTip && item.LimitQuantity > 0) {\n // 限购\n if (item.num > item.LimitQuantity) {\n result = item.LimitQuantity;\n item.tip = `最大限购量为${item.LimitQuantity}${item.UnitName}`;\n item.showTip = true;\n }\n }\n if (!item.showTip && item.IsClearStocks) {\n // 开启库存限制\n if (item.num > item.Quantity) {\n result = item.Quantity;\n item.tip = `库存不足`;\n item.showTip = true;\n }\n }\n }\n if (changeNum) {\n this.$nextTick(function () {\n item.num = result;\n });\n }\n};\n\nexport function getTradeType(type) {\n let _type = '';\n switch (type) {\n case 0:\n _type = '支付';\n break;\n case 1:\n _type = '充值';\n break;\n case 2:\n _type = '提现';\n break;\n case 3:\n _type = '转账';\n break;\n case 4:\n _type = '退款';\n break;\n case 5:\n _type = '还款';\n break;\n case 8:\n _type = '收款';\n break;\n case 9:\n _type = '撤销收款';\n break;\n default:\n _type = '';\n }\n return _type;\n}\n\nexport function getWithdrawType(type) {\n let _type = '';\n switch (type) {\n case 0:\n _type = '银行卡';\n break;\n case 1:\n _type = '微信';\n break;\n case 2:\n _type = '支付宝';\n break;\n case 3:\n _type = '畅捷支付';\n break;\n default:\n _type = '';\n }\n return _type;\n}\n\nexport function dateFormat(date, fmt = 'yyyy-MM-dd hh:mm:ss') {\n if (typeof date === 'string') {\n return date;\n }\n let o = {\n 'M+': date.getMonth() + 1, // 月份\n 'd+': date.getDate(), // 日\n 'h+': date.getHours(), // 小时\n 'm+': date.getMinutes(), // 分\n 's+': date.getSeconds(), // 秒\n 'q+': Math.floor((date.getMonth() + 3) / 3), // 季度\n 'S': date.getMilliseconds() // 毫秒\n };\n if (/(y+)/.test(fmt)) {\n fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));\n }\n for (let k in o) {\n if (new RegExp('(' + k + ')').test(fmt)) {\n fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));\n }\n }\n return fmt;\n}\n\nexport function checkPhone(mobile) {\n let tel = /^0\\d{2,3}-?\\d{7,8}$/;\n let phone = /^1[0-9]{10}$/;\n return tel.test(mobile) || phone.test(mobile);\n}\n\nexport function getRMAType(type) {\n let _type = '';\n switch (type) {\n case 1:\n _type = '仅退款';\n break;\n case 2:\n _type = '退货/退款';\n break;\n default:\n _type = '';\n }\n return _type;\n}\n\nexport function getRMAStatus(status) {\n if (status === 1) {\n return '等待卖家同意退货';\n }\n if (status === 2) {\n return '等待卖家同意退款';\n }\n if (status === 3) {\n return '等待买家退货';\n }\n if (status === 4) {\n return '等待卖家确认收货';\n }\n if (status === 5) {\n return '退款中';\n }\n if (status === 6) {\n return '退款失败';\n }\n if (status === 10) {\n return '退款成功';\n }\n if (status === 11) {\n return '退款关闭';\n }\n return '';\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticStyle:{\"z-index\":\"999\"},attrs:{\"title\":\"选择客户账号\",\"visible\":_vm.mVisible,\"width\":\"940px\"},on:{\"update:visible\":function($event){_vm.mVisible=$event},\"open\":function($event){return _vm.openDialog()},\"close\":function($event){return _vm.closeDialog()}}},[_c('el-input',{staticClass:\"input-with-select\",staticStyle:{\"width\":\"300px\",\"float\":\"right\"},attrs:{\"placeholder\":\"请输入经销商名称、手机号\"},model:{value:(_vm.KeyWord),callback:function ($$v) {_vm.KeyWord=$$v},expression:\"KeyWord\"}},[_c('el-button',{attrs:{\"slot\":\"append\",\"icon\":\"el-icon-search\",\"loading\":_vm.loading},on:{\"click\":_vm.search},slot:\"append\"})],1),(_vm.dataList.length > 0)?_c('ul',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"tz-login-list bg-gray clearfix\",staticStyle:{\"margin-top\":\"50px\"}},_vm._l((_vm.dataList),function(item,index){return _c('li',{key:index,class:[_vm.isSelected(item) ? 'on' : ''],on:{\"click\":function($event){$event.stopPropagation();return _vm.selectCustomer(item)}}},[_vm._v(\"\\n \"+_vm._s(item.CustomerBase.CustomerName)+\"\\n \")])}),0):_vm._e(),(!_vm.bInitDialog && !_vm.bSearchClick && _vm.dataList.length === 0)?_c('p',{staticClass:\"tz-login-blank bg-gray txt-c\",staticStyle:{\"margin-top\":\"50px\"}},[_vm._v(\" 您名下当前无负责的客户,请联系管理员。 \")]):_vm._e(),(!_vm.bInitDialog && _vm.bSearchClick && _vm.dataList.length === 0)?_c('p',{staticClass:\"tz-login-blank bg-gray txt-c\",staticStyle:{\"margin-top\":\"50px\"}},[_vm._v(\" 没有找到符合 \\\"\"+_vm._s(_vm.KeyWord)+\"\\\" 的客户 \")]):_vm._e(),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[(_vm.dataList.length > 0)?_c('el-button',{staticClass:\"w-130\",attrs:{\"type\":\"primary\",\"size\":\"medium\",\"loading\":_vm.loginLoading,\"disabled\":_vm.disabled},on:{\"click\":_vm.submit}},[_vm._v(\"确 定\")]):_c('el-button',{staticClass:\"w-130\",attrs:{\"type\":\"primary\",\"size\":\"medium\",\"loading\":_vm.loginLoading},on:{\"click\":_vm.submit}},[_vm._v(\"知道了\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./customer-dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./customer-dialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./customer-dialog.vue?vue&type=template&id=2e3b52d4&scoped=true&\"\nimport script from \"./customer-dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./customer-dialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./customer-dialog.vue?vue&type=style&index=0&id=2e3b52d4&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e3b52d4\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}