@prisma/cli 2.20.1 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/LICENSE +158 -0
  2. package/README.md +29 -28
  3. package/dist/adapters/config.js +74 -0
  4. package/dist/adapters/local-state.js +98 -0
  5. package/dist/adapters/mock-api.js +57 -0
  6. package/dist/adapters/token-storage.js +43 -0
  7. package/dist/cli.js +9 -0
  8. package/dist/cli2.js +59 -0
  9. package/dist/commands/app/index.js +216 -0
  10. package/dist/commands/auth/index.js +42 -0
  11. package/dist/commands/branch/index.js +51 -0
  12. package/dist/commands/project/index.js +45 -0
  13. package/dist/controllers/app.js +834 -0
  14. package/dist/controllers/auth.js +107 -0
  15. package/dist/controllers/branch.js +73 -0
  16. package/dist/controllers/project.js +214 -0
  17. package/dist/controllers/select-prompt-port.js +12 -0
  18. package/dist/lib/app/bun-project.js +39 -0
  19. package/dist/lib/app/env-vars.js +24 -0
  20. package/dist/lib/app/local-dev.js +150 -0
  21. package/dist/lib/app/preview-build.js +142 -0
  22. package/dist/lib/app/preview-interaction.js +38 -0
  23. package/dist/lib/app/preview-progress.js +139 -0
  24. package/dist/lib/app/preview-provider.js +232 -0
  25. package/dist/lib/auth/auth-ops.js +57 -0
  26. package/dist/lib/auth/client.js +22 -0
  27. package/dist/lib/auth/guard.js +34 -0
  28. package/dist/lib/auth/login.js +117 -0
  29. package/dist/output/patterns.js +93 -0
  30. package/dist/presenters/app.js +405 -0
  31. package/dist/presenters/auth.js +73 -0
  32. package/dist/presenters/branch.js +111 -0
  33. package/dist/presenters/project.js +84 -0
  34. package/dist/shell/command-meta.js +329 -0
  35. package/dist/shell/command-runner.js +33 -0
  36. package/dist/shell/errors.js +66 -0
  37. package/dist/shell/global-flags.js +25 -0
  38. package/dist/shell/help.js +78 -0
  39. package/dist/shell/output.js +54 -0
  40. package/dist/shell/prompt.js +31 -0
  41. package/dist/shell/runtime.js +51 -0
  42. package/dist/shell/ui.js +59 -0
  43. package/dist/use-cases/auth.js +70 -0
  44. package/dist/use-cases/branch.js +95 -0
  45. package/dist/use-cases/create-cli-gateways.js +93 -0
  46. package/dist/use-cases/project.js +75 -0
  47. package/package.json +49 -137
  48. package/build/child.js +0 -4110
  49. package/build/index.js +0 -104447
  50. package/build/public/.DS_Store +0 -0
  51. package/build/public/assets/alert.60ea9f84.svg +0 -5
  52. package/build/public/assets/array.1a36c222.svg +0 -4
  53. package/build/public/assets/boolean.9188b434.svg +0 -4
  54. package/build/public/assets/browser.21a575be.js +0 -1
  55. package/build/public/assets/browser.38b7fdb1.js +0 -1
  56. package/build/public/assets/browser.cdd2249a.js +0 -1
  57. package/build/public/assets/chevron-down.24f76e3c.svg +0 -3
  58. package/build/public/assets/cross.c2610cf5.svg +0 -11
  59. package/build/public/assets/datetime.a3bf710a.svg +0 -4
  60. package/build/public/assets/download.8d34b65a.svg +0 -4
  61. package/build/public/assets/ellipsis.a8c5a34a.svg +0 -10
  62. package/build/public/assets/enum.7ec0b64c.svg +0 -6
  63. package/build/public/assets/folder.d77b8eaf.svg +0 -6
  64. package/build/public/assets/hamburger.5fdadeac.svg +0 -4
  65. package/build/public/assets/logotype.a960b169.svg +0 -4
  66. package/build/public/assets/number.85ddf96b.svg +0 -7
  67. package/build/public/assets/object.0ba944a6.svg +0 -5
  68. package/build/public/assets/play.8811691e.svg +0 -6
  69. package/build/public/assets/plus.8fbf7ad3.svg +0 -4
  70. package/build/public/assets/read.79154521.svg +0 -1
  71. package/build/public/assets/refresh.d5448ccc.svg +0 -4
  72. package/build/public/assets/search.2ed766ce.svg +0 -7
  73. package/build/public/assets/settings.5ad25af2.svg +0 -8
  74. package/build/public/assets/string.ea615a24.svg +0 -4
  75. package/build/public/assets/tick-indeterminate.aec8a44d.svg +0 -3
  76. package/build/public/assets/tick.8cbb6a93.svg +0 -4
  77. package/build/public/assets/vendor.c4d0f081.js +0 -354
  78. package/build/public/demo.html +0 -17
  79. package/build/public/demoChunk.js +0 -2
  80. package/build/public/electron-darwin.html +0 -19
  81. package/build/public/electron-linux.html +0 -18
  82. package/build/public/electron-mac.html +0 -18
  83. package/build/public/electron-win.html +0 -17
  84. package/build/public/electron-win32.html +0 -18
  85. package/build/public/electron.html +0 -17
  86. package/build/public/electronBus.js +0 -2
  87. package/build/public/electronChunk.js +0 -2
  88. package/build/public/favicon/apple-touch-icon.png +0 -0
  89. package/build/public/favicon/favicon-16x16.png +0 -0
  90. package/build/public/favicon/favicon-32x32.png +0 -0
  91. package/build/public/favicon/prisma.png +0 -0
  92. package/build/public/favicon.svg +0 -5
  93. package/build/public/fonts/.DS_Store +0 -0
  94. package/build/public/fonts/Inter.ttf +0 -0
  95. package/build/public/fonts/RobotoMono.ttf +0 -0
  96. package/build/public/icons/.DS_Store +0 -0
  97. package/build/public/icons/alert.svg +0 -5
  98. package/build/public/icons/array.svg +0 -4
  99. package/build/public/icons/bin.svg +0 -37
  100. package/build/public/icons/boolean.svg +0 -4
  101. package/build/public/icons/check.svg +0 -3
  102. package/build/public/icons/chevron-down.svg +0 -3
  103. package/build/public/icons/code.svg +0 -4
  104. package/build/public/icons/cross.svg +0 -11
  105. package/build/public/icons/data-tool.svg +0 -5
  106. package/build/public/icons/database.svg +0 -4
  107. package/build/public/icons/datetime.svg +0 -4
  108. package/build/public/icons/double-arrow-right.svg +0 -4
  109. package/build/public/icons/download.svg +0 -4
  110. package/build/public/icons/ellipsis.svg +0 -10
  111. package/build/public/icons/enum.svg +0 -6
  112. package/build/public/icons/expand.svg +0 -4
  113. package/build/public/icons/eye.svg +0 -20
  114. package/build/public/icons/filters.svg +0 -5
  115. package/build/public/icons/folder.svg +0 -6
  116. package/build/public/icons/hamburger.svg +0 -4
  117. package/build/public/icons/icon.svg +0 -199
  118. package/build/public/icons/logo.svg +0 -199
  119. package/build/public/icons/logotype.svg +0 -4
  120. package/build/public/icons/number.svg +0 -7
  121. package/build/public/icons/object.svg +0 -5
  122. package/build/public/icons/play.svg +0 -6
  123. package/build/public/icons/plus.svg +0 -4
  124. package/build/public/icons/refresh.svg +0 -4
  125. package/build/public/icons/search.svg +0 -7
  126. package/build/public/icons/settings.svg +0 -8
  127. package/build/public/icons/string.svg +0 -4
  128. package/build/public/icons/tick-indeterminate.svg +0 -3
  129. package/build/public/icons/tick.svg +0 -4
  130. package/build/public/illustrations/.DS_Store +0 -0
  131. package/build/public/illustrations/empty.svg +0 -1
  132. package/build/public/illustrations/read.svg +0 -1
  133. package/build/public/illustrations/searching.svg +0 -1
  134. package/build/public/images/.DS_Store +0 -0
  135. package/build/public/images/icon-1024.png +0 -0
  136. package/build/public/index.css +0 -1
  137. package/build/public/index.html +0 -49
  138. package/build/public/index.js +0 -1
  139. package/build/public/main.31f688a6254e294d9128.css +0 -118
  140. package/build/public/main.31f688a6254e294d9128.css.map +0 -1
  141. package/build/public/main.364c712f32662ff0e43d.css +0 -116
  142. package/build/public/main.364c712f32662ff0e43d.css.map +0 -1
  143. package/build/public/main.42ef3fe7e97347765c91.css +0 -118
  144. package/build/public/main.42ef3fe7e97347765c91.css.map +0 -1
  145. package/build/public/main.503446defafe7aeca2f3.css +0 -116
  146. package/build/public/main.503446defafe7aeca2f3.css.map +0 -1
  147. package/build/public/main.c50a3b5980fe26f78b65.css +0 -118
  148. package/build/public/main.c50a3b5980fe26f78b65.css.map +0 -1
  149. package/build/public/main.cda25e5813776c2af295.css +0 -116
  150. package/build/public/main.cda25e5813776c2af295.css.map +0 -1
  151. package/build/public/main.dbac3b290f78404ff579.css +0 -116
  152. package/build/public/main.dbac3b290f78404ff579.css.map +0 -1
  153. package/build/public/main.f8ce44e122e5e2b8f778.css +0 -118
  154. package/build/public/main.f8ce44e122e5e2b8f778.css.map +0 -1
  155. package/build/public/main.fc9ea7521a4aecce1a77.css +0 -118
  156. package/build/public/main.fc9ea7521a4aecce1a77.css.map +0 -1
  157. package/build/public/main.js +0 -403
  158. package/build/public/main.js.map +0 -1
  159. package/build/public/mainChunk.0a84f3ba4d2ab481e877.css +0 -116
  160. package/build/public/mainChunk.1b327d58afbddc917bce.css +0 -118
  161. package/build/public/mainChunk.2cdf583b2bd51aa67587.css +0 -118
  162. package/build/public/mainChunk.544af00f7e9ffcbe782c.css +0 -118
  163. package/build/public/mainChunk.56f96a13868b2b4a53be.css +0 -118
  164. package/build/public/mainChunk.5cee429bfbf06e7ecb39.css +0 -118
  165. package/build/public/mainChunk.a862474ed4cdb421ffa2.css +0 -118
  166. package/build/public/mainChunk.ada34153c4911b5ac22b.css +0 -118
  167. package/build/public/mainChunk.c16a8d01b2c49b2f2751.css +0 -118
  168. package/build/public/mainChunk.ca4a878d5478b9320be8.css +0 -116
  169. package/build/public/mainChunk.e3adc8758b4395546cef.css +0 -116
  170. package/build/public/mainChunk.f2c59fcbfc455d8b9de5.css +0 -118
  171. package/build/public/mainChunk.js +0 -396
  172. package/build/public/manifest.json +0 -34
  173. package/build/public/preview.html +0 -16
  174. package/build/public/previewBus.js +0 -2
  175. package/build/public/previewChunk.js +0 -2
  176. package/build/public/projects.html +0 -86
  177. package/build/public/server.html +0 -16
  178. package/build/public/serverBus.js +0 -2
  179. package/build/public/serverChunk.js +0 -2
  180. package/build/public/splash.html +0 -17
  181. package/build/public/studioBundle.828f34b1781061528841.css +0 -118
  182. package/build/public/studioBundle.bfe9138b2e0293fcb7da.css +0 -118
  183. package/build/public/studioBundle.c5b256eede880e502aac.css +0 -118
  184. package/build/public/studioBundle.e43df511c8e2e368900a.css +0 -118
  185. package/build/public/studioBundle.e69382554c2a2942ae32.css +0 -118
  186. package/build/public/studioBundle.ee21aa56a3999a2b380b.css +0 -118
  187. package/build/public/studioBundle.js +0 -396
  188. package/build/public/vercel.html +0 -16
  189. package/build/public/vercelChunk.js +0 -2
  190. package/build/public/views/index.pug +0 -89
  191. package/build/xdg-open +0 -1066
  192. package/install/index.js +0 -5
  193. package/preinstall/index.js +0 -46
  194. package/prisma-client/README.md +0 -27
  195. package/prisma-client/generator-build/.DS_Store +0 -0
  196. package/prisma-client/generator-build/index.js +0 -79697
  197. package/prisma-client/index-browser.js +0 -3
  198. package/prisma-client/index.d.ts +0 -1
  199. package/prisma-client/index.js +0 -11
  200. package/prisma-client/package.json +0 -138
  201. package/prisma-client/runtime/index-browser.d.ts +0 -267
  202. package/prisma-client/runtime/index-browser.js +0 -2273
  203. package/prisma-client/runtime/index.d.ts +0 -1018
  204. package/prisma-client/runtime/index.js +0 -35028
  205. package/prisma-client/scripts/backup-index-browser.js +0 -3
  206. package/prisma-client/scripts/backup-index.d.ts +0 -1
  207. package/prisma-client/scripts/backup-index.js +0 -11
  208. package/prisma-client/scripts/colors.js +0 -180
  209. package/prisma-client/scripts/default-index-browser.js +0 -12
  210. package/prisma-client/scripts/default-index.d.ts +0 -47
  211. package/prisma-client/scripts/default-index.js +0 -12
  212. package/prisma-client/scripts/get-packed-client.js +0 -12
  213. package/prisma-client/scripts/mock-fs.js +0 -14
  214. package/prisma-client/scripts/postinstall.d.ts +0 -5
  215. package/prisma-client/scripts/postinstall.js +0 -398
  216. package/scripts/install-entry.js +0 -8
  217. package/scripts/preinstall-entry.js +0 -9
@@ -1,2273 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
3
- var __export = (target, all) => {
4
- for (var name in all)
5
- __defProp(target, name, {get: all[name], enumerable: true});
6
- };
7
-
8
- // src/runtime/index-browser.ts
9
- __markAsModule(exports);
10
- __export(exports, {
11
- Decimal: () => decimal_default
12
- });
13
-
14
- // ../../node_modules/.pnpm/decimal.js@10.2.1/node_modules/decimal.js/decimal.mjs
15
- var EXP_LIMIT = 9e15;
16
- var MAX_DIGITS = 1e9;
17
- var NUMERALS = "0123456789abcdef";
18
- var LN10 = "2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058";
19
- var PI = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789";
20
- var DEFAULTS = {
21
- precision: 20,
22
- rounding: 4,
23
- modulo: 1,
24
- toExpNeg: -7,
25
- toExpPos: 21,
26
- minE: -EXP_LIMIT,
27
- maxE: EXP_LIMIT,
28
- crypto: false
29
- };
30
- var inexact;
31
- var quadrant;
32
- var external = true;
33
- var decimalError = "[DecimalError] ";
34
- var invalidArgument = decimalError + "Invalid argument: ";
35
- var precisionLimitExceeded = decimalError + "Precision limit exceeded";
36
- var cryptoUnavailable = decimalError + "crypto unavailable";
37
- var mathfloor = Math.floor;
38
- var mathpow = Math.pow;
39
- var isBinary = /^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i;
40
- var isHex = /^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i;
41
- var isOctal = /^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i;
42
- var isDecimal = /^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;
43
- var BASE = 1e7;
44
- var LOG_BASE = 7;
45
- var MAX_SAFE_INTEGER = 9007199254740991;
46
- var LN10_PRECISION = LN10.length - 1;
47
- var PI_PRECISION = PI.length - 1;
48
- var P = {name: "[object Decimal]"};
49
- P.absoluteValue = P.abs = function() {
50
- var x = new this.constructor(this);
51
- if (x.s < 0)
52
- x.s = 1;
53
- return finalise(x);
54
- };
55
- P.ceil = function() {
56
- return finalise(new this.constructor(this), this.e + 1, 2);
57
- };
58
- P.comparedTo = P.cmp = function(y) {
59
- var i, j, xdL, ydL, x = this, xd = x.d, yd = (y = new x.constructor(y)).d, xs = x.s, ys = y.s;
60
- if (!xd || !yd) {
61
- return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;
62
- }
63
- if (!xd[0] || !yd[0])
64
- return xd[0] ? xs : yd[0] ? -ys : 0;
65
- if (xs !== ys)
66
- return xs;
67
- if (x.e !== y.e)
68
- return x.e > y.e ^ xs < 0 ? 1 : -1;
69
- xdL = xd.length;
70
- ydL = yd.length;
71
- for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {
72
- if (xd[i] !== yd[i])
73
- return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;
74
- }
75
- return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;
76
- };
77
- P.cosine = P.cos = function() {
78
- var pr, rm, x = this, Ctor = x.constructor;
79
- if (!x.d)
80
- return new Ctor(NaN);
81
- if (!x.d[0])
82
- return new Ctor(1);
83
- pr = Ctor.precision;
84
- rm = Ctor.rounding;
85
- Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;
86
- Ctor.rounding = 1;
87
- x = cosine(Ctor, toLessThanHalfPi(Ctor, x));
88
- Ctor.precision = pr;
89
- Ctor.rounding = rm;
90
- return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);
91
- };
92
- P.cubeRoot = P.cbrt = function() {
93
- var e, m, n, r, rep, s, sd, t, t3, t3plusx, x = this, Ctor = x.constructor;
94
- if (!x.isFinite() || x.isZero())
95
- return new Ctor(x);
96
- external = false;
97
- s = x.s * mathpow(x.s * x, 1 / 3);
98
- if (!s || Math.abs(s) == 1 / 0) {
99
- n = digitsToString(x.d);
100
- e = x.e;
101
- if (s = (e - n.length + 1) % 3)
102
- n += s == 1 || s == -2 ? "0" : "00";
103
- s = mathpow(n, 1 / 3);
104
- e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));
105
- if (s == 1 / 0) {
106
- n = "5e" + e;
107
- } else {
108
- n = s.toExponential();
109
- n = n.slice(0, n.indexOf("e") + 1) + e;
110
- }
111
- r = new Ctor(n);
112
- r.s = x.s;
113
- } else {
114
- r = new Ctor(s.toString());
115
- }
116
- sd = (e = Ctor.precision) + 3;
117
- for (; ; ) {
118
- t = r;
119
- t3 = t.times(t).times(t);
120
- t3plusx = t3.plus(x);
121
- r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);
122
- if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {
123
- n = n.slice(sd - 3, sd + 1);
124
- if (n == "9999" || !rep && n == "4999") {
125
- if (!rep) {
126
- finalise(t, e + 1, 0);
127
- if (t.times(t).times(t).eq(x)) {
128
- r = t;
129
- break;
130
- }
131
- }
132
- sd += 4;
133
- rep = 1;
134
- } else {
135
- if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
136
- finalise(r, e + 1, 1);
137
- m = !r.times(r).times(r).eq(x);
138
- }
139
- break;
140
- }
141
- }
142
- }
143
- external = true;
144
- return finalise(r, e, Ctor.rounding, m);
145
- };
146
- P.decimalPlaces = P.dp = function() {
147
- var w, d = this.d, n = NaN;
148
- if (d) {
149
- w = d.length - 1;
150
- n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;
151
- w = d[w];
152
- if (w)
153
- for (; w % 10 == 0; w /= 10)
154
- n--;
155
- if (n < 0)
156
- n = 0;
157
- }
158
- return n;
159
- };
160
- P.dividedBy = P.div = function(y) {
161
- return divide(this, new this.constructor(y));
162
- };
163
- P.dividedToIntegerBy = P.divToInt = function(y) {
164
- var x = this, Ctor = x.constructor;
165
- return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);
166
- };
167
- P.equals = P.eq = function(y) {
168
- return this.cmp(y) === 0;
169
- };
170
- P.floor = function() {
171
- return finalise(new this.constructor(this), this.e + 1, 3);
172
- };
173
- P.greaterThan = P.gt = function(y) {
174
- return this.cmp(y) > 0;
175
- };
176
- P.greaterThanOrEqualTo = P.gte = function(y) {
177
- var k = this.cmp(y);
178
- return k == 1 || k === 0;
179
- };
180
- P.hyperbolicCosine = P.cosh = function() {
181
- var k, n, pr, rm, len, x = this, Ctor = x.constructor, one = new Ctor(1);
182
- if (!x.isFinite())
183
- return new Ctor(x.s ? 1 / 0 : NaN);
184
- if (x.isZero())
185
- return one;
186
- pr = Ctor.precision;
187
- rm = Ctor.rounding;
188
- Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;
189
- Ctor.rounding = 1;
190
- len = x.d.length;
191
- if (len < 32) {
192
- k = Math.ceil(len / 3);
193
- n = (1 / tinyPow(4, k)).toString();
194
- } else {
195
- k = 16;
196
- n = "2.3283064365386962890625e-10";
197
- }
198
- x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);
199
- var cosh2_x, i = k, d8 = new Ctor(8);
200
- for (; i--; ) {
201
- cosh2_x = x.times(x);
202
- x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));
203
- }
204
- return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);
205
- };
206
- P.hyperbolicSine = P.sinh = function() {
207
- var k, pr, rm, len, x = this, Ctor = x.constructor;
208
- if (!x.isFinite() || x.isZero())
209
- return new Ctor(x);
210
- pr = Ctor.precision;
211
- rm = Ctor.rounding;
212
- Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;
213
- Ctor.rounding = 1;
214
- len = x.d.length;
215
- if (len < 3) {
216
- x = taylorSeries(Ctor, 2, x, x, true);
217
- } else {
218
- k = 1.4 * Math.sqrt(len);
219
- k = k > 16 ? 16 : k | 0;
220
- x = x.times(1 / tinyPow(5, k));
221
- x = taylorSeries(Ctor, 2, x, x, true);
222
- var sinh2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20);
223
- for (; k--; ) {
224
- sinh2_x = x.times(x);
225
- x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));
226
- }
227
- }
228
- Ctor.precision = pr;
229
- Ctor.rounding = rm;
230
- return finalise(x, pr, rm, true);
231
- };
232
- P.hyperbolicTangent = P.tanh = function() {
233
- var pr, rm, x = this, Ctor = x.constructor;
234
- if (!x.isFinite())
235
- return new Ctor(x.s);
236
- if (x.isZero())
237
- return new Ctor(x);
238
- pr = Ctor.precision;
239
- rm = Ctor.rounding;
240
- Ctor.precision = pr + 7;
241
- Ctor.rounding = 1;
242
- return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);
243
- };
244
- P.inverseCosine = P.acos = function() {
245
- var halfPi, x = this, Ctor = x.constructor, k = x.abs().cmp(1), pr = Ctor.precision, rm = Ctor.rounding;
246
- if (k !== -1) {
247
- return k === 0 ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) : new Ctor(NaN);
248
- }
249
- if (x.isZero())
250
- return getPi(Ctor, pr + 4, rm).times(0.5);
251
- Ctor.precision = pr + 6;
252
- Ctor.rounding = 1;
253
- x = x.asin();
254
- halfPi = getPi(Ctor, pr + 4, rm).times(0.5);
255
- Ctor.precision = pr;
256
- Ctor.rounding = rm;
257
- return halfPi.minus(x);
258
- };
259
- P.inverseHyperbolicCosine = P.acosh = function() {
260
- var pr, rm, x = this, Ctor = x.constructor;
261
- if (x.lte(1))
262
- return new Ctor(x.eq(1) ? 0 : NaN);
263
- if (!x.isFinite())
264
- return new Ctor(x);
265
- pr = Ctor.precision;
266
- rm = Ctor.rounding;
267
- Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;
268
- Ctor.rounding = 1;
269
- external = false;
270
- x = x.times(x).minus(1).sqrt().plus(x);
271
- external = true;
272
- Ctor.precision = pr;
273
- Ctor.rounding = rm;
274
- return x.ln();
275
- };
276
- P.inverseHyperbolicSine = P.asinh = function() {
277
- var pr, rm, x = this, Ctor = x.constructor;
278
- if (!x.isFinite() || x.isZero())
279
- return new Ctor(x);
280
- pr = Ctor.precision;
281
- rm = Ctor.rounding;
282
- Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;
283
- Ctor.rounding = 1;
284
- external = false;
285
- x = x.times(x).plus(1).sqrt().plus(x);
286
- external = true;
287
- Ctor.precision = pr;
288
- Ctor.rounding = rm;
289
- return x.ln();
290
- };
291
- P.inverseHyperbolicTangent = P.atanh = function() {
292
- var pr, rm, wpr, xsd, x = this, Ctor = x.constructor;
293
- if (!x.isFinite())
294
- return new Ctor(NaN);
295
- if (x.e >= 0)
296
- return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);
297
- pr = Ctor.precision;
298
- rm = Ctor.rounding;
299
- xsd = x.sd();
300
- if (Math.max(xsd, pr) < 2 * -x.e - 1)
301
- return finalise(new Ctor(x), pr, rm, true);
302
- Ctor.precision = wpr = xsd - x.e;
303
- x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);
304
- Ctor.precision = pr + 4;
305
- Ctor.rounding = 1;
306
- x = x.ln();
307
- Ctor.precision = pr;
308
- Ctor.rounding = rm;
309
- return x.times(0.5);
310
- };
311
- P.inverseSine = P.asin = function() {
312
- var halfPi, k, pr, rm, x = this, Ctor = x.constructor;
313
- if (x.isZero())
314
- return new Ctor(x);
315
- k = x.abs().cmp(1);
316
- pr = Ctor.precision;
317
- rm = Ctor.rounding;
318
- if (k !== -1) {
319
- if (k === 0) {
320
- halfPi = getPi(Ctor, pr + 4, rm).times(0.5);
321
- halfPi.s = x.s;
322
- return halfPi;
323
- }
324
- return new Ctor(NaN);
325
- }
326
- Ctor.precision = pr + 6;
327
- Ctor.rounding = 1;
328
- x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();
329
- Ctor.precision = pr;
330
- Ctor.rounding = rm;
331
- return x.times(2);
332
- };
333
- P.inverseTangent = P.atan = function() {
334
- var i, j, k, n, px, t, r, wpr, x2, x = this, Ctor = x.constructor, pr = Ctor.precision, rm = Ctor.rounding;
335
- if (!x.isFinite()) {
336
- if (!x.s)
337
- return new Ctor(NaN);
338
- if (pr + 4 <= PI_PRECISION) {
339
- r = getPi(Ctor, pr + 4, rm).times(0.5);
340
- r.s = x.s;
341
- return r;
342
- }
343
- } else if (x.isZero()) {
344
- return new Ctor(x);
345
- } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {
346
- r = getPi(Ctor, pr + 4, rm).times(0.25);
347
- r.s = x.s;
348
- return r;
349
- }
350
- Ctor.precision = wpr = pr + 10;
351
- Ctor.rounding = 1;
352
- k = Math.min(28, wpr / LOG_BASE + 2 | 0);
353
- for (i = k; i; --i)
354
- x = x.div(x.times(x).plus(1).sqrt().plus(1));
355
- external = false;
356
- j = Math.ceil(wpr / LOG_BASE);
357
- n = 1;
358
- x2 = x.times(x);
359
- r = new Ctor(x);
360
- px = x;
361
- for (; i !== -1; ) {
362
- px = px.times(x2);
363
- t = r.minus(px.div(n += 2));
364
- px = px.times(x2);
365
- r = t.plus(px.div(n += 2));
366
- if (r.d[j] !== void 0)
367
- for (i = j; r.d[i] === t.d[i] && i--; )
368
- ;
369
- }
370
- if (k)
371
- r = r.times(2 << k - 1);
372
- external = true;
373
- return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);
374
- };
375
- P.isFinite = function() {
376
- return !!this.d;
377
- };
378
- P.isInteger = P.isInt = function() {
379
- return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;
380
- };
381
- P.isNaN = function() {
382
- return !this.s;
383
- };
384
- P.isNegative = P.isNeg = function() {
385
- return this.s < 0;
386
- };
387
- P.isPositive = P.isPos = function() {
388
- return this.s > 0;
389
- };
390
- P.isZero = function() {
391
- return !!this.d && this.d[0] === 0;
392
- };
393
- P.lessThan = P.lt = function(y) {
394
- return this.cmp(y) < 0;
395
- };
396
- P.lessThanOrEqualTo = P.lte = function(y) {
397
- return this.cmp(y) < 1;
398
- };
399
- P.logarithm = P.log = function(base) {
400
- var isBase10, d, denominator, k, inf, num, sd, r, arg = this, Ctor = arg.constructor, pr = Ctor.precision, rm = Ctor.rounding, guard = 5;
401
- if (base == null) {
402
- base = new Ctor(10);
403
- isBase10 = true;
404
- } else {
405
- base = new Ctor(base);
406
- d = base.d;
407
- if (base.s < 0 || !d || !d[0] || base.eq(1))
408
- return new Ctor(NaN);
409
- isBase10 = base.eq(10);
410
- }
411
- d = arg.d;
412
- if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {
413
- return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);
414
- }
415
- if (isBase10) {
416
- if (d.length > 1) {
417
- inf = true;
418
- } else {
419
- for (k = d[0]; k % 10 === 0; )
420
- k /= 10;
421
- inf = k !== 1;
422
- }
423
- }
424
- external = false;
425
- sd = pr + guard;
426
- num = naturalLogarithm(arg, sd);
427
- denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);
428
- r = divide(num, denominator, sd, 1);
429
- if (checkRoundingDigits(r.d, k = pr, rm)) {
430
- do {
431
- sd += 10;
432
- num = naturalLogarithm(arg, sd);
433
- denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);
434
- r = divide(num, denominator, sd, 1);
435
- if (!inf) {
436
- if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {
437
- r = finalise(r, pr + 1, 0);
438
- }
439
- break;
440
- }
441
- } while (checkRoundingDigits(r.d, k += 10, rm));
442
- }
443
- external = true;
444
- return finalise(r, pr, rm);
445
- };
446
- P.minus = P.sub = function(y) {
447
- var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd, x = this, Ctor = x.constructor;
448
- y = new Ctor(y);
449
- if (!x.d || !y.d) {
450
- if (!x.s || !y.s)
451
- y = new Ctor(NaN);
452
- else if (x.d)
453
- y.s = -y.s;
454
- else
455
- y = new Ctor(y.d || x.s !== y.s ? x : NaN);
456
- return y;
457
- }
458
- if (x.s != y.s) {
459
- y.s = -y.s;
460
- return x.plus(y);
461
- }
462
- xd = x.d;
463
- yd = y.d;
464
- pr = Ctor.precision;
465
- rm = Ctor.rounding;
466
- if (!xd[0] || !yd[0]) {
467
- if (yd[0])
468
- y.s = -y.s;
469
- else if (xd[0])
470
- y = new Ctor(x);
471
- else
472
- return new Ctor(rm === 3 ? -0 : 0);
473
- return external ? finalise(y, pr, rm) : y;
474
- }
475
- e = mathfloor(y.e / LOG_BASE);
476
- xe = mathfloor(x.e / LOG_BASE);
477
- xd = xd.slice();
478
- k = xe - e;
479
- if (k) {
480
- xLTy = k < 0;
481
- if (xLTy) {
482
- d = xd;
483
- k = -k;
484
- len = yd.length;
485
- } else {
486
- d = yd;
487
- e = xe;
488
- len = xd.length;
489
- }
490
- i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;
491
- if (k > i) {
492
- k = i;
493
- d.length = 1;
494
- }
495
- d.reverse();
496
- for (i = k; i--; )
497
- d.push(0);
498
- d.reverse();
499
- } else {
500
- i = xd.length;
501
- len = yd.length;
502
- xLTy = i < len;
503
- if (xLTy)
504
- len = i;
505
- for (i = 0; i < len; i++) {
506
- if (xd[i] != yd[i]) {
507
- xLTy = xd[i] < yd[i];
508
- break;
509
- }
510
- }
511
- k = 0;
512
- }
513
- if (xLTy) {
514
- d = xd;
515
- xd = yd;
516
- yd = d;
517
- y.s = -y.s;
518
- }
519
- len = xd.length;
520
- for (i = yd.length - len; i > 0; --i)
521
- xd[len++] = 0;
522
- for (i = yd.length; i > k; ) {
523
- if (xd[--i] < yd[i]) {
524
- for (j = i; j && xd[--j] === 0; )
525
- xd[j] = BASE - 1;
526
- --xd[j];
527
- xd[i] += BASE;
528
- }
529
- xd[i] -= yd[i];
530
- }
531
- for (; xd[--len] === 0; )
532
- xd.pop();
533
- for (; xd[0] === 0; xd.shift())
534
- --e;
535
- if (!xd[0])
536
- return new Ctor(rm === 3 ? -0 : 0);
537
- y.d = xd;
538
- y.e = getBase10Exponent(xd, e);
539
- return external ? finalise(y, pr, rm) : y;
540
- };
541
- P.modulo = P.mod = function(y) {
542
- var q, x = this, Ctor = x.constructor;
543
- y = new Ctor(y);
544
- if (!x.d || !y.s || y.d && !y.d[0])
545
- return new Ctor(NaN);
546
- if (!y.d || x.d && !x.d[0]) {
547
- return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);
548
- }
549
- external = false;
550
- if (Ctor.modulo == 9) {
551
- q = divide(x, y.abs(), 0, 3, 1);
552
- q.s *= y.s;
553
- } else {
554
- q = divide(x, y, 0, Ctor.modulo, 1);
555
- }
556
- q = q.times(y);
557
- external = true;
558
- return x.minus(q);
559
- };
560
- P.naturalExponential = P.exp = function() {
561
- return naturalExponential(this);
562
- };
563
- P.naturalLogarithm = P.ln = function() {
564
- return naturalLogarithm(this);
565
- };
566
- P.negated = P.neg = function() {
567
- var x = new this.constructor(this);
568
- x.s = -x.s;
569
- return finalise(x);
570
- };
571
- P.plus = P.add = function(y) {
572
- var carry, d, e, i, k, len, pr, rm, xd, yd, x = this, Ctor = x.constructor;
573
- y = new Ctor(y);
574
- if (!x.d || !y.d) {
575
- if (!x.s || !y.s)
576
- y = new Ctor(NaN);
577
- else if (!x.d)
578
- y = new Ctor(y.d || x.s === y.s ? x : NaN);
579
- return y;
580
- }
581
- if (x.s != y.s) {
582
- y.s = -y.s;
583
- return x.minus(y);
584
- }
585
- xd = x.d;
586
- yd = y.d;
587
- pr = Ctor.precision;
588
- rm = Ctor.rounding;
589
- if (!xd[0] || !yd[0]) {
590
- if (!yd[0])
591
- y = new Ctor(x);
592
- return external ? finalise(y, pr, rm) : y;
593
- }
594
- k = mathfloor(x.e / LOG_BASE);
595
- e = mathfloor(y.e / LOG_BASE);
596
- xd = xd.slice();
597
- i = k - e;
598
- if (i) {
599
- if (i < 0) {
600
- d = xd;
601
- i = -i;
602
- len = yd.length;
603
- } else {
604
- d = yd;
605
- e = k;
606
- len = xd.length;
607
- }
608
- k = Math.ceil(pr / LOG_BASE);
609
- len = k > len ? k + 1 : len + 1;
610
- if (i > len) {
611
- i = len;
612
- d.length = 1;
613
- }
614
- d.reverse();
615
- for (; i--; )
616
- d.push(0);
617
- d.reverse();
618
- }
619
- len = xd.length;
620
- i = yd.length;
621
- if (len - i < 0) {
622
- i = len;
623
- d = yd;
624
- yd = xd;
625
- xd = d;
626
- }
627
- for (carry = 0; i; ) {
628
- carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;
629
- xd[i] %= BASE;
630
- }
631
- if (carry) {
632
- xd.unshift(carry);
633
- ++e;
634
- }
635
- for (len = xd.length; xd[--len] == 0; )
636
- xd.pop();
637
- y.d = xd;
638
- y.e = getBase10Exponent(xd, e);
639
- return external ? finalise(y, pr, rm) : y;
640
- };
641
- P.precision = P.sd = function(z) {
642
- var k, x = this;
643
- if (z !== void 0 && z !== !!z && z !== 1 && z !== 0)
644
- throw Error(invalidArgument + z);
645
- if (x.d) {
646
- k = getPrecision(x.d);
647
- if (z && x.e + 1 > k)
648
- k = x.e + 1;
649
- } else {
650
- k = NaN;
651
- }
652
- return k;
653
- };
654
- P.round = function() {
655
- var x = this, Ctor = x.constructor;
656
- return finalise(new Ctor(x), x.e + 1, Ctor.rounding);
657
- };
658
- P.sine = P.sin = function() {
659
- var pr, rm, x = this, Ctor = x.constructor;
660
- if (!x.isFinite())
661
- return new Ctor(NaN);
662
- if (x.isZero())
663
- return new Ctor(x);
664
- pr = Ctor.precision;
665
- rm = Ctor.rounding;
666
- Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;
667
- Ctor.rounding = 1;
668
- x = sine(Ctor, toLessThanHalfPi(Ctor, x));
669
- Ctor.precision = pr;
670
- Ctor.rounding = rm;
671
- return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);
672
- };
673
- P.squareRoot = P.sqrt = function() {
674
- var m, n, sd, r, rep, t, x = this, d = x.d, e = x.e, s = x.s, Ctor = x.constructor;
675
- if (s !== 1 || !d || !d[0]) {
676
- return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);
677
- }
678
- external = false;
679
- s = Math.sqrt(+x);
680
- if (s == 0 || s == 1 / 0) {
681
- n = digitsToString(d);
682
- if ((n.length + e) % 2 == 0)
683
- n += "0";
684
- s = Math.sqrt(n);
685
- e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);
686
- if (s == 1 / 0) {
687
- n = "5e" + e;
688
- } else {
689
- n = s.toExponential();
690
- n = n.slice(0, n.indexOf("e") + 1) + e;
691
- }
692
- r = new Ctor(n);
693
- } else {
694
- r = new Ctor(s.toString());
695
- }
696
- sd = (e = Ctor.precision) + 3;
697
- for (; ; ) {
698
- t = r;
699
- r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);
700
- if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {
701
- n = n.slice(sd - 3, sd + 1);
702
- if (n == "9999" || !rep && n == "4999") {
703
- if (!rep) {
704
- finalise(t, e + 1, 0);
705
- if (t.times(t).eq(x)) {
706
- r = t;
707
- break;
708
- }
709
- }
710
- sd += 4;
711
- rep = 1;
712
- } else {
713
- if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
714
- finalise(r, e + 1, 1);
715
- m = !r.times(r).eq(x);
716
- }
717
- break;
718
- }
719
- }
720
- }
721
- external = true;
722
- return finalise(r, e, Ctor.rounding, m);
723
- };
724
- P.tangent = P.tan = function() {
725
- var pr, rm, x = this, Ctor = x.constructor;
726
- if (!x.isFinite())
727
- return new Ctor(NaN);
728
- if (x.isZero())
729
- return new Ctor(x);
730
- pr = Ctor.precision;
731
- rm = Ctor.rounding;
732
- Ctor.precision = pr + 10;
733
- Ctor.rounding = 1;
734
- x = x.sin();
735
- x.s = 1;
736
- x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);
737
- Ctor.precision = pr;
738
- Ctor.rounding = rm;
739
- return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);
740
- };
741
- P.times = P.mul = function(y) {
742
- var carry, e, i, k, r, rL, t, xdL, ydL, x = this, Ctor = x.constructor, xd = x.d, yd = (y = new Ctor(y)).d;
743
- y.s *= x.s;
744
- if (!xd || !xd[0] || !yd || !yd[0]) {
745
- return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd ? NaN : !xd || !yd ? y.s / 0 : y.s * 0);
746
- }
747
- e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);
748
- xdL = xd.length;
749
- ydL = yd.length;
750
- if (xdL < ydL) {
751
- r = xd;
752
- xd = yd;
753
- yd = r;
754
- rL = xdL;
755
- xdL = ydL;
756
- ydL = rL;
757
- }
758
- r = [];
759
- rL = xdL + ydL;
760
- for (i = rL; i--; )
761
- r.push(0);
762
- for (i = ydL; --i >= 0; ) {
763
- carry = 0;
764
- for (k = xdL + i; k > i; ) {
765
- t = r[k] + yd[i] * xd[k - i - 1] + carry;
766
- r[k--] = t % BASE | 0;
767
- carry = t / BASE | 0;
768
- }
769
- r[k] = (r[k] + carry) % BASE | 0;
770
- }
771
- for (; !r[--rL]; )
772
- r.pop();
773
- if (carry)
774
- ++e;
775
- else
776
- r.shift();
777
- y.d = r;
778
- y.e = getBase10Exponent(r, e);
779
- return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;
780
- };
781
- P.toBinary = function(sd, rm) {
782
- return toStringBinary(this, 2, sd, rm);
783
- };
784
- P.toDecimalPlaces = P.toDP = function(dp, rm) {
785
- var x = this, Ctor = x.constructor;
786
- x = new Ctor(x);
787
- if (dp === void 0)
788
- return x;
789
- checkInt32(dp, 0, MAX_DIGITS);
790
- if (rm === void 0)
791
- rm = Ctor.rounding;
792
- else
793
- checkInt32(rm, 0, 8);
794
- return finalise(x, dp + x.e + 1, rm);
795
- };
796
- P.toExponential = function(dp, rm) {
797
- var str, x = this, Ctor = x.constructor;
798
- if (dp === void 0) {
799
- str = finiteToString(x, true);
800
- } else {
801
- checkInt32(dp, 0, MAX_DIGITS);
802
- if (rm === void 0)
803
- rm = Ctor.rounding;
804
- else
805
- checkInt32(rm, 0, 8);
806
- x = finalise(new Ctor(x), dp + 1, rm);
807
- str = finiteToString(x, true, dp + 1);
808
- }
809
- return x.isNeg() && !x.isZero() ? "-" + str : str;
810
- };
811
- P.toFixed = function(dp, rm) {
812
- var str, y, x = this, Ctor = x.constructor;
813
- if (dp === void 0) {
814
- str = finiteToString(x);
815
- } else {
816
- checkInt32(dp, 0, MAX_DIGITS);
817
- if (rm === void 0)
818
- rm = Ctor.rounding;
819
- else
820
- checkInt32(rm, 0, 8);
821
- y = finalise(new Ctor(x), dp + x.e + 1, rm);
822
- str = finiteToString(y, false, dp + y.e + 1);
823
- }
824
- return x.isNeg() && !x.isZero() ? "-" + str : str;
825
- };
826
- P.toFraction = function(maxD) {
827
- var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r, x = this, xd = x.d, Ctor = x.constructor;
828
- if (!xd)
829
- return new Ctor(x);
830
- n1 = d0 = new Ctor(1);
831
- d1 = n0 = new Ctor(0);
832
- d = new Ctor(d1);
833
- e = d.e = getPrecision(xd) - x.e - 1;
834
- k = e % LOG_BASE;
835
- d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);
836
- if (maxD == null) {
837
- maxD = e > 0 ? d : n1;
838
- } else {
839
- n = new Ctor(maxD);
840
- if (!n.isInt() || n.lt(n1))
841
- throw Error(invalidArgument + n);
842
- maxD = n.gt(d) ? e > 0 ? d : n1 : n;
843
- }
844
- external = false;
845
- n = new Ctor(digitsToString(xd));
846
- pr = Ctor.precision;
847
- Ctor.precision = e = xd.length * LOG_BASE * 2;
848
- for (; ; ) {
849
- q = divide(n, d, 0, 1, 1);
850
- d2 = d0.plus(q.times(d1));
851
- if (d2.cmp(maxD) == 1)
852
- break;
853
- d0 = d1;
854
- d1 = d2;
855
- d2 = n1;
856
- n1 = n0.plus(q.times(d2));
857
- n0 = d2;
858
- d2 = d;
859
- d = n.minus(q.times(d2));
860
- n = d2;
861
- }
862
- d2 = divide(maxD.minus(d0), d1, 0, 1, 1);
863
- n0 = n0.plus(d2.times(n1));
864
- d0 = d0.plus(d2.times(d1));
865
- n0.s = n1.s = x.s;
866
- r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];
867
- Ctor.precision = pr;
868
- external = true;
869
- return r;
870
- };
871
- P.toHexadecimal = P.toHex = function(sd, rm) {
872
- return toStringBinary(this, 16, sd, rm);
873
- };
874
- P.toNearest = function(y, rm) {
875
- var x = this, Ctor = x.constructor;
876
- x = new Ctor(x);
877
- if (y == null) {
878
- if (!x.d)
879
- return x;
880
- y = new Ctor(1);
881
- rm = Ctor.rounding;
882
- } else {
883
- y = new Ctor(y);
884
- if (rm === void 0) {
885
- rm = Ctor.rounding;
886
- } else {
887
- checkInt32(rm, 0, 8);
888
- }
889
- if (!x.d)
890
- return y.s ? x : y;
891
- if (!y.d) {
892
- if (y.s)
893
- y.s = x.s;
894
- return y;
895
- }
896
- }
897
- if (y.d[0]) {
898
- external = false;
899
- x = divide(x, y, 0, rm, 1).times(y);
900
- external = true;
901
- finalise(x);
902
- } else {
903
- y.s = x.s;
904
- x = y;
905
- }
906
- return x;
907
- };
908
- P.toNumber = function() {
909
- return +this;
910
- };
911
- P.toOctal = function(sd, rm) {
912
- return toStringBinary(this, 8, sd, rm);
913
- };
914
- P.toPower = P.pow = function(y) {
915
- var e, k, pr, r, rm, s, x = this, Ctor = x.constructor, yn = +(y = new Ctor(y));
916
- if (!x.d || !y.d || !x.d[0] || !y.d[0])
917
- return new Ctor(mathpow(+x, yn));
918
- x = new Ctor(x);
919
- if (x.eq(1))
920
- return x;
921
- pr = Ctor.precision;
922
- rm = Ctor.rounding;
923
- if (y.eq(1))
924
- return finalise(x, pr, rm);
925
- e = mathfloor(y.e / LOG_BASE);
926
- if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {
927
- r = intPow(Ctor, x, k, pr);
928
- return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);
929
- }
930
- s = x.s;
931
- if (s < 0) {
932
- if (e < y.d.length - 1)
933
- return new Ctor(NaN);
934
- if ((y.d[e] & 1) == 0)
935
- s = 1;
936
- if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {
937
- x.s = s;
938
- return x;
939
- }
940
- }
941
- k = mathpow(+x, yn);
942
- e = k == 0 || !isFinite(k) ? mathfloor(yn * (Math.log("0." + digitsToString(x.d)) / Math.LN10 + x.e + 1)) : new Ctor(k + "").e;
943
- if (e > Ctor.maxE + 1 || e < Ctor.minE - 1)
944
- return new Ctor(e > 0 ? s / 0 : 0);
945
- external = false;
946
- Ctor.rounding = x.s = 1;
947
- k = Math.min(12, (e + "").length);
948
- r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);
949
- if (r.d) {
950
- r = finalise(r, pr + 5, 1);
951
- if (checkRoundingDigits(r.d, pr, rm)) {
952
- e = pr + 10;
953
- r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);
954
- if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {
955
- r = finalise(r, pr + 1, 0);
956
- }
957
- }
958
- }
959
- r.s = s;
960
- external = true;
961
- Ctor.rounding = rm;
962
- return finalise(r, pr, rm);
963
- };
964
- P.toPrecision = function(sd, rm) {
965
- var str, x = this, Ctor = x.constructor;
966
- if (sd === void 0) {
967
- str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
968
- } else {
969
- checkInt32(sd, 1, MAX_DIGITS);
970
- if (rm === void 0)
971
- rm = Ctor.rounding;
972
- else
973
- checkInt32(rm, 0, 8);
974
- x = finalise(new Ctor(x), sd, rm);
975
- str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);
976
- }
977
- return x.isNeg() && !x.isZero() ? "-" + str : str;
978
- };
979
- P.toSignificantDigits = P.toSD = function(sd, rm) {
980
- var x = this, Ctor = x.constructor;
981
- if (sd === void 0) {
982
- sd = Ctor.precision;
983
- rm = Ctor.rounding;
984
- } else {
985
- checkInt32(sd, 1, MAX_DIGITS);
986
- if (rm === void 0)
987
- rm = Ctor.rounding;
988
- else
989
- checkInt32(rm, 0, 8);
990
- }
991
- return finalise(new Ctor(x), sd, rm);
992
- };
993
- P.toString = function() {
994
- var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
995
- return x.isNeg() && !x.isZero() ? "-" + str : str;
996
- };
997
- P.truncated = P.trunc = function() {
998
- return finalise(new this.constructor(this), this.e + 1, 1);
999
- };
1000
- P.valueOf = P.toJSON = function() {
1001
- var x = this, Ctor = x.constructor, str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);
1002
- return x.isNeg() ? "-" + str : str;
1003
- };
1004
- function digitsToString(d) {
1005
- var i, k, ws, indexOfLastWord = d.length - 1, str = "", w = d[0];
1006
- if (indexOfLastWord > 0) {
1007
- str += w;
1008
- for (i = 1; i < indexOfLastWord; i++) {
1009
- ws = d[i] + "";
1010
- k = LOG_BASE - ws.length;
1011
- if (k)
1012
- str += getZeroString(k);
1013
- str += ws;
1014
- }
1015
- w = d[i];
1016
- ws = w + "";
1017
- k = LOG_BASE - ws.length;
1018
- if (k)
1019
- str += getZeroString(k);
1020
- } else if (w === 0) {
1021
- return "0";
1022
- }
1023
- for (; w % 10 === 0; )
1024
- w /= 10;
1025
- return str + w;
1026
- }
1027
- function checkInt32(i, min2, max2) {
1028
- if (i !== ~~i || i < min2 || i > max2) {
1029
- throw Error(invalidArgument + i);
1030
- }
1031
- }
1032
- function checkRoundingDigits(d, i, rm, repeating) {
1033
- var di, k, r, rd;
1034
- for (k = d[0]; k >= 10; k /= 10)
1035
- --i;
1036
- if (--i < 0) {
1037
- i += LOG_BASE;
1038
- di = 0;
1039
- } else {
1040
- di = Math.ceil((i + 1) / LOG_BASE);
1041
- i %= LOG_BASE;
1042
- }
1043
- k = mathpow(10, LOG_BASE - i);
1044
- rd = d[di] % k | 0;
1045
- if (repeating == null) {
1046
- if (i < 3) {
1047
- if (i == 0)
1048
- rd = rd / 100 | 0;
1049
- else if (i == 1)
1050
- rd = rd / 10 | 0;
1051
- r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 5e4 || rd == 0;
1052
- } else {
1053
- r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 || (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;
1054
- }
1055
- } else {
1056
- if (i < 4) {
1057
- if (i == 0)
1058
- rd = rd / 1e3 | 0;
1059
- else if (i == 1)
1060
- rd = rd / 100 | 0;
1061
- else if (i == 2)
1062
- rd = rd / 10 | 0;
1063
- r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;
1064
- } else {
1065
- r = ((repeating || rm < 4) && rd + 1 == k || !repeating && rm > 3 && rd + 1 == k / 2) && (d[di + 1] / k / 1e3 | 0) == mathpow(10, i - 3) - 1;
1066
- }
1067
- }
1068
- return r;
1069
- }
1070
- function convertBase(str, baseIn, baseOut) {
1071
- var j, arr = [0], arrL, i = 0, strL = str.length;
1072
- for (; i < strL; ) {
1073
- for (arrL = arr.length; arrL--; )
1074
- arr[arrL] *= baseIn;
1075
- arr[0] += NUMERALS.indexOf(str.charAt(i++));
1076
- for (j = 0; j < arr.length; j++) {
1077
- if (arr[j] > baseOut - 1) {
1078
- if (arr[j + 1] === void 0)
1079
- arr[j + 1] = 0;
1080
- arr[j + 1] += arr[j] / baseOut | 0;
1081
- arr[j] %= baseOut;
1082
- }
1083
- }
1084
- }
1085
- return arr.reverse();
1086
- }
1087
- function cosine(Ctor, x) {
1088
- var k, y, len = x.d.length;
1089
- if (len < 32) {
1090
- k = Math.ceil(len / 3);
1091
- y = (1 / tinyPow(4, k)).toString();
1092
- } else {
1093
- k = 16;
1094
- y = "2.3283064365386962890625e-10";
1095
- }
1096
- Ctor.precision += k;
1097
- x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));
1098
- for (var i = k; i--; ) {
1099
- var cos2x = x.times(x);
1100
- x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);
1101
- }
1102
- Ctor.precision -= k;
1103
- return x;
1104
- }
1105
- var divide = function() {
1106
- function multiplyInteger(x, k, base) {
1107
- var temp, carry = 0, i = x.length;
1108
- for (x = x.slice(); i--; ) {
1109
- temp = x[i] * k + carry;
1110
- x[i] = temp % base | 0;
1111
- carry = temp / base | 0;
1112
- }
1113
- if (carry)
1114
- x.unshift(carry);
1115
- return x;
1116
- }
1117
- function compare(a, b, aL, bL) {
1118
- var i, r;
1119
- if (aL != bL) {
1120
- r = aL > bL ? 1 : -1;
1121
- } else {
1122
- for (i = r = 0; i < aL; i++) {
1123
- if (a[i] != b[i]) {
1124
- r = a[i] > b[i] ? 1 : -1;
1125
- break;
1126
- }
1127
- }
1128
- }
1129
- return r;
1130
- }
1131
- function subtract(a, b, aL, base) {
1132
- var i = 0;
1133
- for (; aL--; ) {
1134
- a[aL] -= i;
1135
- i = a[aL] < b[aL] ? 1 : 0;
1136
- a[aL] = i * base + a[aL] - b[aL];
1137
- }
1138
- for (; !a[0] && a.length > 1; )
1139
- a.shift();
1140
- }
1141
- return function(x, y, pr, rm, dp, base) {
1142
- var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz, Ctor = x.constructor, sign2 = x.s == y.s ? 1 : -1, xd = x.d, yd = y.d;
1143
- if (!xd || !xd[0] || !yd || !yd[0]) {
1144
- return new Ctor(!x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN : xd && xd[0] == 0 || !yd ? sign2 * 0 : sign2 / 0);
1145
- }
1146
- if (base) {
1147
- logBase = 1;
1148
- e = x.e - y.e;
1149
- } else {
1150
- base = BASE;
1151
- logBase = LOG_BASE;
1152
- e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);
1153
- }
1154
- yL = yd.length;
1155
- xL = xd.length;
1156
- q = new Ctor(sign2);
1157
- qd = q.d = [];
1158
- for (i = 0; yd[i] == (xd[i] || 0); i++)
1159
- ;
1160
- if (yd[i] > (xd[i] || 0))
1161
- e--;
1162
- if (pr == null) {
1163
- sd = pr = Ctor.precision;
1164
- rm = Ctor.rounding;
1165
- } else if (dp) {
1166
- sd = pr + (x.e - y.e) + 1;
1167
- } else {
1168
- sd = pr;
1169
- }
1170
- if (sd < 0) {
1171
- qd.push(1);
1172
- more = true;
1173
- } else {
1174
- sd = sd / logBase + 2 | 0;
1175
- i = 0;
1176
- if (yL == 1) {
1177
- k = 0;
1178
- yd = yd[0];
1179
- sd++;
1180
- for (; (i < xL || k) && sd--; i++) {
1181
- t = k * base + (xd[i] || 0);
1182
- qd[i] = t / yd | 0;
1183
- k = t % yd | 0;
1184
- }
1185
- more = k || i < xL;
1186
- } else {
1187
- k = base / (yd[0] + 1) | 0;
1188
- if (k > 1) {
1189
- yd = multiplyInteger(yd, k, base);
1190
- xd = multiplyInteger(xd, k, base);
1191
- yL = yd.length;
1192
- xL = xd.length;
1193
- }
1194
- xi = yL;
1195
- rem = xd.slice(0, yL);
1196
- remL = rem.length;
1197
- for (; remL < yL; )
1198
- rem[remL++] = 0;
1199
- yz = yd.slice();
1200
- yz.unshift(0);
1201
- yd0 = yd[0];
1202
- if (yd[1] >= base / 2)
1203
- ++yd0;
1204
- do {
1205
- k = 0;
1206
- cmp = compare(yd, rem, yL, remL);
1207
- if (cmp < 0) {
1208
- rem0 = rem[0];
1209
- if (yL != remL)
1210
- rem0 = rem0 * base + (rem[1] || 0);
1211
- k = rem0 / yd0 | 0;
1212
- if (k > 1) {
1213
- if (k >= base)
1214
- k = base - 1;
1215
- prod = multiplyInteger(yd, k, base);
1216
- prodL = prod.length;
1217
- remL = rem.length;
1218
- cmp = compare(prod, rem, prodL, remL);
1219
- if (cmp == 1) {
1220
- k--;
1221
- subtract(prod, yL < prodL ? yz : yd, prodL, base);
1222
- }
1223
- } else {
1224
- if (k == 0)
1225
- cmp = k = 1;
1226
- prod = yd.slice();
1227
- }
1228
- prodL = prod.length;
1229
- if (prodL < remL)
1230
- prod.unshift(0);
1231
- subtract(rem, prod, remL, base);
1232
- if (cmp == -1) {
1233
- remL = rem.length;
1234
- cmp = compare(yd, rem, yL, remL);
1235
- if (cmp < 1) {
1236
- k++;
1237
- subtract(rem, yL < remL ? yz : yd, remL, base);
1238
- }
1239
- }
1240
- remL = rem.length;
1241
- } else if (cmp === 0) {
1242
- k++;
1243
- rem = [0];
1244
- }
1245
- qd[i++] = k;
1246
- if (cmp && rem[0]) {
1247
- rem[remL++] = xd[xi] || 0;
1248
- } else {
1249
- rem = [xd[xi]];
1250
- remL = 1;
1251
- }
1252
- } while ((xi++ < xL || rem[0] !== void 0) && sd--);
1253
- more = rem[0] !== void 0;
1254
- }
1255
- if (!qd[0])
1256
- qd.shift();
1257
- }
1258
- if (logBase == 1) {
1259
- q.e = e;
1260
- inexact = more;
1261
- } else {
1262
- for (i = 1, k = qd[0]; k >= 10; k /= 10)
1263
- i++;
1264
- q.e = i + e * logBase - 1;
1265
- finalise(q, dp ? pr + q.e + 1 : pr, rm, more);
1266
- }
1267
- return q;
1268
- };
1269
- }();
1270
- function finalise(x, sd, rm, isTruncated) {
1271
- var digits, i, j, k, rd, roundUp, w, xd, xdi, Ctor = x.constructor;
1272
- out:
1273
- if (sd != null) {
1274
- xd = x.d;
1275
- if (!xd)
1276
- return x;
1277
- for (digits = 1, k = xd[0]; k >= 10; k /= 10)
1278
- digits++;
1279
- i = sd - digits;
1280
- if (i < 0) {
1281
- i += LOG_BASE;
1282
- j = sd;
1283
- w = xd[xdi = 0];
1284
- rd = w / mathpow(10, digits - j - 1) % 10 | 0;
1285
- } else {
1286
- xdi = Math.ceil((i + 1) / LOG_BASE);
1287
- k = xd.length;
1288
- if (xdi >= k) {
1289
- if (isTruncated) {
1290
- for (; k++ <= xdi; )
1291
- xd.push(0);
1292
- w = rd = 0;
1293
- digits = 1;
1294
- i %= LOG_BASE;
1295
- j = i - LOG_BASE + 1;
1296
- } else {
1297
- break out;
1298
- }
1299
- } else {
1300
- w = k = xd[xdi];
1301
- for (digits = 1; k >= 10; k /= 10)
1302
- digits++;
1303
- i %= LOG_BASE;
1304
- j = i - LOG_BASE + digits;
1305
- rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;
1306
- }
1307
- }
1308
- isTruncated = isTruncated || sd < 0 || xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));
1309
- roundUp = rm < 4 ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 && (i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7));
1310
- if (sd < 1 || !xd[0]) {
1311
- xd.length = 0;
1312
- if (roundUp) {
1313
- sd -= x.e + 1;
1314
- xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);
1315
- x.e = -sd || 0;
1316
- } else {
1317
- xd[0] = x.e = 0;
1318
- }
1319
- return x;
1320
- }
1321
- if (i == 0) {
1322
- xd.length = xdi;
1323
- k = 1;
1324
- xdi--;
1325
- } else {
1326
- xd.length = xdi + 1;
1327
- k = mathpow(10, LOG_BASE - i);
1328
- xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;
1329
- }
1330
- if (roundUp) {
1331
- for (; ; ) {
1332
- if (xdi == 0) {
1333
- for (i = 1, j = xd[0]; j >= 10; j /= 10)
1334
- i++;
1335
- j = xd[0] += k;
1336
- for (k = 1; j >= 10; j /= 10)
1337
- k++;
1338
- if (i != k) {
1339
- x.e++;
1340
- if (xd[0] == BASE)
1341
- xd[0] = 1;
1342
- }
1343
- break;
1344
- } else {
1345
- xd[xdi] += k;
1346
- if (xd[xdi] != BASE)
1347
- break;
1348
- xd[xdi--] = 0;
1349
- k = 1;
1350
- }
1351
- }
1352
- }
1353
- for (i = xd.length; xd[--i] === 0; )
1354
- xd.pop();
1355
- }
1356
- if (external) {
1357
- if (x.e > Ctor.maxE) {
1358
- x.d = null;
1359
- x.e = NaN;
1360
- } else if (x.e < Ctor.minE) {
1361
- x.e = 0;
1362
- x.d = [0];
1363
- }
1364
- }
1365
- return x;
1366
- }
1367
- function finiteToString(x, isExp, sd) {
1368
- if (!x.isFinite())
1369
- return nonFiniteToString(x);
1370
- var k, e = x.e, str = digitsToString(x.d), len = str.length;
1371
- if (isExp) {
1372
- if (sd && (k = sd - len) > 0) {
1373
- str = str.charAt(0) + "." + str.slice(1) + getZeroString(k);
1374
- } else if (len > 1) {
1375
- str = str.charAt(0) + "." + str.slice(1);
1376
- }
1377
- str = str + (x.e < 0 ? "e" : "e+") + x.e;
1378
- } else if (e < 0) {
1379
- str = "0." + getZeroString(-e - 1) + str;
1380
- if (sd && (k = sd - len) > 0)
1381
- str += getZeroString(k);
1382
- } else if (e >= len) {
1383
- str += getZeroString(e + 1 - len);
1384
- if (sd && (k = sd - e - 1) > 0)
1385
- str = str + "." + getZeroString(k);
1386
- } else {
1387
- if ((k = e + 1) < len)
1388
- str = str.slice(0, k) + "." + str.slice(k);
1389
- if (sd && (k = sd - len) > 0) {
1390
- if (e + 1 === len)
1391
- str += ".";
1392
- str += getZeroString(k);
1393
- }
1394
- }
1395
- return str;
1396
- }
1397
- function getBase10Exponent(digits, e) {
1398
- var w = digits[0];
1399
- for (e *= LOG_BASE; w >= 10; w /= 10)
1400
- e++;
1401
- return e;
1402
- }
1403
- function getLn10(Ctor, sd, pr) {
1404
- if (sd > LN10_PRECISION) {
1405
- external = true;
1406
- if (pr)
1407
- Ctor.precision = pr;
1408
- throw Error(precisionLimitExceeded);
1409
- }
1410
- return finalise(new Ctor(LN10), sd, 1, true);
1411
- }
1412
- function getPi(Ctor, sd, rm) {
1413
- if (sd > PI_PRECISION)
1414
- throw Error(precisionLimitExceeded);
1415
- return finalise(new Ctor(PI), sd, rm, true);
1416
- }
1417
- function getPrecision(digits) {
1418
- var w = digits.length - 1, len = w * LOG_BASE + 1;
1419
- w = digits[w];
1420
- if (w) {
1421
- for (; w % 10 == 0; w /= 10)
1422
- len--;
1423
- for (w = digits[0]; w >= 10; w /= 10)
1424
- len++;
1425
- }
1426
- return len;
1427
- }
1428
- function getZeroString(k) {
1429
- var zs = "";
1430
- for (; k--; )
1431
- zs += "0";
1432
- return zs;
1433
- }
1434
- function intPow(Ctor, x, n, pr) {
1435
- var isTruncated, r = new Ctor(1), k = Math.ceil(pr / LOG_BASE + 4);
1436
- external = false;
1437
- for (; ; ) {
1438
- if (n % 2) {
1439
- r = r.times(x);
1440
- if (truncate(r.d, k))
1441
- isTruncated = true;
1442
- }
1443
- n = mathfloor(n / 2);
1444
- if (n === 0) {
1445
- n = r.d.length - 1;
1446
- if (isTruncated && r.d[n] === 0)
1447
- ++r.d[n];
1448
- break;
1449
- }
1450
- x = x.times(x);
1451
- truncate(x.d, k);
1452
- }
1453
- external = true;
1454
- return r;
1455
- }
1456
- function isOdd(n) {
1457
- return n.d[n.d.length - 1] & 1;
1458
- }
1459
- function maxOrMin(Ctor, args, ltgt) {
1460
- var y, x = new Ctor(args[0]), i = 0;
1461
- for (; ++i < args.length; ) {
1462
- y = new Ctor(args[i]);
1463
- if (!y.s) {
1464
- x = y;
1465
- break;
1466
- } else if (x[ltgt](y)) {
1467
- x = y;
1468
- }
1469
- }
1470
- return x;
1471
- }
1472
- function naturalExponential(x, sd) {
1473
- var denominator, guard, j, pow2, sum, t, wpr, rep = 0, i = 0, k = 0, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision;
1474
- if (!x.d || !x.d[0] || x.e > 17) {
1475
- return new Ctor(x.d ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0 : x.s ? x.s < 0 ? 0 : x : 0 / 0);
1476
- }
1477
- if (sd == null) {
1478
- external = false;
1479
- wpr = pr;
1480
- } else {
1481
- wpr = sd;
1482
- }
1483
- t = new Ctor(0.03125);
1484
- while (x.e > -2) {
1485
- x = x.times(t);
1486
- k += 5;
1487
- }
1488
- guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;
1489
- wpr += guard;
1490
- denominator = pow2 = sum = new Ctor(1);
1491
- Ctor.precision = wpr;
1492
- for (; ; ) {
1493
- pow2 = finalise(pow2.times(x), wpr, 1);
1494
- denominator = denominator.times(++i);
1495
- t = sum.plus(divide(pow2, denominator, wpr, 1));
1496
- if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {
1497
- j = k;
1498
- while (j--)
1499
- sum = finalise(sum.times(sum), wpr, 1);
1500
- if (sd == null) {
1501
- if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {
1502
- Ctor.precision = wpr += 10;
1503
- denominator = pow2 = t = new Ctor(1);
1504
- i = 0;
1505
- rep++;
1506
- } else {
1507
- return finalise(sum, Ctor.precision = pr, rm, external = true);
1508
- }
1509
- } else {
1510
- Ctor.precision = pr;
1511
- return sum;
1512
- }
1513
- }
1514
- sum = t;
1515
- }
1516
- }
1517
- function naturalLogarithm(y, sd) {
1518
- var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2, n = 1, guard = 10, x = y, xd = x.d, Ctor = x.constructor, rm = Ctor.rounding, pr = Ctor.precision;
1519
- if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {
1520
- return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);
1521
- }
1522
- if (sd == null) {
1523
- external = false;
1524
- wpr = pr;
1525
- } else {
1526
- wpr = sd;
1527
- }
1528
- Ctor.precision = wpr += guard;
1529
- c = digitsToString(xd);
1530
- c0 = c.charAt(0);
1531
- if (Math.abs(e = x.e) < 15e14) {
1532
- while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {
1533
- x = x.times(y);
1534
- c = digitsToString(x.d);
1535
- c0 = c.charAt(0);
1536
- n++;
1537
- }
1538
- e = x.e;
1539
- if (c0 > 1) {
1540
- x = new Ctor("0." + c);
1541
- e++;
1542
- } else {
1543
- x = new Ctor(c0 + "." + c.slice(1));
1544
- }
1545
- } else {
1546
- t = getLn10(Ctor, wpr + 2, pr).times(e + "");
1547
- x = naturalLogarithm(new Ctor(c0 + "." + c.slice(1)), wpr - guard).plus(t);
1548
- Ctor.precision = pr;
1549
- return sd == null ? finalise(x, pr, rm, external = true) : x;
1550
- }
1551
- x1 = x;
1552
- sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);
1553
- x2 = finalise(x.times(x), wpr, 1);
1554
- denominator = 3;
1555
- for (; ; ) {
1556
- numerator = finalise(numerator.times(x2), wpr, 1);
1557
- t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));
1558
- if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {
1559
- sum = sum.times(2);
1560
- if (e !== 0)
1561
- sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ""));
1562
- sum = divide(sum, new Ctor(n), wpr, 1);
1563
- if (sd == null) {
1564
- if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {
1565
- Ctor.precision = wpr += guard;
1566
- t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);
1567
- x2 = finalise(x.times(x), wpr, 1);
1568
- denominator = rep = 1;
1569
- } else {
1570
- return finalise(sum, Ctor.precision = pr, rm, external = true);
1571
- }
1572
- } else {
1573
- Ctor.precision = pr;
1574
- return sum;
1575
- }
1576
- }
1577
- sum = t;
1578
- denominator += 2;
1579
- }
1580
- }
1581
- function nonFiniteToString(x) {
1582
- return String(x.s * x.s / 0);
1583
- }
1584
- function parseDecimal(x, str) {
1585
- var e, i, len;
1586
- if ((e = str.indexOf(".")) > -1)
1587
- str = str.replace(".", "");
1588
- if ((i = str.search(/e/i)) > 0) {
1589
- if (e < 0)
1590
- e = i;
1591
- e += +str.slice(i + 1);
1592
- str = str.substring(0, i);
1593
- } else if (e < 0) {
1594
- e = str.length;
1595
- }
1596
- for (i = 0; str.charCodeAt(i) === 48; i++)
1597
- ;
1598
- for (len = str.length; str.charCodeAt(len - 1) === 48; --len)
1599
- ;
1600
- str = str.slice(i, len);
1601
- if (str) {
1602
- len -= i;
1603
- x.e = e = e - i - 1;
1604
- x.d = [];
1605
- i = (e + 1) % LOG_BASE;
1606
- if (e < 0)
1607
- i += LOG_BASE;
1608
- if (i < len) {
1609
- if (i)
1610
- x.d.push(+str.slice(0, i));
1611
- for (len -= LOG_BASE; i < len; )
1612
- x.d.push(+str.slice(i, i += LOG_BASE));
1613
- str = str.slice(i);
1614
- i = LOG_BASE - str.length;
1615
- } else {
1616
- i -= len;
1617
- }
1618
- for (; i--; )
1619
- str += "0";
1620
- x.d.push(+str);
1621
- if (external) {
1622
- if (x.e > x.constructor.maxE) {
1623
- x.d = null;
1624
- x.e = NaN;
1625
- } else if (x.e < x.constructor.minE) {
1626
- x.e = 0;
1627
- x.d = [0];
1628
- }
1629
- }
1630
- } else {
1631
- x.e = 0;
1632
- x.d = [0];
1633
- }
1634
- return x;
1635
- }
1636
- function parseOther(x, str) {
1637
- var base, Ctor, divisor, i, isFloat, len, p, xd, xe;
1638
- if (str === "Infinity" || str === "NaN") {
1639
- if (!+str)
1640
- x.s = NaN;
1641
- x.e = NaN;
1642
- x.d = null;
1643
- return x;
1644
- }
1645
- if (isHex.test(str)) {
1646
- base = 16;
1647
- str = str.toLowerCase();
1648
- } else if (isBinary.test(str)) {
1649
- base = 2;
1650
- } else if (isOctal.test(str)) {
1651
- base = 8;
1652
- } else {
1653
- throw Error(invalidArgument + str);
1654
- }
1655
- i = str.search(/p/i);
1656
- if (i > 0) {
1657
- p = +str.slice(i + 1);
1658
- str = str.substring(2, i);
1659
- } else {
1660
- str = str.slice(2);
1661
- }
1662
- i = str.indexOf(".");
1663
- isFloat = i >= 0;
1664
- Ctor = x.constructor;
1665
- if (isFloat) {
1666
- str = str.replace(".", "");
1667
- len = str.length;
1668
- i = len - i;
1669
- divisor = intPow(Ctor, new Ctor(base), i, i * 2);
1670
- }
1671
- xd = convertBase(str, base, BASE);
1672
- xe = xd.length - 1;
1673
- for (i = xe; xd[i] === 0; --i)
1674
- xd.pop();
1675
- if (i < 0)
1676
- return new Ctor(x.s * 0);
1677
- x.e = getBase10Exponent(xd, xe);
1678
- x.d = xd;
1679
- external = false;
1680
- if (isFloat)
1681
- x = divide(x, divisor, len * 4);
1682
- if (p)
1683
- x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));
1684
- external = true;
1685
- return x;
1686
- }
1687
- function sine(Ctor, x) {
1688
- var k, len = x.d.length;
1689
- if (len < 3)
1690
- return taylorSeries(Ctor, 2, x, x);
1691
- k = 1.4 * Math.sqrt(len);
1692
- k = k > 16 ? 16 : k | 0;
1693
- x = x.times(1 / tinyPow(5, k));
1694
- x = taylorSeries(Ctor, 2, x, x);
1695
- var sin2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20);
1696
- for (; k--; ) {
1697
- sin2_x = x.times(x);
1698
- x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));
1699
- }
1700
- return x;
1701
- }
1702
- function taylorSeries(Ctor, n, x, y, isHyperbolic) {
1703
- var j, t, u, x2, i = 1, pr = Ctor.precision, k = Math.ceil(pr / LOG_BASE);
1704
- external = false;
1705
- x2 = x.times(x);
1706
- u = new Ctor(y);
1707
- for (; ; ) {
1708
- t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);
1709
- u = isHyperbolic ? y.plus(t) : y.minus(t);
1710
- y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);
1711
- t = u.plus(y);
1712
- if (t.d[k] !== void 0) {
1713
- for (j = k; t.d[j] === u.d[j] && j--; )
1714
- ;
1715
- if (j == -1)
1716
- break;
1717
- }
1718
- j = u;
1719
- u = y;
1720
- y = t;
1721
- t = j;
1722
- i++;
1723
- }
1724
- external = true;
1725
- t.d.length = k + 1;
1726
- return t;
1727
- }
1728
- function tinyPow(b, e) {
1729
- var n = b;
1730
- while (--e)
1731
- n *= b;
1732
- return n;
1733
- }
1734
- function toLessThanHalfPi(Ctor, x) {
1735
- var t, isNeg = x.s < 0, pi = getPi(Ctor, Ctor.precision, 1), halfPi = pi.times(0.5);
1736
- x = x.abs();
1737
- if (x.lte(halfPi)) {
1738
- quadrant = isNeg ? 4 : 1;
1739
- return x;
1740
- }
1741
- t = x.divToInt(pi);
1742
- if (t.isZero()) {
1743
- quadrant = isNeg ? 3 : 2;
1744
- } else {
1745
- x = x.minus(t.times(pi));
1746
- if (x.lte(halfPi)) {
1747
- quadrant = isOdd(t) ? isNeg ? 2 : 3 : isNeg ? 4 : 1;
1748
- return x;
1749
- }
1750
- quadrant = isOdd(t) ? isNeg ? 1 : 4 : isNeg ? 3 : 2;
1751
- }
1752
- return x.minus(pi).abs();
1753
- }
1754
- function toStringBinary(x, baseOut, sd, rm) {
1755
- var base, e, i, k, len, roundUp, str, xd, y, Ctor = x.constructor, isExp = sd !== void 0;
1756
- if (isExp) {
1757
- checkInt32(sd, 1, MAX_DIGITS);
1758
- if (rm === void 0)
1759
- rm = Ctor.rounding;
1760
- else
1761
- checkInt32(rm, 0, 8);
1762
- } else {
1763
- sd = Ctor.precision;
1764
- rm = Ctor.rounding;
1765
- }
1766
- if (!x.isFinite()) {
1767
- str = nonFiniteToString(x);
1768
- } else {
1769
- str = finiteToString(x);
1770
- i = str.indexOf(".");
1771
- if (isExp) {
1772
- base = 2;
1773
- if (baseOut == 16) {
1774
- sd = sd * 4 - 3;
1775
- } else if (baseOut == 8) {
1776
- sd = sd * 3 - 2;
1777
- }
1778
- } else {
1779
- base = baseOut;
1780
- }
1781
- if (i >= 0) {
1782
- str = str.replace(".", "");
1783
- y = new Ctor(1);
1784
- y.e = str.length - i;
1785
- y.d = convertBase(finiteToString(y), 10, base);
1786
- y.e = y.d.length;
1787
- }
1788
- xd = convertBase(str, 10, base);
1789
- e = len = xd.length;
1790
- for (; xd[--len] == 0; )
1791
- xd.pop();
1792
- if (!xd[0]) {
1793
- str = isExp ? "0p+0" : "0";
1794
- } else {
1795
- if (i < 0) {
1796
- e--;
1797
- } else {
1798
- x = new Ctor(x);
1799
- x.d = xd;
1800
- x.e = e;
1801
- x = divide(x, y, sd, rm, 0, base);
1802
- xd = x.d;
1803
- e = x.e;
1804
- roundUp = inexact;
1805
- }
1806
- i = xd[sd];
1807
- k = base / 2;
1808
- roundUp = roundUp || xd[sd + 1] !== void 0;
1809
- roundUp = rm < 4 ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2)) : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 || rm === (x.s < 0 ? 8 : 7));
1810
- xd.length = sd;
1811
- if (roundUp) {
1812
- for (; ++xd[--sd] > base - 1; ) {
1813
- xd[sd] = 0;
1814
- if (!sd) {
1815
- ++e;
1816
- xd.unshift(1);
1817
- }
1818
- }
1819
- }
1820
- for (len = xd.length; !xd[len - 1]; --len)
1821
- ;
1822
- for (i = 0, str = ""; i < len; i++)
1823
- str += NUMERALS.charAt(xd[i]);
1824
- if (isExp) {
1825
- if (len > 1) {
1826
- if (baseOut == 16 || baseOut == 8) {
1827
- i = baseOut == 16 ? 4 : 3;
1828
- for (--len; len % i; len++)
1829
- str += "0";
1830
- xd = convertBase(str, base, baseOut);
1831
- for (len = xd.length; !xd[len - 1]; --len)
1832
- ;
1833
- for (i = 1, str = "1."; i < len; i++)
1834
- str += NUMERALS.charAt(xd[i]);
1835
- } else {
1836
- str = str.charAt(0) + "." + str.slice(1);
1837
- }
1838
- }
1839
- str = str + (e < 0 ? "p" : "p+") + e;
1840
- } else if (e < 0) {
1841
- for (; ++e; )
1842
- str = "0" + str;
1843
- str = "0." + str;
1844
- } else {
1845
- if (++e > len)
1846
- for (e -= len; e--; )
1847
- str += "0";
1848
- else if (e < len)
1849
- str = str.slice(0, e) + "." + str.slice(e);
1850
- }
1851
- }
1852
- str = (baseOut == 16 ? "0x" : baseOut == 2 ? "0b" : baseOut == 8 ? "0o" : "") + str;
1853
- }
1854
- return x.s < 0 ? "-" + str : str;
1855
- }
1856
- function truncate(arr, len) {
1857
- if (arr.length > len) {
1858
- arr.length = len;
1859
- return true;
1860
- }
1861
- }
1862
- function abs(x) {
1863
- return new this(x).abs();
1864
- }
1865
- function acos(x) {
1866
- return new this(x).acos();
1867
- }
1868
- function acosh(x) {
1869
- return new this(x).acosh();
1870
- }
1871
- function add(x, y) {
1872
- return new this(x).plus(y);
1873
- }
1874
- function asin(x) {
1875
- return new this(x).asin();
1876
- }
1877
- function asinh(x) {
1878
- return new this(x).asinh();
1879
- }
1880
- function atan(x) {
1881
- return new this(x).atan();
1882
- }
1883
- function atanh(x) {
1884
- return new this(x).atanh();
1885
- }
1886
- function atan2(y, x) {
1887
- y = new this(y);
1888
- x = new this(x);
1889
- var r, pr = this.precision, rm = this.rounding, wpr = pr + 4;
1890
- if (!y.s || !x.s) {
1891
- r = new this(NaN);
1892
- } else if (!y.d && !x.d) {
1893
- r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);
1894
- r.s = y.s;
1895
- } else if (!x.d || y.isZero()) {
1896
- r = x.s < 0 ? getPi(this, pr, rm) : new this(0);
1897
- r.s = y.s;
1898
- } else if (!y.d || x.isZero()) {
1899
- r = getPi(this, wpr, 1).times(0.5);
1900
- r.s = y.s;
1901
- } else if (x.s < 0) {
1902
- this.precision = wpr;
1903
- this.rounding = 1;
1904
- r = this.atan(divide(y, x, wpr, 1));
1905
- x = getPi(this, wpr, 1);
1906
- this.precision = pr;
1907
- this.rounding = rm;
1908
- r = y.s < 0 ? r.minus(x) : r.plus(x);
1909
- } else {
1910
- r = this.atan(divide(y, x, wpr, 1));
1911
- }
1912
- return r;
1913
- }
1914
- function cbrt(x) {
1915
- return new this(x).cbrt();
1916
- }
1917
- function ceil(x) {
1918
- return finalise(x = new this(x), x.e + 1, 2);
1919
- }
1920
- function config(obj) {
1921
- if (!obj || typeof obj !== "object")
1922
- throw Error(decimalError + "Object expected");
1923
- var i, p, v, useDefaults = obj.defaults === true, ps = [
1924
- "precision",
1925
- 1,
1926
- MAX_DIGITS,
1927
- "rounding",
1928
- 0,
1929
- 8,
1930
- "toExpNeg",
1931
- -EXP_LIMIT,
1932
- 0,
1933
- "toExpPos",
1934
- 0,
1935
- EXP_LIMIT,
1936
- "maxE",
1937
- 0,
1938
- EXP_LIMIT,
1939
- "minE",
1940
- -EXP_LIMIT,
1941
- 0,
1942
- "modulo",
1943
- 0,
1944
- 9
1945
- ];
1946
- for (i = 0; i < ps.length; i += 3) {
1947
- if (p = ps[i], useDefaults)
1948
- this[p] = DEFAULTS[p];
1949
- if ((v = obj[p]) !== void 0) {
1950
- if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2])
1951
- this[p] = v;
1952
- else
1953
- throw Error(invalidArgument + p + ": " + v);
1954
- }
1955
- }
1956
- if (p = "crypto", useDefaults)
1957
- this[p] = DEFAULTS[p];
1958
- if ((v = obj[p]) !== void 0) {
1959
- if (v === true || v === false || v === 0 || v === 1) {
1960
- if (v) {
1961
- if (typeof crypto != "undefined" && crypto && (crypto.getRandomValues || crypto.randomBytes)) {
1962
- this[p] = true;
1963
- } else {
1964
- throw Error(cryptoUnavailable);
1965
- }
1966
- } else {
1967
- this[p] = false;
1968
- }
1969
- } else {
1970
- throw Error(invalidArgument + p + ": " + v);
1971
- }
1972
- }
1973
- return this;
1974
- }
1975
- function cos(x) {
1976
- return new this(x).cos();
1977
- }
1978
- function cosh(x) {
1979
- return new this(x).cosh();
1980
- }
1981
- function clone(obj) {
1982
- var i, p, ps;
1983
- function Decimal2(v) {
1984
- var e, i2, t, x = this;
1985
- if (!(x instanceof Decimal2))
1986
- return new Decimal2(v);
1987
- x.constructor = Decimal2;
1988
- if (v instanceof Decimal2) {
1989
- x.s = v.s;
1990
- if (external) {
1991
- if (!v.d || v.e > Decimal2.maxE) {
1992
- x.e = NaN;
1993
- x.d = null;
1994
- } else if (v.e < Decimal2.minE) {
1995
- x.e = 0;
1996
- x.d = [0];
1997
- } else {
1998
- x.e = v.e;
1999
- x.d = v.d.slice();
2000
- }
2001
- } else {
2002
- x.e = v.e;
2003
- x.d = v.d ? v.d.slice() : v.d;
2004
- }
2005
- return;
2006
- }
2007
- t = typeof v;
2008
- if (t === "number") {
2009
- if (v === 0) {
2010
- x.s = 1 / v < 0 ? -1 : 1;
2011
- x.e = 0;
2012
- x.d = [0];
2013
- return;
2014
- }
2015
- if (v < 0) {
2016
- v = -v;
2017
- x.s = -1;
2018
- } else {
2019
- x.s = 1;
2020
- }
2021
- if (v === ~~v && v < 1e7) {
2022
- for (e = 0, i2 = v; i2 >= 10; i2 /= 10)
2023
- e++;
2024
- if (external) {
2025
- if (e > Decimal2.maxE) {
2026
- x.e = NaN;
2027
- x.d = null;
2028
- } else if (e < Decimal2.minE) {
2029
- x.e = 0;
2030
- x.d = [0];
2031
- } else {
2032
- x.e = e;
2033
- x.d = [v];
2034
- }
2035
- } else {
2036
- x.e = e;
2037
- x.d = [v];
2038
- }
2039
- return;
2040
- } else if (v * 0 !== 0) {
2041
- if (!v)
2042
- x.s = NaN;
2043
- x.e = NaN;
2044
- x.d = null;
2045
- return;
2046
- }
2047
- return parseDecimal(x, v.toString());
2048
- } else if (t !== "string") {
2049
- throw Error(invalidArgument + v);
2050
- }
2051
- if ((i2 = v.charCodeAt(0)) === 45) {
2052
- v = v.slice(1);
2053
- x.s = -1;
2054
- } else {
2055
- if (i2 === 43)
2056
- v = v.slice(1);
2057
- x.s = 1;
2058
- }
2059
- return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);
2060
- }
2061
- Decimal2.prototype = P;
2062
- Decimal2.ROUND_UP = 0;
2063
- Decimal2.ROUND_DOWN = 1;
2064
- Decimal2.ROUND_CEIL = 2;
2065
- Decimal2.ROUND_FLOOR = 3;
2066
- Decimal2.ROUND_HALF_UP = 4;
2067
- Decimal2.ROUND_HALF_DOWN = 5;
2068
- Decimal2.ROUND_HALF_EVEN = 6;
2069
- Decimal2.ROUND_HALF_CEIL = 7;
2070
- Decimal2.ROUND_HALF_FLOOR = 8;
2071
- Decimal2.EUCLID = 9;
2072
- Decimal2.config = Decimal2.set = config;
2073
- Decimal2.clone = clone;
2074
- Decimal2.isDecimal = isDecimalInstance;
2075
- Decimal2.abs = abs;
2076
- Decimal2.acos = acos;
2077
- Decimal2.acosh = acosh;
2078
- Decimal2.add = add;
2079
- Decimal2.asin = asin;
2080
- Decimal2.asinh = asinh;
2081
- Decimal2.atan = atan;
2082
- Decimal2.atanh = atanh;
2083
- Decimal2.atan2 = atan2;
2084
- Decimal2.cbrt = cbrt;
2085
- Decimal2.ceil = ceil;
2086
- Decimal2.cos = cos;
2087
- Decimal2.cosh = cosh;
2088
- Decimal2.div = div;
2089
- Decimal2.exp = exp;
2090
- Decimal2.floor = floor;
2091
- Decimal2.hypot = hypot;
2092
- Decimal2.ln = ln;
2093
- Decimal2.log = log;
2094
- Decimal2.log10 = log10;
2095
- Decimal2.log2 = log2;
2096
- Decimal2.max = max;
2097
- Decimal2.min = min;
2098
- Decimal2.mod = mod;
2099
- Decimal2.mul = mul;
2100
- Decimal2.pow = pow;
2101
- Decimal2.random = random;
2102
- Decimal2.round = round;
2103
- Decimal2.sign = sign;
2104
- Decimal2.sin = sin;
2105
- Decimal2.sinh = sinh;
2106
- Decimal2.sqrt = sqrt;
2107
- Decimal2.sub = sub;
2108
- Decimal2.tan = tan;
2109
- Decimal2.tanh = tanh;
2110
- Decimal2.trunc = trunc;
2111
- if (obj === void 0)
2112
- obj = {};
2113
- if (obj) {
2114
- if (obj.defaults !== true) {
2115
- ps = ["precision", "rounding", "toExpNeg", "toExpPos", "maxE", "minE", "modulo", "crypto"];
2116
- for (i = 0; i < ps.length; )
2117
- if (!obj.hasOwnProperty(p = ps[i++]))
2118
- obj[p] = this[p];
2119
- }
2120
- }
2121
- Decimal2.config(obj);
2122
- return Decimal2;
2123
- }
2124
- function div(x, y) {
2125
- return new this(x).div(y);
2126
- }
2127
- function exp(x) {
2128
- return new this(x).exp();
2129
- }
2130
- function floor(x) {
2131
- return finalise(x = new this(x), x.e + 1, 3);
2132
- }
2133
- function hypot() {
2134
- var i, n, t = new this(0);
2135
- external = false;
2136
- for (i = 0; i < arguments.length; ) {
2137
- n = new this(arguments[i++]);
2138
- if (!n.d) {
2139
- if (n.s) {
2140
- external = true;
2141
- return new this(1 / 0);
2142
- }
2143
- t = n;
2144
- } else if (t.d) {
2145
- t = t.plus(n.times(n));
2146
- }
2147
- }
2148
- external = true;
2149
- return t.sqrt();
2150
- }
2151
- function isDecimalInstance(obj) {
2152
- return obj instanceof Decimal || obj && obj.name === "[object Decimal]" || false;
2153
- }
2154
- function ln(x) {
2155
- return new this(x).ln();
2156
- }
2157
- function log(x, y) {
2158
- return new this(x).log(y);
2159
- }
2160
- function log2(x) {
2161
- return new this(x).log(2);
2162
- }
2163
- function log10(x) {
2164
- return new this(x).log(10);
2165
- }
2166
- function max() {
2167
- return maxOrMin(this, arguments, "lt");
2168
- }
2169
- function min() {
2170
- return maxOrMin(this, arguments, "gt");
2171
- }
2172
- function mod(x, y) {
2173
- return new this(x).mod(y);
2174
- }
2175
- function mul(x, y) {
2176
- return new this(x).mul(y);
2177
- }
2178
- function pow(x, y) {
2179
- return new this(x).pow(y);
2180
- }
2181
- function random(sd) {
2182
- var d, e, k, n, i = 0, r = new this(1), rd = [];
2183
- if (sd === void 0)
2184
- sd = this.precision;
2185
- else
2186
- checkInt32(sd, 1, MAX_DIGITS);
2187
- k = Math.ceil(sd / LOG_BASE);
2188
- if (!this.crypto) {
2189
- for (; i < k; )
2190
- rd[i++] = Math.random() * 1e7 | 0;
2191
- } else if (crypto.getRandomValues) {
2192
- d = crypto.getRandomValues(new Uint32Array(k));
2193
- for (; i < k; ) {
2194
- n = d[i];
2195
- if (n >= 429e7) {
2196
- d[i] = crypto.getRandomValues(new Uint32Array(1))[0];
2197
- } else {
2198
- rd[i++] = n % 1e7;
2199
- }
2200
- }
2201
- } else if (crypto.randomBytes) {
2202
- d = crypto.randomBytes(k *= 4);
2203
- for (; i < k; ) {
2204
- n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 127) << 24);
2205
- if (n >= 214e7) {
2206
- crypto.randomBytes(4).copy(d, i);
2207
- } else {
2208
- rd.push(n % 1e7);
2209
- i += 4;
2210
- }
2211
- }
2212
- i = k / 4;
2213
- } else {
2214
- throw Error(cryptoUnavailable);
2215
- }
2216
- k = rd[--i];
2217
- sd %= LOG_BASE;
2218
- if (k && sd) {
2219
- n = mathpow(10, LOG_BASE - sd);
2220
- rd[i] = (k / n | 0) * n;
2221
- }
2222
- for (; rd[i] === 0; i--)
2223
- rd.pop();
2224
- if (i < 0) {
2225
- e = 0;
2226
- rd = [0];
2227
- } else {
2228
- e = -1;
2229
- for (; rd[0] === 0; e -= LOG_BASE)
2230
- rd.shift();
2231
- for (k = 1, n = rd[0]; n >= 10; n /= 10)
2232
- k++;
2233
- if (k < LOG_BASE)
2234
- e -= LOG_BASE - k;
2235
- }
2236
- r.e = e;
2237
- r.d = rd;
2238
- return r;
2239
- }
2240
- function round(x) {
2241
- return finalise(x = new this(x), x.e + 1, this.rounding);
2242
- }
2243
- function sign(x) {
2244
- x = new this(x);
2245
- return x.d ? x.d[0] ? x.s : 0 * x.s : x.s || NaN;
2246
- }
2247
- function sin(x) {
2248
- return new this(x).sin();
2249
- }
2250
- function sinh(x) {
2251
- return new this(x).sinh();
2252
- }
2253
- function sqrt(x) {
2254
- return new this(x).sqrt();
2255
- }
2256
- function sub(x, y) {
2257
- return new this(x).sub(y);
2258
- }
2259
- function tan(x) {
2260
- return new this(x).tan();
2261
- }
2262
- function tanh(x) {
2263
- return new this(x).tanh();
2264
- }
2265
- function trunc(x) {
2266
- return finalise(x = new this(x), x.e + 1, 1);
2267
- }
2268
- P[Symbol.for("nodejs.util.inspect.custom")] = P.toString;
2269
- P[Symbol.toStringTag] = "Decimal";
2270
- var Decimal = clone(DEFAULTS);
2271
- LN10 = new Decimal(LN10);
2272
- PI = new Decimal(PI);
2273
- var decimal_default = Decimal;