powiaina_num.js 0.2.0-alpha.2.3 → 0.2.0-alpha.2.5

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.
@@ -220,6 +220,7 @@ var PowiainaNum = /*#__PURE__*/function () {
220
220
  return _createClass(PowiainaNum, [{
221
221
  key: "add",
222
222
  value: function add(other) {
223
+ var _a, _b, _c, _d;
223
224
  var x = this.clone();
224
225
  var y = new PowiainaNum(other);
225
226
  // inf + -inf = nan
@@ -253,11 +254,11 @@ var PowiainaNum = /*#__PURE__*/function () {
253
254
  a = y;
254
255
  }
255
256
  var mult = 1;
256
- if (!a.small && !b.small && !a.getOperator(1) && !b.getOperator(1) && a.sign == b.sign) {
257
- return new PowiainaNum((a.getOperator(0) + b.getOperator(0)) * a.sign);
257
+ if (!a.small && !b.small && !((_a = a.array[1]) === null || _a === void 0 ? void 0 : _a.repeat) && !((_b = b.array[1]) === null || _b === void 0 ? void 0 : _b.repeat) && a.sign == b.sign) {
258
+ return new PowiainaNum((a.array[0].repeat + b.array[0].repeat) * a.sign);
258
259
  }
259
- var alog10 = (a.small ? -1 : 1) * (a.getOperator(1) ? a.getOperator(0) : Math.log10(a.getOperator(0)));
260
- var blog10 = (b.small ? -1 : 1) * (b.getOperator(1) ? b.getOperator(0) : Math.log10(b.getOperator(0)));
260
+ var alog10 = (a.small ? -1 : 1) * (((_c = a.array[1]) === null || _c === void 0 ? void 0 : _c.repeat) ? a.array[0].repeat : Math.log10(a.array[0].repeat));
261
+ var blog10 = (b.small ? -1 : 1) * (((_d = b.array[1]) === null || _d === void 0 ? void 0 : _d.repeat) ? b.array[0].repeat : Math.log10(b.array[0].repeat));
261
262
  if (alog10 - blog10 > MSI_LOG10) return a;
262
263
  var offset = -Math.floor(alog10); //a number can make a+off in [0,1)
263
264
  var r,
@@ -273,10 +274,9 @@ var PowiainaNum = /*#__PURE__*/function () {
273
274
  r = new PowiainaNum();
274
275
  r.sign = 1;
275
276
  if (l > MSI_LOG10 || l < -MSI_LOG10) {
276
- r.setOperator(1, 1);
277
- r.setOperator(Math.log10(Math.abs(l)), 1);
277
+ r.array = [newOperator(l, 0), newOperator(1, 1)];
278
278
  } else {
279
- r.setOperator(Math.pow(10, Math.abs(l)), 0);
279
+ r.array = [newOperator(Math.pow(10, l), 0)];
280
280
  }
281
281
  r.small = l < 0 ? true : false;
282
282
  r.sign *= mult;
@@ -324,19 +324,20 @@ var PowiainaNum = /*#__PURE__*/function () {
324
324
  }, {
325
325
  key: "pow10",
326
326
  value: function pow10() {
327
+ var _a, _b;
327
328
  var r = this.clone();
328
329
  // inf & nan check
329
330
  if (!this.isFinite()) return this.clone();
330
- if (r.lt(0)) {
331
+ if (r.isneg()) {
331
332
  // 10^(-x) = 1/(10^x)
332
333
  r.sign *= -1;
333
334
  return r.pow10().rec();
334
335
  }
335
336
  if (r.small) {
336
337
  if (r.lt(PowiainaNum.MSI_REC)) return PowiainaNum.ONE;
337
- return new PowiainaNum(Math.pow(10, Math.pow(r.getOperator(0), -1)));
338
+ return new PowiainaNum(Math.pow(10, Math.pow(r.array[0].repeat, -1)));
338
339
  }
339
- r.setOperator(r.getOperator(1) + 1, 1);
340
+ r.setOperator(((_b = (_a = r.array[1]) === null || _a === void 0 ? void 0 : _a.repeat) !== null && _b !== void 0 ? _b : 0) + 1, 1);
340
341
  r.normalize();
341
342
  return r;
342
343
  }
@@ -347,7 +348,7 @@ var PowiainaNum = /*#__PURE__*/function () {
347
348
  if (!other.isFinite()) return other.clone();
348
349
  if (!this.isFinite()) return this.clone();
349
350
  if (this.eq(10)) return other.pow10();
350
- if (this.lt(0)) {
351
+ if (this.isneg()) {
351
352
  if (!other.isInt()) return PowiainaNum.NaN.clone();
352
353
  var r = this.abs().pow(other);
353
354
  r.sign = function () {
@@ -357,6 +358,13 @@ var PowiainaNum = /*#__PURE__*/function () {
357
358
  }();
358
359
  return r;
359
360
  }
361
+ var a = this.toNumber();
362
+ var b = this.toNumber();
363
+ var t = Math.pow(a, b);
364
+ if (!isFinite(t)) {
365
+ // optimize?
366
+ return PowiainaNum.fromNumber(t);
367
+ }
360
368
  // log10(a^b) = b log10(a)
361
369
  return this.log10().mul(other).pow10();
362
370
  }
@@ -392,7 +400,7 @@ var PowiainaNum = /*#__PURE__*/function () {
392
400
  }, {
393
401
  key: "log10",
394
402
  value: function log10() {
395
- if (this.lt(0)) return PowiainaNum.NaN.clone();
403
+ if (this.isneg()) return PowiainaNum.NaN.clone();
396
404
  if (this.isZero()) return PowiainaNum.NEGATIVE_INFINITY.clone();
397
405
  if (this.small) {
398
406
  var _x = this.clone();
@@ -527,7 +535,7 @@ var PowiainaNum = /*#__PURE__*/function () {
527
535
  return PowiainaNum.NaN.clone(); //complex
528
536
  }
529
537
  if (this.layer === 0) {
530
- return PowiainaNum.fromNumber(f_lambertw(this.sign * this.getOperator(0), 1e-10, false));
538
+ return PowiainaNum.fromNumber(f_lambertw(this.sign * this.array[0].repeat, 1e-10, false));
531
539
  } else if (this.layer == 1) {
532
540
  return d_lambertw(this, 1e-10, false);
533
541
  } else {
@@ -588,7 +596,7 @@ var PowiainaNum = /*#__PURE__*/function () {
588
596
  if (this.sign == 1) return PowiainaNum.ZERO.clone();else return PowiainaNum.ONE.neg().clone();
589
597
  }
590
598
  var r = this.abs();
591
- r.setOperator(Math[this.sign == 1 ? "floor" : "ceil"](r.getOperator(0)), 0);
599
+ r.array[0].repeat = Math[this.sign == 1 ? "floor" : "ceil"](r.getOperator(0));
592
600
  return r;
593
601
  }
594
602
  }, {
@@ -599,7 +607,7 @@ var PowiainaNum = /*#__PURE__*/function () {
599
607
  if (this.sign == 1) return PowiainaNum.ONE.clone();else return PowiainaNum.ZERO.clone();
600
608
  }
601
609
  var r = this.abs();
602
- r.setOperator(Math[this.sign == 1 ? "ceil" : "floor"](r.getOperator(0)), 0);
610
+ r.array[0].repeat = Math[this.sign == 1 ? "ceil" : "floor"](r.getOperator(0));
603
611
  r.sign = this.sign;
604
612
  return r;
605
613
  }
@@ -615,7 +623,7 @@ var PowiainaNum = /*#__PURE__*/function () {
615
623
  }
616
624
  }
617
625
  var r = this.abs();
618
- r.setOperator(Math.round(r.getOperator(0)), 0);
626
+ r.array[0].repeat = Math.round(r.array[0].repeat);
619
627
  r.sign = this.sign;
620
628
  return r;
621
629
  }
@@ -728,16 +736,27 @@ var PowiainaNum = /*#__PURE__*/function () {
728
736
  value: function isInt() {
729
737
  if (this.isZero()) return true;
730
738
  if (!this.small && Number.isInteger(this.getOperator(0))) return true;
731
- if (this.abs().gte(Math.pow(2, 52))) return true;
739
+ if (this.abs().gte(MSI / 2)) return true;
732
740
  return false;
733
741
  }
742
+ }, {
743
+ key: "ispos",
744
+ value: function ispos() {
745
+ return this.sign > 0;
746
+ }
747
+ }, {
748
+ key: "isneg",
749
+ value: function isneg() {
750
+ return this.sign < 0;
751
+ }
752
+ }, {
753
+ key: "normalize",
754
+ value:
734
755
  /**
735
756
  * Normalize functions will make this number convert into standard format.(it also change `this`, like [].sort)
736
757
  * @returns normalized number
737
758
  */
738
- }, {
739
- key: "normalize",
740
- value: function normalize() {
759
+ function normalize() {
741
760
  //TODO: normalize
742
761
  var renormalize = true;
743
762
  var x = this;
@@ -808,7 +827,6 @@ var PowiainaNum = /*#__PURE__*/function () {
808
827
  }
809
828
  if (x.array.length > PowiainaNum.maxOps) x.array.splice(1, x.array.length - PowiainaNum.maxOps); // max operators check
810
829
  if (this.getOperator(1) >= 1 && this.getOperator(0) < MSI_LOG10) {
811
- console.log(this.array);
812
830
  this.setOperator(this.getOperator(1) - 1, 1);
813
831
  this.setOperator(Math.pow(10, this.getOperator(0)), 0);
814
832
  renormalize = true;
@@ -859,6 +877,10 @@ var PowiainaNum = /*#__PURE__*/function () {
859
877
  value: function getOperatorIndex(arrow) {
860
878
  var expans = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
861
879
  var megota = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
880
+ if (this.array.length == 1 && arrow == 0) return 0;
881
+ if (this.array.length == 1 && arrow == 1) return 0.5;
882
+ if (this.array.length == 2 && arrow == 1) return 1;
883
+ if (this.array.length == 2 && arrow == 0) return 0;
862
884
  for (var i = 0; i < this.array.length; i++) {
863
885
  var cmp = compareTuples([this.array[i].megota, this.array[i].expans, this.array[i].arrow], [megota, expans, arrow]);
864
886
  if (cmp == 0) return i; // I find it was [xx,xxx,*xxx*,xxx]!
@@ -1065,6 +1087,11 @@ var PowiainaNum = /*#__PURE__*/function () {
1065
1087
  var principal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1066
1088
  return new PowiainaNum(x).lambertw(principal);
1067
1089
  }
1090
+ }, {
1091
+ key: "isNaN",
1092
+ value: function isNaN(x) {
1093
+ return new PowiainaNum(x).isNaN();
1094
+ }
1068
1095
  }, {
1069
1096
  key: "fromNumber",
1070
1097
  value: function fromNumber(x) {
@@ -1074,15 +1101,16 @@ var PowiainaNum = /*#__PURE__*/function () {
1074
1101
  var y = Math.abs(x);
1075
1102
  if (y >= MSI_REC && y < 1) {
1076
1103
  obj.small = true;
1077
- obj.setOperator(1 / y, 0);
1104
+ obj.array = [newOperator(1 / y, 0)];
1078
1105
  } else if (y < MSI_REC) {
1079
1106
  obj.small = true;
1080
- obj.setOperator(-Math.log10(y), 0);
1081
- obj.setOperator(1, 1);
1107
+ obj.array = [newOperator(-Math.log10(y), 0), newOperator(1, 1)];
1108
+ } else if (y <= MSI) {
1109
+ obj.array = [newOperator(y, 0)];
1082
1110
  } else {
1083
- obj.setOperator(y, 0);
1111
+ obj.setOperator(Math.log10(y), 0);
1112
+ obj.array = [newOperator(Math.log10(y), 0), newOperator(1, 1)];
1084
1113
  }
1085
- obj.normalize();
1086
1114
  return obj;
1087
1115
  }
1088
1116
  }, {
@@ -1093,6 +1121,15 @@ var PowiainaNum = /*#__PURE__*/function () {
1093
1121
  throw powiainaNumError + "malformed input: " + input;
1094
1122
  }
1095
1123
  var x = new PowiainaNum();
1124
+ // Judge the string was a number
1125
+ // @ts-ignore
1126
+ if (!isNaN(Number(input))) {
1127
+ // @ts-ignore
1128
+ if (isFinite(Number(input))) {
1129
+ x.resetFromObject(PowiainaNum.fromNumber(Number(input)));
1130
+ return x;
1131
+ }
1132
+ }
1096
1133
  var negateIt = false;
1097
1134
  var recipIt = false;
1098
1135
  if (input[0] == "-" || input[0] == "+") {
@@ -218,6 +218,7 @@ var PowiainaNum = /*#__PURE__*/function () {
218
218
  return _createClass(PowiainaNum, [{
219
219
  key: "add",
220
220
  value: function add(other) {
221
+ var _a, _b, _c, _d;
221
222
  var x = this.clone();
222
223
  var y = new PowiainaNum(other);
223
224
  // inf + -inf = nan
@@ -251,11 +252,11 @@ var PowiainaNum = /*#__PURE__*/function () {
251
252
  a = y;
252
253
  }
253
254
  var mult = 1;
254
- if (!a.small && !b.small && !a.getOperator(1) && !b.getOperator(1) && a.sign == b.sign) {
255
- return new PowiainaNum((a.getOperator(0) + b.getOperator(0)) * a.sign);
255
+ if (!a.small && !b.small && !((_a = a.array[1]) === null || _a === void 0 ? void 0 : _a.repeat) && !((_b = b.array[1]) === null || _b === void 0 ? void 0 : _b.repeat) && a.sign == b.sign) {
256
+ return new PowiainaNum((a.array[0].repeat + b.array[0].repeat) * a.sign);
256
257
  }
257
- var alog10 = (a.small ? -1 : 1) * (a.getOperator(1) ? a.getOperator(0) : Math.log10(a.getOperator(0)));
258
- var blog10 = (b.small ? -1 : 1) * (b.getOperator(1) ? b.getOperator(0) : Math.log10(b.getOperator(0)));
258
+ var alog10 = (a.small ? -1 : 1) * (((_c = a.array[1]) === null || _c === void 0 ? void 0 : _c.repeat) ? a.array[0].repeat : Math.log10(a.array[0].repeat));
259
+ var blog10 = (b.small ? -1 : 1) * (((_d = b.array[1]) === null || _d === void 0 ? void 0 : _d.repeat) ? b.array[0].repeat : Math.log10(b.array[0].repeat));
259
260
  if (alog10 - blog10 > MSI_LOG10) return a;
260
261
  var offset = -Math.floor(alog10); //a number can make a+off in [0,1)
261
262
  var r,
@@ -271,10 +272,9 @@ var PowiainaNum = /*#__PURE__*/function () {
271
272
  r = new PowiainaNum();
272
273
  r.sign = 1;
273
274
  if (l > MSI_LOG10 || l < -MSI_LOG10) {
274
- r.setOperator(1, 1);
275
- r.setOperator(Math.log10(Math.abs(l)), 1);
275
+ r.array = [newOperator(l, 0), newOperator(1, 1)];
276
276
  } else {
277
- r.setOperator(Math.pow(10, Math.abs(l)), 0);
277
+ r.array = [newOperator(Math.pow(10, l), 0)];
278
278
  }
279
279
  r.small = l < 0 ? true : false;
280
280
  r.sign *= mult;
@@ -322,19 +322,20 @@ var PowiainaNum = /*#__PURE__*/function () {
322
322
  }, {
323
323
  key: "pow10",
324
324
  value: function pow10() {
325
+ var _a, _b;
325
326
  var r = this.clone();
326
327
  // inf & nan check
327
328
  if (!this.isFinite()) return this.clone();
328
- if (r.lt(0)) {
329
+ if (r.isneg()) {
329
330
  // 10^(-x) = 1/(10^x)
330
331
  r.sign *= -1;
331
332
  return r.pow10().rec();
332
333
  }
333
334
  if (r.small) {
334
335
  if (r.lt(PowiainaNum.MSI_REC)) return PowiainaNum.ONE;
335
- return new PowiainaNum(Math.pow(10, Math.pow(r.getOperator(0), -1)));
336
+ return new PowiainaNum(Math.pow(10, Math.pow(r.array[0].repeat, -1)));
336
337
  }
337
- r.setOperator(r.getOperator(1) + 1, 1);
338
+ r.setOperator(((_b = (_a = r.array[1]) === null || _a === void 0 ? void 0 : _a.repeat) !== null && _b !== void 0 ? _b : 0) + 1, 1);
338
339
  r.normalize();
339
340
  return r;
340
341
  }
@@ -345,7 +346,7 @@ var PowiainaNum = /*#__PURE__*/function () {
345
346
  if (!other.isFinite()) return other.clone();
346
347
  if (!this.isFinite()) return this.clone();
347
348
  if (this.eq(10)) return other.pow10();
348
- if (this.lt(0)) {
349
+ if (this.isneg()) {
349
350
  if (!other.isInt()) return PowiainaNum.NaN.clone();
350
351
  var r = this.abs().pow(other);
351
352
  r.sign = function () {
@@ -355,6 +356,13 @@ var PowiainaNum = /*#__PURE__*/function () {
355
356
  }();
356
357
  return r;
357
358
  }
359
+ var a = this.toNumber();
360
+ var b = this.toNumber();
361
+ var t = Math.pow(a, b);
362
+ if (!isFinite(t)) {
363
+ // optimize?
364
+ return PowiainaNum.fromNumber(t);
365
+ }
358
366
  // log10(a^b) = b log10(a)
359
367
  return this.log10().mul(other).pow10();
360
368
  }
@@ -390,7 +398,7 @@ var PowiainaNum = /*#__PURE__*/function () {
390
398
  }, {
391
399
  key: "log10",
392
400
  value: function log10() {
393
- if (this.lt(0)) return PowiainaNum.NaN.clone();
401
+ if (this.isneg()) return PowiainaNum.NaN.clone();
394
402
  if (this.isZero()) return PowiainaNum.NEGATIVE_INFINITY.clone();
395
403
  if (this.small) {
396
404
  var _x = this.clone();
@@ -525,7 +533,7 @@ var PowiainaNum = /*#__PURE__*/function () {
525
533
  return PowiainaNum.NaN.clone(); //complex
526
534
  }
527
535
  if (this.layer === 0) {
528
- return PowiainaNum.fromNumber(f_lambertw(this.sign * this.getOperator(0), 1e-10, false));
536
+ return PowiainaNum.fromNumber(f_lambertw(this.sign * this.array[0].repeat, 1e-10, false));
529
537
  } else if (this.layer == 1) {
530
538
  return d_lambertw(this, 1e-10, false);
531
539
  } else {
@@ -586,7 +594,7 @@ var PowiainaNum = /*#__PURE__*/function () {
586
594
  if (this.sign == 1) return PowiainaNum.ZERO.clone();else return PowiainaNum.ONE.neg().clone();
587
595
  }
588
596
  var r = this.abs();
589
- r.setOperator(Math[this.sign == 1 ? "floor" : "ceil"](r.getOperator(0)), 0);
597
+ r.array[0].repeat = Math[this.sign == 1 ? "floor" : "ceil"](r.getOperator(0));
590
598
  return r;
591
599
  }
592
600
  }, {
@@ -597,7 +605,7 @@ var PowiainaNum = /*#__PURE__*/function () {
597
605
  if (this.sign == 1) return PowiainaNum.ONE.clone();else return PowiainaNum.ZERO.clone();
598
606
  }
599
607
  var r = this.abs();
600
- r.setOperator(Math[this.sign == 1 ? "ceil" : "floor"](r.getOperator(0)), 0);
608
+ r.array[0].repeat = Math[this.sign == 1 ? "ceil" : "floor"](r.getOperator(0));
601
609
  r.sign = this.sign;
602
610
  return r;
603
611
  }
@@ -613,7 +621,7 @@ var PowiainaNum = /*#__PURE__*/function () {
613
621
  }
614
622
  }
615
623
  var r = this.abs();
616
- r.setOperator(Math.round(r.getOperator(0)), 0);
624
+ r.array[0].repeat = Math.round(r.array[0].repeat);
617
625
  r.sign = this.sign;
618
626
  return r;
619
627
  }
@@ -726,16 +734,27 @@ var PowiainaNum = /*#__PURE__*/function () {
726
734
  value: function isInt() {
727
735
  if (this.isZero()) return true;
728
736
  if (!this.small && Number.isInteger(this.getOperator(0))) return true;
729
- if (this.abs().gte(Math.pow(2, 52))) return true;
737
+ if (this.abs().gte(MSI / 2)) return true;
730
738
  return false;
731
739
  }
740
+ }, {
741
+ key: "ispos",
742
+ value: function ispos() {
743
+ return this.sign > 0;
744
+ }
745
+ }, {
746
+ key: "isneg",
747
+ value: function isneg() {
748
+ return this.sign < 0;
749
+ }
750
+ }, {
751
+ key: "normalize",
752
+ value:
732
753
  /**
733
754
  * Normalize functions will make this number convert into standard format.(it also change `this`, like [].sort)
734
755
  * @returns normalized number
735
756
  */
736
- }, {
737
- key: "normalize",
738
- value: function normalize() {
757
+ function normalize() {
739
758
  //TODO: normalize
740
759
  var renormalize = true;
741
760
  var x = this;
@@ -806,7 +825,6 @@ var PowiainaNum = /*#__PURE__*/function () {
806
825
  }
807
826
  if (x.array.length > PowiainaNum.maxOps) x.array.splice(1, x.array.length - PowiainaNum.maxOps); // max operators check
808
827
  if (this.getOperator(1) >= 1 && this.getOperator(0) < MSI_LOG10) {
809
- console.log(this.array);
810
828
  this.setOperator(this.getOperator(1) - 1, 1);
811
829
  this.setOperator(Math.pow(10, this.getOperator(0)), 0);
812
830
  renormalize = true;
@@ -857,6 +875,10 @@ var PowiainaNum = /*#__PURE__*/function () {
857
875
  value: function getOperatorIndex(arrow) {
858
876
  var expans = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
859
877
  var megota = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
878
+ if (this.array.length == 1 && arrow == 0) return 0;
879
+ if (this.array.length == 1 && arrow == 1) return 0.5;
880
+ if (this.array.length == 2 && arrow == 1) return 1;
881
+ if (this.array.length == 2 && arrow == 0) return 0;
860
882
  for (var i = 0; i < this.array.length; i++) {
861
883
  var cmp = compareTuples([this.array[i].megota, this.array[i].expans, this.array[i].arrow], [megota, expans, arrow]);
862
884
  if (cmp == 0) return i; // I find it was [xx,xxx,*xxx*,xxx]!
@@ -1063,6 +1085,11 @@ var PowiainaNum = /*#__PURE__*/function () {
1063
1085
  var principal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1064
1086
  return new PowiainaNum(x).lambertw(principal);
1065
1087
  }
1088
+ }, {
1089
+ key: "isNaN",
1090
+ value: function isNaN(x) {
1091
+ return new PowiainaNum(x).isNaN();
1092
+ }
1066
1093
  }, {
1067
1094
  key: "fromNumber",
1068
1095
  value: function fromNumber(x) {
@@ -1072,15 +1099,16 @@ var PowiainaNum = /*#__PURE__*/function () {
1072
1099
  var y = Math.abs(x);
1073
1100
  if (y >= MSI_REC && y < 1) {
1074
1101
  obj.small = true;
1075
- obj.setOperator(1 / y, 0);
1102
+ obj.array = [newOperator(1 / y, 0)];
1076
1103
  } else if (y < MSI_REC) {
1077
1104
  obj.small = true;
1078
- obj.setOperator(-Math.log10(y), 0);
1079
- obj.setOperator(1, 1);
1105
+ obj.array = [newOperator(-Math.log10(y), 0), newOperator(1, 1)];
1106
+ } else if (y <= MSI) {
1107
+ obj.array = [newOperator(y, 0)];
1080
1108
  } else {
1081
- obj.setOperator(y, 0);
1109
+ obj.setOperator(Math.log10(y), 0);
1110
+ obj.array = [newOperator(Math.log10(y), 0), newOperator(1, 1)];
1082
1111
  }
1083
- obj.normalize();
1084
1112
  return obj;
1085
1113
  }
1086
1114
  }, {
@@ -1091,6 +1119,15 @@ var PowiainaNum = /*#__PURE__*/function () {
1091
1119
  throw powiainaNumError + "malformed input: " + input;
1092
1120
  }
1093
1121
  var x = new PowiainaNum();
1122
+ // Judge the string was a number
1123
+ // @ts-ignore
1124
+ if (!isNaN(Number(input))) {
1125
+ // @ts-ignore
1126
+ if (isFinite(Number(input))) {
1127
+ x.resetFromObject(PowiainaNum.fromNumber(Number(input)));
1128
+ return x;
1129
+ }
1130
+ }
1094
1131
  var negateIt = false;
1095
1132
  var recipIt = false;
1096
1133
  if (input[0] == "-" || input[0] == "+") {
@@ -224,6 +224,7 @@
224
224
  return _createClass(PowiainaNum, [{
225
225
  key: "add",
226
226
  value: function add(other) {
227
+ var _a, _b, _c, _d;
227
228
  var x = this.clone();
228
229
  var y = new PowiainaNum(other);
229
230
  // inf + -inf = nan
@@ -257,11 +258,11 @@
257
258
  a = y;
258
259
  }
259
260
  var mult = 1;
260
- if (!a.small && !b.small && !a.getOperator(1) && !b.getOperator(1) && a.sign == b.sign) {
261
- return new PowiainaNum((a.getOperator(0) + b.getOperator(0)) * a.sign);
261
+ if (!a.small && !b.small && !((_a = a.array[1]) === null || _a === void 0 ? void 0 : _a.repeat) && !((_b = b.array[1]) === null || _b === void 0 ? void 0 : _b.repeat) && a.sign == b.sign) {
262
+ return new PowiainaNum((a.array[0].repeat + b.array[0].repeat) * a.sign);
262
263
  }
263
- var alog10 = (a.small ? -1 : 1) * (a.getOperator(1) ? a.getOperator(0) : Math.log10(a.getOperator(0)));
264
- var blog10 = (b.small ? -1 : 1) * (b.getOperator(1) ? b.getOperator(0) : Math.log10(b.getOperator(0)));
264
+ var alog10 = (a.small ? -1 : 1) * (((_c = a.array[1]) === null || _c === void 0 ? void 0 : _c.repeat) ? a.array[0].repeat : Math.log10(a.array[0].repeat));
265
+ var blog10 = (b.small ? -1 : 1) * (((_d = b.array[1]) === null || _d === void 0 ? void 0 : _d.repeat) ? b.array[0].repeat : Math.log10(b.array[0].repeat));
265
266
  if (alog10 - blog10 > MSI_LOG10) return a;
266
267
  var offset = -Math.floor(alog10); //a number can make a+off in [0,1)
267
268
  var r,
@@ -277,10 +278,9 @@
277
278
  r = new PowiainaNum();
278
279
  r.sign = 1;
279
280
  if (l > MSI_LOG10 || l < -MSI_LOG10) {
280
- r.setOperator(1, 1);
281
- r.setOperator(Math.log10(Math.abs(l)), 1);
281
+ r.array = [newOperator(l, 0), newOperator(1, 1)];
282
282
  } else {
283
- r.setOperator(Math.pow(10, Math.abs(l)), 0);
283
+ r.array = [newOperator(Math.pow(10, l), 0)];
284
284
  }
285
285
  r.small = l < 0 ? true : false;
286
286
  r.sign *= mult;
@@ -328,19 +328,20 @@
328
328
  }, {
329
329
  key: "pow10",
330
330
  value: function pow10() {
331
+ var _a, _b;
331
332
  var r = this.clone();
332
333
  // inf & nan check
333
334
  if (!this.isFinite()) return this.clone();
334
- if (r.lt(0)) {
335
+ if (r.isneg()) {
335
336
  // 10^(-x) = 1/(10^x)
336
337
  r.sign *= -1;
337
338
  return r.pow10().rec();
338
339
  }
339
340
  if (r.small) {
340
341
  if (r.lt(PowiainaNum.MSI_REC)) return PowiainaNum.ONE;
341
- return new PowiainaNum(Math.pow(10, Math.pow(r.getOperator(0), -1)));
342
+ return new PowiainaNum(Math.pow(10, Math.pow(r.array[0].repeat, -1)));
342
343
  }
343
- r.setOperator(r.getOperator(1) + 1, 1);
344
+ r.setOperator(((_b = (_a = r.array[1]) === null || _a === void 0 ? void 0 : _a.repeat) !== null && _b !== void 0 ? _b : 0) + 1, 1);
344
345
  r.normalize();
345
346
  return r;
346
347
  }
@@ -351,7 +352,7 @@
351
352
  if (!other.isFinite()) return other.clone();
352
353
  if (!this.isFinite()) return this.clone();
353
354
  if (this.eq(10)) return other.pow10();
354
- if (this.lt(0)) {
355
+ if (this.isneg()) {
355
356
  if (!other.isInt()) return PowiainaNum.NaN.clone();
356
357
  var r = this.abs().pow(other);
357
358
  r.sign = function () {
@@ -361,6 +362,13 @@
361
362
  }();
362
363
  return r;
363
364
  }
365
+ var a = this.toNumber();
366
+ var b = this.toNumber();
367
+ var t = Math.pow(a, b);
368
+ if (!isFinite(t)) {
369
+ // optimize?
370
+ return PowiainaNum.fromNumber(t);
371
+ }
364
372
  // log10(a^b) = b log10(a)
365
373
  return this.log10().mul(other).pow10();
366
374
  }
@@ -396,7 +404,7 @@
396
404
  }, {
397
405
  key: "log10",
398
406
  value: function log10() {
399
- if (this.lt(0)) return PowiainaNum.NaN.clone();
407
+ if (this.isneg()) return PowiainaNum.NaN.clone();
400
408
  if (this.isZero()) return PowiainaNum.NEGATIVE_INFINITY.clone();
401
409
  if (this.small) {
402
410
  var _x = this.clone();
@@ -531,7 +539,7 @@
531
539
  return PowiainaNum.NaN.clone(); //complex
532
540
  }
533
541
  if (this.layer === 0) {
534
- return PowiainaNum.fromNumber(f_lambertw(this.sign * this.getOperator(0), 1e-10, false));
542
+ return PowiainaNum.fromNumber(f_lambertw(this.sign * this.array[0].repeat, 1e-10, false));
535
543
  } else if (this.layer == 1) {
536
544
  return d_lambertw(this, 1e-10, false);
537
545
  } else {
@@ -592,7 +600,7 @@
592
600
  if (this.sign == 1) return PowiainaNum.ZERO.clone();else return PowiainaNum.ONE.neg().clone();
593
601
  }
594
602
  var r = this.abs();
595
- r.setOperator(Math[this.sign == 1 ? "floor" : "ceil"](r.getOperator(0)), 0);
603
+ r.array[0].repeat = Math[this.sign == 1 ? "floor" : "ceil"](r.getOperator(0));
596
604
  return r;
597
605
  }
598
606
  }, {
@@ -603,7 +611,7 @@
603
611
  if (this.sign == 1) return PowiainaNum.ONE.clone();else return PowiainaNum.ZERO.clone();
604
612
  }
605
613
  var r = this.abs();
606
- r.setOperator(Math[this.sign == 1 ? "ceil" : "floor"](r.getOperator(0)), 0);
614
+ r.array[0].repeat = Math[this.sign == 1 ? "ceil" : "floor"](r.getOperator(0));
607
615
  r.sign = this.sign;
608
616
  return r;
609
617
  }
@@ -619,7 +627,7 @@
619
627
  }
620
628
  }
621
629
  var r = this.abs();
622
- r.setOperator(Math.round(r.getOperator(0)), 0);
630
+ r.array[0].repeat = Math.round(r.array[0].repeat);
623
631
  r.sign = this.sign;
624
632
  return r;
625
633
  }
@@ -732,16 +740,27 @@
732
740
  value: function isInt() {
733
741
  if (this.isZero()) return true;
734
742
  if (!this.small && Number.isInteger(this.getOperator(0))) return true;
735
- if (this.abs().gte(Math.pow(2, 52))) return true;
743
+ if (this.abs().gte(MSI / 2)) return true;
736
744
  return false;
737
745
  }
746
+ }, {
747
+ key: "ispos",
748
+ value: function ispos() {
749
+ return this.sign > 0;
750
+ }
751
+ }, {
752
+ key: "isneg",
753
+ value: function isneg() {
754
+ return this.sign < 0;
755
+ }
756
+ }, {
757
+ key: "normalize",
758
+ value:
738
759
  /**
739
760
  * Normalize functions will make this number convert into standard format.(it also change `this`, like [].sort)
740
761
  * @returns normalized number
741
762
  */
742
- }, {
743
- key: "normalize",
744
- value: function normalize() {
763
+ function normalize() {
745
764
  //TODO: normalize
746
765
  var renormalize = true;
747
766
  var x = this;
@@ -812,7 +831,6 @@
812
831
  }
813
832
  if (x.array.length > PowiainaNum.maxOps) x.array.splice(1, x.array.length - PowiainaNum.maxOps); // max operators check
814
833
  if (this.getOperator(1) >= 1 && this.getOperator(0) < MSI_LOG10) {
815
- console.log(this.array);
816
834
  this.setOperator(this.getOperator(1) - 1, 1);
817
835
  this.setOperator(Math.pow(10, this.getOperator(0)), 0);
818
836
  renormalize = true;
@@ -863,6 +881,10 @@
863
881
  value: function getOperatorIndex(arrow) {
864
882
  var expans = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
865
883
  var megota = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
884
+ if (this.array.length == 1 && arrow == 0) return 0;
885
+ if (this.array.length == 1 && arrow == 1) return 0.5;
886
+ if (this.array.length == 2 && arrow == 1) return 1;
887
+ if (this.array.length == 2 && arrow == 0) return 0;
866
888
  for (var i = 0; i < this.array.length; i++) {
867
889
  var cmp = compareTuples([this.array[i].megota, this.array[i].expans, this.array[i].arrow], [megota, expans, arrow]);
868
890
  if (cmp == 0) return i; // I find it was [xx,xxx,*xxx*,xxx]!
@@ -1069,6 +1091,11 @@
1069
1091
  var principal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1070
1092
  return new PowiainaNum(x).lambertw(principal);
1071
1093
  }
1094
+ }, {
1095
+ key: "isNaN",
1096
+ value: function isNaN(x) {
1097
+ return new PowiainaNum(x).isNaN();
1098
+ }
1072
1099
  }, {
1073
1100
  key: "fromNumber",
1074
1101
  value: function fromNumber(x) {
@@ -1078,15 +1105,16 @@
1078
1105
  var y = Math.abs(x);
1079
1106
  if (y >= MSI_REC && y < 1) {
1080
1107
  obj.small = true;
1081
- obj.setOperator(1 / y, 0);
1108
+ obj.array = [newOperator(1 / y, 0)];
1082
1109
  } else if (y < MSI_REC) {
1083
1110
  obj.small = true;
1084
- obj.setOperator(-Math.log10(y), 0);
1085
- obj.setOperator(1, 1);
1111
+ obj.array = [newOperator(-Math.log10(y), 0), newOperator(1, 1)];
1112
+ } else if (y <= MSI) {
1113
+ obj.array = [newOperator(y, 0)];
1086
1114
  } else {
1087
- obj.setOperator(y, 0);
1115
+ obj.setOperator(Math.log10(y), 0);
1116
+ obj.array = [newOperator(Math.log10(y), 0), newOperator(1, 1)];
1088
1117
  }
1089
- obj.normalize();
1090
1118
  return obj;
1091
1119
  }
1092
1120
  }, {
@@ -1097,6 +1125,15 @@
1097
1125
  throw powiainaNumError + "malformed input: " + input;
1098
1126
  }
1099
1127
  var x = new PowiainaNum();
1128
+ // Judge the string was a number
1129
+ // @ts-ignore
1130
+ if (!isNaN(Number(input))) {
1131
+ // @ts-ignore
1132
+ if (isFinite(Number(input))) {
1133
+ x.resetFromObject(PowiainaNum.fromNumber(Number(input)));
1134
+ return x;
1135
+ }
1136
+ }
1100
1137
  var negateIt = false;
1101
1138
  var recipIt = false;
1102
1139
  if (input[0] == "-" || input[0] == "+") {
@@ -1 +1 @@
1
- !function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).PowiainaNum=e()}(this,(function(){"use strict";function r(r,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,e(n.key),n)}}function e(r){var e=function(r,e){if("object"!=typeof r||!r)return r;var t=r[Symbol.toPrimitive];if(void 0!==t){var a=t.call(r,e||"default");if("object"!=typeof a)return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(r)}(r,"string");return"symbol"==typeof e?e:e+""}function t(r){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r})(r)}var a=9007199254740991,n=15.954589770191003,i=/^[-\+]*(Infinity|NaN|(10(\^+|\{([1-9]\d*|!)(,([1-9]\d*|!))?(,[1-9]\d*)?\})|\(10(\^+|\{([1-9]\d*|!)(,([1-9]\d*|!))?(,[1-9]\d*)?\})\)\^[1-9]\d* )*((\d+(\.\d*)?|\d*\.\d+)?([Ee][-\+]*))*(0|\d+(\.\d*)?|\d*\.\d+))$/;function o(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{repeat:r,arrow:e,expans:t,megota:a,valuereplaced:e==1/0?0:t==1/0?1:-1}}function s(){for(var r=arguments.length,e=new Array(r),t=0;t<r;t++)e[t]=arguments[t];for(var a=0;a<Math.min(e[0].length,e[1].length);a++){var n=e[0][a],i=e[1][a];if(n<i)return-1;if(n>i)return 1}return 0}function l(r){return Math.log10(Number(r.substring(0,17)))+(r.length-17)}var u=.5671432904097838;function h(r){var e,t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!Number.isFinite(r))return r;if(n){if(0===r)return r;if(1===r)return u;e=r<10?0:Math.log(r)-Math.log(Math.log(r))}else{if(0===r)return-1/0;e=r<=-.1?-2:Math.log(-r)-Math.log(-Math.log(-r))}for(var i=0;i<100;++i){if(t=(r*Math.exp(-e)+e*e)/(e+1),Math.abs(t-e)<a*Math.abs(t))return t;e=t}throw Error("Iteration failed to converge: ".concat(r.toString()))}function g(r){var e,t,a,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(r.isInfinite())return r;if(o){if(r.eq(c.ZERO))return c.ZERO.clone();if(r.eq(c.ONE))return c.fromNumber(u);e=r.log()}else{if(r.eq(c.ZERO))return c.NEGATIVE_INFINITY.clone();e=r.neg().log()}for(var s=0;s<100;++s){if(t=e.neg().exp(),a=e.sub(r.mul(t)),(n=e.sub(a.div(e.add(1).sub(e.add(2).mul(a).div(e.mul(2).add(2)))))).sub(e).abs().lt(n.abs().mul(i)))return n;e=n}throw Error("Iteration failed to converge: ".concat(r.toString()))}var p,c=function(){function e(r){if(function(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.array=[{arrow:0,expans:1,megota:1,repeat:NaN}],this.small=!1,this.sign=0,this.layer=0,void 0===r);else if("number"==typeof r){var a=e.fromNumber(r);this.resetFromObject(a)}else if("object"==t(r)){var n=e.fromObject(r);this.resetFromObject(n)}else if("string"==typeof r){var i=e.fromString(r);this.resetFromObject(i)}}return function(e,t,a){return t&&r(e.prototype,t),a&&r(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e}(e,[{key:"add",value:function(r){var t,a,i=this.clone(),o=new e(r);if(i.eq(e.POSITIVE_INFINITY)&&o.eq(e.NEGATIVE_INFINITY)||i.eq(e.NEGATIVE_INFINITY)&&o.eq(e.POSITIVE_INFINITY))return e.NaN.clone();if(!i.isFinite())return i.clone();if(!o.isFinite())return o.clone();if(i.isZero())return o.clone();if(o.isZero())return i.clone();if(i.sign==-o.sign&&function(){var r=i.abs(),e=o.abs();return r.eq(e)}())return e.ZERO.clone();if(i.abs().lt(e.E_MSI_REC)||i.abs().gt(e.E_MSI)||o.abs().lt(e.E_MSI_REC)||o.abs().gt(e.E_MSI))return i.maxabs(o);if(-1==i.sign)return i.neg().add(o.neg()).neg();i.cmpabs(o)>0?(t=i,a=o):(a=i,t=o);var s=1;if(!(t.small||a.small||t.getOperator(1)||a.getOperator(1)||t.sign!=a.sign))return new e((t.getOperator(0)+a.getOperator(0))*t.sign);var l=(t.small?-1:1)*(t.getOperator(1)?t.getOperator(0):Math.log10(t.getOperator(0))),u=(a.small?-1:1)*(a.getOperator(1)?a.getOperator(0):Math.log10(a.getOperator(0)));if(l-u>n)return t;var h,g,p=-Math.floor(l),c=0;if((g=t.sign*Math.pow(10,l+p)+a.sign*Math.pow(10,u+p))>0&&(c=Math.log10(g)-p),g<0&&(c=Math.log10(-g)-p,s*=-1),0==g)throw Error("Encounter a calculate error");return(h=new e).sign=1,c>n||c<-n?(h.setOperator(1,1),h.setOperator(Math.log10(Math.abs(c)),1)):h.setOperator(Math.pow(10,Math.abs(c)),0),h.small=c<0,h.sign*=s,h}},{key:"sub",value:function(r){return this.add(new e(r).neg())}},{key:"mul",value:function(r){var t,a=this.clone(),n=new e(r);return a.eq(e.POSITIVE_INFINITY)&&n.eq(e.NEGATIVE_INFINITY)||n.eq(e.POSITIVE_INFINITY)&&a.eq(e.NEGATIVE_INFINITY)?e.NEGATIVE_INFINITY.clone():a.isInfinite()&&n.eq(e.ZERO)&&n.isInfinite()&&a.eq(e.ZERO)?e.NaN.clone():a.eq(e.NEGATIVE_INFINITY)&&n.eq(e.NEGATIVE_INFINITY)?e.POSITIVE_INFINITY.clone():a.isFinite()?n.isFinite()?a.isZero()||n.isZero()?e.ZERO.clone():((t=a.abs().log10().add(n.abs().log10()).pow10()).sign=a.sign*n.sign,t):n.clone():a.clone()}},{key:"div",value:function(r){var t=new e(r).rec();return this.mul(t)}},{key:"pow10",value:function(){var r=this.clone();return this.isFinite()?r.lt(0)?(r.sign*=-1,r.pow10().rec()):r.small?r.lt(e.MSI_REC)?e.ONE:new e(Math.pow(10,Math.pow(r.getOperator(0),-1))):(r.setOperator(r.getOperator(1)+1,1),r.normalize(),r):this.clone()}},{key:"pow",value:function(r){var t,a=new e(r);if(!a.isFinite())return a.clone();if(!this.isFinite())return this.clone();if(this.eq(10))return a.pow10();if(this.lt(0)){if(!a.isInt())return e.NaN.clone();var n=this.abs().pow(a);return n.sign=(t=a.mod(2).round()).eq(0)||t.eq(2)?1:-1,n}return this.log10().mul(a).pow10()}},{key:"pow_base",value:function(r){return new e(r).pow(this)}},{key:"root",value:function(r){var t=new e(r);return this.pow(t.rec())}},{key:"sqrt",value:function(){return this.pow(.5)}},{key:"cbrt",value:function(){return this.root(3)}},{key:"abs",value:function(){var r=this.clone();return r.sign<0&&(r.sign*=-1),r}},{key:"log10",value:function(){if(this.lt(0))return e.NaN.clone();if(this.isZero())return e.NEGATIVE_INFINITY.clone();if(this.small){var r=this.clone();return r.small=!r.small,r.log10().neg()}if(0==this.getOperator(1))return new e(Math.log10(this.getOperator(0)));var t=this.clone();return t.setOperator(t.getOperator(1)-1,1),t.normalize(),t}},{key:"log",value:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Math.E,t=new e(r);return this.log10().div(t.log10())}},{key:"exp",value:function(){return this.pow_base(Math.E)}},{key:"mod",value:function(r){var t=new e(r),a=this.div(t);return a.sub(a.floor()).mul(t)}},{key:"factorial",value:function(){return this.abs().lt(a)?this.add(1).gamma():this.abs().lt(e.E_MSI)?e.exp(this.mul(this.log10().sub(1))):e.exp(this)}},{key:"gamma",value:function(){if(this.small)return this.rec();if(this.lte(a)){if(this.lt(24))return e.fromNumber(function(r){if(!isFinite(r))return r;if(r<-50)return r===Math.trunc(r)?Number.NEGATIVE_INFINITY:0;for(var e=1;r<10;)e*=r,++r;var t=.9189385332046727;t+=((r-=1)+.5)*Math.log(r),t-=r;var a=r*r,n=r;return t+=1/(12*n),t-=1/(360*(n*=a)),t+=1/(1260*(n*=a)),t-=1/(1680*(n*=a)),t+=1/(1188*(n*=a)),t-=691/(360360*(n*=a)),t+=7/(1092*(n*=a)),t-=3617/(122400*(n*=a)),Math.exp(t)/e}(this.sign*this.getOperator(0)));var r=this.getOperator(0)-1,t=.9189385332046727;t+=(r+.5)*Math.log(r);var n=r*r,i=r,o=12*i,s=1/o,l=(t-=r)+s;if(l===t)return e.exp(t);if((l=(t=l)-(s=1/(o=360*(i*=n))))===t)return e.exp(t);t=l;var u=1/(o=1260*(i*=n));return t+=u,t-=u=1/(o=1680*(i*=n)),e.exp(t)}return this.gt(a)?e.exp(this.mul(this.log().sub(1))):e.exp(this)}},{key:"lambertw",value:function(){var r=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.lt(-.3678794411710499)?e.NaN.clone():r?this.abs().lt("1e-300")?new e(this):this.small?e.fromNumber(h(this.toNumber())):0===this.layer?e.fromNumber(h(this.sign*this.getOperator(0))):this.lt("eee15")?g(this):this.log():1===this.sign?e.NaN.clone():0===this.layer?e.fromNumber(h(this.sign*this.getOperator(0),1e-10,!1)):1==this.layer?g(this,1e-10,!1):this.neg().rec().lambertw().neg()}},{key:"max",value:function(r){var t=new e(r);return this.lt(t)?t.clone():this.clone()}},{key:"min",value:function(r){var t=new e(r);return this.gte(t)?t.clone():this.clone()}},{key:"maxabs",value:function(r){var t=new e(r).abs();return this.abs().lt(t)?t.clone():this.clone()}},{key:"minabs",value:function(r){var t=new e(r).abs();return this.abs().gt(t)?t.clone():this.clone()}},{key:"cmpabs",value:function(r){var t=new e(r).abs();return this.abs().cmp(t)}},{key:"neg",value:function(){var r=this.clone();return r.sign*=-1,r.normalize(),r}},{key:"rec",value:function(){var r=this.clone();return r.small=!r.small,r}},{key:"floor",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?e.ZERO.clone():e.ONE.neg().clone();var r=this.abs();return r.setOperator(Math[1==this.sign?"floor":"ceil"](r.getOperator(0)),0),r}},{key:"ceil",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?e.ONE.clone():e.ZERO.clone();var r=this.abs();return r.setOperator(Math[1==this.sign?"ceil":"floor"](r.getOperator(0)),0),r.sign=this.sign,r}},{key:"round",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?this.rec().lte(2)?e.ONE.clone():e.ZERO.clone():this.abs().rec().lte(2)?e.ZERO.clone():e.ONE.neg().clone();var r=this.abs();return r.setOperator(Math.round(r.getOperator(0)),0),r.sign=this.sign,r}},{key:"compare",value:function(r){var t=new e(r);if(this.isNaN()||t.isNaN())return 2;if(this.sign<t.sign)return-1;if(this.sign>t.sign)return 1;var a=-1==this.sign&&-1==t.sign;if(this.small&&!t.small)return-1*(a?-1:1);if(t.small&&!this.small)return 1*(a?-1:1);var n=1;this.small&&t.small&&(n*=-1),a&&(n*=-1);for(var i=0,o=0;this.array.length-1-o>=0&&t.array.length-1-o>=0;o++){var l=this.array[this.array.length-1-o],u=t.array[t.array.length-1-o],h=s([l.megota,l.expans,l.arrow,l.repeat],[u.megota,u.expans,u.arrow,u.repeat]);if(1==h){i=1;break}if(-1==h){i=-1;break}}return i*n+1-1}},{key:"cmp",value:function(r){return this.compare(r)}},{key:"eq",value:function(r){return 0===this.cmp(r)}},{key:"neq",value:function(r){return 0!==this.cmp(r)}},{key:"lt",value:function(r){return-1===this.cmp(r)}},{key:"lte",value:function(r){return this.cmp(r)<=0}},{key:"gt",value:function(r){return 1==this.cmp(r)}},{key:"gte",value:function(r){var e=this.cmp(r);return 0==e||1==e}},{key:"isNaN",value:function(r){function e(){return r.apply(this,arguments)}return e.toString=function(){return r.toString()},e}((function(){return isNaN(this.getOperator(0))}))},{key:"isZero",value:function(){return Boolean(this.small&&!isFinite(this.getOperator(0)))}},{key:"isFinite",value:function(r){function e(){return r.apply(this,arguments)}return e.toString=function(){return r.toString()},e}((function(){return Boolean(this.small||isFinite(this.getOperator(0)))&&!this.isNaN()}))},{key:"isInfinite",value:function(){return Boolean(!this.small&&!isFinite(this.getOperator(0)))||this.isNaN()}},{key:"isInt",value:function(){return!!this.isZero()||(!(this.small||!Number.isInteger(this.getOperator(0)))||!!this.abs().gte(Math.pow(2,52)))}},{key:"normalize",value:function(){for(var r=!0,t=this,i=0;i<this.array.length;i++)if(this.array[i].repeat==1/0)return this.array=[{arrow:0,expans:1,megota:1,repeat:1/0}],this.layer=0,this;for(var l=1;l<t.array.length;++l){var u=t.array[l];if(null!==u.arrow&&void 0!==u.arrow||(u.arrow=0),null!==u.expans&&void 0!==u.expans||(u.expans=1),null!==u.megota&&void 0!==u.megota||(u.megota=1),isNaN(u.arrow)||isNaN(u.repeat)||isNaN(u.expans)||isNaN(u.megota))return t.array=[o(NaN,0,1,1)],t;if(!isFinite(u.repeat)||!isFinite(u.megota))return t.array=[o(1/0,0,1,1)],t;Number.isInteger(u.arrow)||(u.arrow=Math.floor(u.arrow)),Number.isInteger(u.repeat)||(u.repeat=Math.floor(u.repeat)),Number.isInteger(u.expans)||(u.expans=Math.floor(u.expans)),Number.isInteger(u.megota)||(u.megota=Math.floor(u.megota))}do{for(r=!1,this.array.sort((function(r,e){return s([r.megota,r.expans,r.arrow],[e.megota,e.expans,e.arrow])})),l=1;l<t.array.length;++l)0===t.array[l].arrow||0!==t.array[l].repeat&&null!==t.array[l].repeat&&void 0!==t.array[l].repeat?0==t.array[l].arrow&&t.array[l].expans>=2&&(t.array[l].arrow=1/0,t.array[l].valuereplaced=0,t.array[l].expans=t.array[l].expans-1):(t.array.splice(l,1),--l);for(var h=1;h<this.array.length;h++)0==this.array[h].repeat&&(this.array.splice(h,1),h--);for(t.array.length||(t.small=!t.small,t.array=[o(1/0)]),t.array.length>e.maxOps&&t.array.splice(1,t.array.length-e.maxOps),this.getOperator(1)>=1&&this.getOperator(0)<n&&(console.log(this.array),this.setOperator(this.getOperator(1)-1,1),this.setOperator(Math.pow(10,this.getOperator(0)),0),r=!0),this.getOperator(0)>a&&(this.setOperator(this.getOperator(1)+1,1),this.setOperator(Math.log10(this.getOperator(0)),0),r=!0),1==this.array.length&&this.array[0].repeat<1&&(this.array[0].repeat=1/this.array[0].repeat,this.small=!this.small,r=!0);t.array.length>=2&&1==t.array[0].repeat&&t.array[1].repeat;)t.array[1].repeat>1?t.array[1].repeat--:t.array.splice(1,1),t.array[0].repeat=10,r=!0;for(t.array.length>=2&&t.array[0].repeat<a&&t.array[1].arrow>=2&&1==t.array[1].repeat&&(t.array.splice(1,1,o(t.array[0].repeat,t.array[1].arrow-1,t.array[1].expans,t.array[1].megota)),t.array[0].repeat=10,r=!0),l=1;l<t.array.length-1;++l)t.array[l].arrow==t.array[l+1].arrow&&t.array[l].expans==t.array[l+1].expans&&t.array[l].megota==t.array[l+1].megota&&(t.array[l].repeat+=t.array[l+1].repeat,t.array.splice(l+1,1),--l,r=!0)}while(r);return this}},{key:"getOperatorIndex",value:function(r){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=0;a<this.array.length;a++){var n=s([this.array[a].megota,this.array[a].expans,this.array[a].arrow],[t,e,r]);if(0==n)return a;if(1==n)return a-.5}return this.array.length-.5}},{key:"getOperator",value:function(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=this.getOperatorIndex(r,e,t);return this.array[a]?this.array[a].repeat:0}},{key:"setOperator",value:function(r,e){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,n=this.getOperatorIndex(e,t,a);return this.array[n]?(this.array[n].repeat=r,!1):(this.array.splice(Math.ceil(n),0,{arrow:e,expans:t,megota:a,valuereplaced:t===1/0?1:e==1/0?0:-1,repeat:r}),!0)}},{key:"clone",value:function(){var r=new e;return r.resetFromObject(this),r}},{key:"resetFromObject",value:function(r){this.array=[];for(var e=0;e<r.array.length;e++)this.array[e]={arrow:r.array[e].arrow,expans:r.array[e].expans,megota:r.array[e].megota,repeat:r.array[e].repeat,valuereplaced:r.array[e].valuereplaced};return this.small=r.small,this.sign=r.sign,this.layer=r.layer,this}},{key:"toNumber",value:function(){return-1==this.sign?-this.neg().toNumber():this.small?1/this.rec().toNumber():0==this.getOperator(1)?this.getOperator(0):1==this.getOperator(1)?Math.pow(10,this.getOperator(0)):NaN}},{key:"toString",value:function(){if(this.isNaN())return"NaN";if(-1==this.sign)return"-".concat(this.neg().toString());if(this.small)return this.eq(e.ZERO)?"0":"/".concat(this.rec().toString());if(this.isInfinite())return"Infinity";for(var r="",t=this.array.length-1;t>=0;t--){var a=this.array[t],n="10{".concat(a.arrow===1/0?"!":a.arrow).concat(a.expans>1||a.megota>1?",".concat(a.expans===1/0?"!":a.expans):"").concat(a.megota>1?",".concat(a.megota):"","}");n=1==a.arrow&&1==a.expans&&1==a.megota&&a.repeat<5?"e".repeat(a.repeat):0==a.arrow&&1==a.expans&&1==a.megota?a.repeat.toString():a.repeat>1?"(".concat(n,")^").concat(a.repeat," "):"".concat(n," "),r+="".concat(n)}return r}},{key:"arr01",get:function(){for(var r=[0],e=0;e<this.array.length;e++)0==e?r[0]=this.array[e].repeat:(r[e]=[0,0,0,0],r[e][0]=this.array[e].arrow==1/0?"x":this.array[e].arrow,r[e][1]=this.array[e].repeat,r[e][2]=this.array[e].expans==1/0?"x":this.array[e].expans,r[e][3]=this.array[e].megota);return r}}],[{key:"add",value:function(r,t){return new e(r).add(t)}},{key:"sub",value:function(r,t){return new e(r).sub(t)}},{key:"mul",value:function(r,t){return new e(r).mul(t)}},{key:"div",value:function(r,t){return new e(r).div(t)}},{key:"pow",value:function(r,t){return new e(r).pow(t)}},{key:"root",value:function(r,t){return new e(r).root(t)}},{key:"sqrt",value:function(r){return new e(r).sqrt()}},{key:"cbrt",value:function(r){return new e(r).cbrt()}},{key:"log10",value:function(r){return new e(r).log10()}},{key:"log",value:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.E;return new e(r).log(t)}},{key:"exp",value:function(r){return new e(r).pow_base(Math.E)}},{key:"factorial",value:function(r){return new e(r).factorial()}},{key:"gamma",value:function(r){return new e(r).gamma()}},{key:"lambertw",value:function(r){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new e(r).lambertw(t)}},{key:"fromNumber",value:function(r){var t=new e;r<0?t.sign=-1:0==r?t.sign=0:r>0&&(t.sign=1);var a=Math.abs(r);return a>=11102230246251568e-32&&a<1?(t.small=!0,t.setOperator(1/a,0)):a<11102230246251568e-32?(t.small=!0,t.setOperator(-Math.log10(a),0),t.setOperator(1,1)):t.setOperator(a,0),t.normalize(),t}},{key:"fromString",value:function(r){var t,s,u,h,g,p;if(!i.test(r))throw"[PowiainaNum 0.2 error]malformed input: "+r;var c=new e,f=!1,y=!1;if("-"==r[0]||"+"==r[0]){var m=r.search(/[^-\+]/);f=(null!==(s=null===(t=r.substring(0,m).match(/-/g))||void 0===t?void 0:t.length)&&void 0!==s?s:0)%2==1,r=r.substring(m)}if("/"==r[0]){m=r.search(/[^\/]/);y=(null!==(h=null===(u=r.substring(0,m).match(/\//g))||void 0===u?void 0:u.length)&&void 0!==h?h:0)%2==1,r=r.substring(m)}if("NaN"==r)c.array=[o(NaN)];else if("Infinity"==r)c.array=[o(1/0)];else{var v,w,N,b;for(c.sign=1,c.array=[o(0)];r&&/^(\(?10[\^\{])/.test(r);){var I,d,O;if("("==r[0]&&(r=r.substring(1)),"^"==r[2])I=v=r.substring(2).search(/[^\^]/),w=v+2;else{v=r.indexOf("}");var M=r.substring(3,v).split(",");I=Number("!"==M[0]?1/0:M[0]),d=Number(null!==(g="!"==M[1]?1/0:M[1])&&void 0!==g?g:1),O=Number(null!==(p=M[2])&&void 0!==p?p:1),w=v+1}")"==(r=r.substring(w))[0]?(v=r.indexOf(" "),N=Number(r.substring(2,v)),r=r.substring(v+1)):N=1,1==I&&1==d&&1==O?c.array.length>=2&&1==c.array[1].arrow?c.array[1].repeat+=N:c.array.splice(1,0,o(N,1,d,O)):2==I&&1==d&&1==O?(v=c.array.length>=2&&1==c.array[1].arrow?c.array[1].repeat:0,(w=c.array[0].repeat)>=1e10&&++v,w>=10&&++v,c.array[0].repeat=v,c.array.length>=2&&1==c.array[1].arrow&&c.array.splice(1,1),b=c.getOperatorIndex(2),Number.isInteger(b)?c.array[b].repeat+=N:c.array.splice(Math.ceil(b),0,o(N,2,d,O))):isFinite(I)?(v=c.getOperator(I-1),(w=c.getOperator(I-2))>=10&&++v,b=c.getOperatorIndex(I),c.array.splice(1,Math.ceil(b)-1),c.array[0].repeat=v,Number.isInteger(b)?c.array[1].repeat+=N:c.array.splice(1,0,o(N,I,d,O))):c.array.splice(1,0,o(N,I,d,O))}v=r.split(/[Ee]/),w=[c.array[0].repeat,0],N=1;for(var E=v.length-1;E>=0;--E){w[0]<n&&0===w[1]?w[0]=Math.pow(10,N*w[0]):-1==N?(0===w[1]?w[0]=Math.pow(10,N*w[0]):1==w[1]&&w[0]<=Math.log10(Number.MAX_VALUE)?w[0]=Math.pow(10,N*Math.pow(10,w[0])):w[0]=0,w[1]=0):w[1]++;var k=v[E].indexOf("."),x=-1==k?v[E].length:k;0===w[1]?x>=17?(w[0]=Math.log10(w[0])+l(v[E].substring(0,x)),w[1]=1):v[E]&&(w[0]*=Number(v[E])):(b=x>=17?l(v[E].substring(0,x)):v[E]?Math.log10(Number(v[E])):0,1==w[1]?w[0]+=b:2==w[1]&&w[0]<n+Math.log10(b)&&(w[0]+=Math.log10(1+Math.pow(10,Math.log10(b)-w[0])))),w[0]<n&&w[1]?(w[0]=Math.pow(10,w[0]),w[1]--):w[0]>a&&(w[0]=Math.log10(w[0]),w[1]++)}c.array[0].repeat=w[0],w[1]&&(c.array.length>=2&&1==c.array[1].arrow?c.array[1].repeat+=w[1]:c.array.splice(1,0,o(w[1],1,1,1)))}return f&&(c.sign*=-1),y&&(c.small=!c.small),c.normalize(),c.normalize(),c}},{key:"fromObject",value:function(r){var t=new e;t.array=[];for(var a=0;a<r.array.length;a++)t.array[a]={arrow:r.array[a].arrow,expans:r.array[a].expans,megota:r.array[a].megota,repeat:r.array[a].repeat,valuereplaced:r.array[a].valuereplaced};return t.small=r.small,t.sign=r.sign,t.layer=r.layer,t}}])}();return c.ZERO=new c({array:[{arrow:0,expans:1,megota:1,repeat:1/0}],small:!0,layer:0,sign:0}),c.ONE=new c({array:[{arrow:0,expans:1,megota:1,repeat:1}],small:!1,layer:0,sign:1}),c.MSI=new c(a),c.MSI_REC=((p=new c(a)).small=!0,p),c.E_MSI=new c({array:[{arrow:0,expans:1,megota:1,repeat:a},{arrow:1,expans:1,megota:1,repeat:1}],small:!1,layer:0,sign:1}),c.E_MSI_REC=new c({array:[{arrow:0,expans:1,megota:1,repeat:a},{arrow:1,expans:1,megota:1,repeat:1}],small:!0,layer:0,sign:1}),c.TRITRI=new c({small:!1,layer:0,sign:1,array:[o(3638334640023.7783,0,1,1),o(7625587484984,1,1,1)]}),c.GRAHAMS_NUMBER=new c("(10{!})^63 10^^^(10^)^7625597484984 3638334640023.7783"),c.POSITIVE_INFINITY=new c(1/0),c.NEGATIVE_INFINITY=new c(-1/0),c.NaN=new c({array:[{arrow:0,expans:1,megota:1,repeat:NaN}],small:!1,layer:0,sign:0}),c.maxOps=100,c}));
1
+ !function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).PowiainaNum=e()}(this,(function(){"use strict";function r(r,a){for(var t=0;t<a.length;t++){var n=a[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,e(n.key),n)}}function e(r){var e=function(r,e){if("object"!=typeof r||!r)return r;var a=r[Symbol.toPrimitive];if(void 0!==a){var t=a.call(r,e||"default");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(r)}(r,"string");return"symbol"==typeof e?e:e+""}function a(r){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r})(r)}var t=9007199254740991,n=15.954589770191003,i=/^[-\+]*(Infinity|NaN|(10(\^+|\{([1-9]\d*|!)(,([1-9]\d*|!))?(,[1-9]\d*)?\})|\(10(\^+|\{([1-9]\d*|!)(,([1-9]\d*|!))?(,[1-9]\d*)?\})\)\^[1-9]\d* )*((\d+(\.\d*)?|\d*\.\d+)?([Ee][-\+]*))*(0|\d+(\.\d*)?|\d*\.\d+))$/;function o(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{repeat:r,arrow:e,expans:a,megota:t,valuereplaced:e==1/0?0:a==1/0?1:-1}}function s(){for(var r=arguments.length,e=new Array(r),a=0;a<r;a++)e[a]=arguments[a];for(var t=0;t<Math.min(e[0].length,e[1].length);t++){var n=e[0][t],i=e[1][t];if(n<i)return-1;if(n>i)return 1}return 0}function l(r){return Math.log10(Number(r.substring(0,17)))+(r.length-17)}var u=.5671432904097838;function h(r){var e,a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!Number.isFinite(r))return r;if(n){if(0===r)return r;if(1===r)return u;e=r<10?0:Math.log(r)-Math.log(Math.log(r))}else{if(0===r)return-1/0;e=r<=-.1?-2:Math.log(-r)-Math.log(-Math.log(-r))}for(var i=0;i<100;++i){if(a=(r*Math.exp(-e)+e*e)/(e+1),Math.abs(a-e)<t*Math.abs(a))return a;e=a}throw Error("Iteration failed to converge: ".concat(r.toString()))}function g(r){var e,a,t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(r.isInfinite())return r;if(o){if(r.eq(p.ZERO))return p.ZERO.clone();if(r.eq(p.ONE))return p.fromNumber(u);e=r.log()}else{if(r.eq(p.ZERO))return p.NEGATIVE_INFINITY.clone();e=r.neg().log()}for(var s=0;s<100;++s){if(a=e.neg().exp(),t=e.sub(r.mul(a)),(n=e.sub(t.div(e.add(1).sub(e.add(2).mul(t).div(e.mul(2).add(2)))))).sub(e).abs().lt(n.abs().mul(i)))return n;e=n}throw Error("Iteration failed to converge: ".concat(r.toString()))}var y,p=function(){function e(r){if(function(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.array=[{arrow:0,expans:1,megota:1,repeat:NaN}],this.small=!1,this.sign=0,this.layer=0,void 0===r);else if("number"==typeof r){var t=e.fromNumber(r);this.resetFromObject(t)}else if("object"==a(r)){var n=e.fromObject(r);this.resetFromObject(n)}else if("string"==typeof r){var i=e.fromString(r);this.resetFromObject(i)}}return function(e,a,t){return a&&r(e.prototype,a),t&&r(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}(e,[{key:"add",value:function(r){var a,t,i,s,l,u,h=this.clone(),g=new e(r);if(h.eq(e.POSITIVE_INFINITY)&&g.eq(e.NEGATIVE_INFINITY)||h.eq(e.NEGATIVE_INFINITY)&&g.eq(e.POSITIVE_INFINITY))return e.NaN.clone();if(!h.isFinite())return h.clone();if(!g.isFinite())return g.clone();if(h.isZero())return g.clone();if(g.isZero())return h.clone();if(h.sign==-g.sign&&function(){var r=h.abs(),e=g.abs();return r.eq(e)}())return e.ZERO.clone();if(h.abs().lt(e.E_MSI_REC)||h.abs().gt(e.E_MSI)||g.abs().lt(e.E_MSI_REC)||g.abs().gt(e.E_MSI))return h.maxabs(g);if(-1==h.sign)return h.neg().add(g.neg()).neg();h.cmpabs(g)>0?(l=h,u=g):(u=h,l=g);var y=1;if(!(l.small||u.small||(null===(a=l.array[1])||void 0===a?void 0:a.repeat)||(null===(t=u.array[1])||void 0===t?void 0:t.repeat)||l.sign!=u.sign))return new e((l.array[0].repeat+u.array[0].repeat)*l.sign);var p=(l.small?-1:1)*((null===(i=l.array[1])||void 0===i?void 0:i.repeat)?l.array[0].repeat:Math.log10(l.array[0].repeat)),f=(u.small?-1:1)*((null===(s=u.array[1])||void 0===s?void 0:s.repeat)?u.array[0].repeat:Math.log10(u.array[0].repeat));if(p-f>n)return l;var c,v,m=-Math.floor(p),N=0;if((v=l.sign*Math.pow(10,p+m)+u.sign*Math.pow(10,f+m))>0&&(N=Math.log10(v)-m),v<0&&(N=Math.log10(-v)-m,y*=-1),0==v)throw Error("Encounter a calculate error");return(c=new e).sign=1,c.array=N>n||N<-n?[o(N,0),o(1,1)]:[o(Math.pow(10,N),0)],c.small=N<0,c.sign*=y,c}},{key:"sub",value:function(r){return this.add(new e(r).neg())}},{key:"mul",value:function(r){var a,t=this.clone(),n=new e(r);return t.eq(e.POSITIVE_INFINITY)&&n.eq(e.NEGATIVE_INFINITY)||n.eq(e.POSITIVE_INFINITY)&&t.eq(e.NEGATIVE_INFINITY)?e.NEGATIVE_INFINITY.clone():t.isInfinite()&&n.eq(e.ZERO)&&n.isInfinite()&&t.eq(e.ZERO)?e.NaN.clone():t.eq(e.NEGATIVE_INFINITY)&&n.eq(e.NEGATIVE_INFINITY)?e.POSITIVE_INFINITY.clone():t.isFinite()?n.isFinite()?t.isZero()||n.isZero()?e.ZERO.clone():((a=t.abs().log10().add(n.abs().log10()).pow10()).sign=t.sign*n.sign,a):n.clone():t.clone()}},{key:"div",value:function(r){var a=new e(r).rec();return this.mul(a)}},{key:"pow10",value:function(){var r,a,t=this.clone();return this.isFinite()?t.isneg()?(t.sign*=-1,t.pow10().rec()):t.small?t.lt(e.MSI_REC)?e.ONE:new e(Math.pow(10,Math.pow(t.array[0].repeat,-1))):(t.setOperator((null!==(a=null===(r=t.array[1])||void 0===r?void 0:r.repeat)&&void 0!==a?a:0)+1,1),t.normalize(),t):this.clone()}},{key:"pow",value:function(r){var a=new e(r);if(!a.isFinite())return a.clone();if(!this.isFinite())return this.clone();if(this.eq(10))return a.pow10();if(this.isneg()){if(!a.isInt())return e.NaN.clone();var t=this.abs().pow(a);return t.sign=function(){var r=a.mod(2).round();return r.eq(0)||r.eq(2)?1:-1}(),t}var n=this.toNumber(),i=this.toNumber(),o=Math.pow(n,i);return isFinite(o)?this.log10().mul(a).pow10():e.fromNumber(o)}},{key:"pow_base",value:function(r){return new e(r).pow(this)}},{key:"root",value:function(r){var a=new e(r);return this.pow(a.rec())}},{key:"sqrt",value:function(){return this.pow(.5)}},{key:"cbrt",value:function(){return this.root(3)}},{key:"abs",value:function(){var r=this.clone();return r.sign<0&&(r.sign*=-1),r}},{key:"log10",value:function(){if(this.isneg())return e.NaN.clone();if(this.isZero())return e.NEGATIVE_INFINITY.clone();if(this.small){var r=this.clone();return r.small=!r.small,r.log10().neg()}if(0==this.getOperator(1))return new e(Math.log10(this.getOperator(0)));var a=this.clone();return a.setOperator(a.getOperator(1)-1,1),a.normalize(),a}},{key:"log",value:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Math.E,a=new e(r);return this.log10().div(a.log10())}},{key:"exp",value:function(){return this.pow_base(Math.E)}},{key:"mod",value:function(r){var a=new e(r),t=this.div(a);return t.sub(t.floor()).mul(a)}},{key:"factorial",value:function(){return this.abs().lt(t)?this.add(1).gamma():this.abs().lt(e.E_MSI)?e.exp(this.mul(this.log10().sub(1))):e.exp(this)}},{key:"gamma",value:function(){if(this.small)return this.rec();if(this.lte(t)){if(this.lt(24))return e.fromNumber(function(r){if(!isFinite(r))return r;if(r<-50)return r===Math.trunc(r)?Number.NEGATIVE_INFINITY:0;for(var e=1;r<10;)e*=r,++r;var a=.9189385332046727;a+=((r-=1)+.5)*Math.log(r),a-=r;var t=r*r,n=r;return a+=1/(12*n),a-=1/(360*(n*=t)),a+=1/(1260*(n*=t)),a-=1/(1680*(n*=t)),a+=1/(1188*(n*=t)),a-=691/(360360*(n*=t)),a+=7/(1092*(n*=t)),a-=3617/(122400*(n*=t)),Math.exp(a)/e}(this.sign*this.getOperator(0)));var r=this.getOperator(0)-1,a=.9189385332046727;a+=(r+.5)*Math.log(r);var n=r*r,i=r,o=12*i,s=1/o,l=(a-=r)+s;if(l===a)return e.exp(a);if((l=(a=l)-(s=1/(o=360*(i*=n))))===a)return e.exp(a);a=l;var u=1/(o=1260*(i*=n));return a+=u,a-=u=1/(o=1680*(i*=n)),e.exp(a)}return this.gt(t)?e.exp(this.mul(this.log().sub(1))):e.exp(this)}},{key:"lambertw",value:function(){var r=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.lt(-.3678794411710499)?e.NaN.clone():r?this.abs().lt("1e-300")?new e(this):this.small?e.fromNumber(h(this.toNumber())):0===this.layer?e.fromNumber(h(this.sign*this.getOperator(0))):this.lt("eee15")?g(this):this.log():1===this.sign?e.NaN.clone():0===this.layer?e.fromNumber(h(this.sign*this.array[0].repeat,1e-10,!1)):1==this.layer?g(this,1e-10,!1):this.neg().rec().lambertw().neg()}},{key:"max",value:function(r){var a=new e(r);return this.lt(a)?a.clone():this.clone()}},{key:"min",value:function(r){var a=new e(r);return this.gte(a)?a.clone():this.clone()}},{key:"maxabs",value:function(r){var a=new e(r).abs();return this.abs().lt(a)?a.clone():this.clone()}},{key:"minabs",value:function(r){var a=new e(r).abs();return this.abs().gt(a)?a.clone():this.clone()}},{key:"cmpabs",value:function(r){var a=new e(r).abs();return this.abs().cmp(a)}},{key:"neg",value:function(){var r=this.clone();return r.sign*=-1,r.normalize(),r}},{key:"rec",value:function(){var r=this.clone();return r.small=!r.small,r}},{key:"floor",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?e.ZERO.clone():e.ONE.neg().clone();var r=this.abs();return r.array[0].repeat=Math[1==this.sign?"floor":"ceil"](r.getOperator(0)),r}},{key:"ceil",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?e.ONE.clone():e.ZERO.clone();var r=this.abs();return r.array[0].repeat=Math[1==this.sign?"ceil":"floor"](r.getOperator(0)),r.sign=this.sign,r}},{key:"round",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?this.rec().lte(2)?e.ONE.clone():e.ZERO.clone():this.abs().rec().lte(2)?e.ZERO.clone():e.ONE.neg().clone();var r=this.abs();return r.array[0].repeat=Math.round(r.array[0].repeat),r.sign=this.sign,r}},{key:"compare",value:function(r){var a=new e(r);if(this.isNaN()||a.isNaN())return 2;if(this.sign<a.sign)return-1;if(this.sign>a.sign)return 1;var t=-1==this.sign&&-1==a.sign;if(this.small&&!a.small)return-1*(t?-1:1);if(a.small&&!this.small)return 1*(t?-1:1);var n=1;this.small&&a.small&&(n*=-1),t&&(n*=-1);for(var i=0,o=0;this.array.length-1-o>=0&&a.array.length-1-o>=0;o++){var l=this.array[this.array.length-1-o],u=a.array[a.array.length-1-o],h=s([l.megota,l.expans,l.arrow,l.repeat],[u.megota,u.expans,u.arrow,u.repeat]);if(1==h){i=1;break}if(-1==h){i=-1;break}}return i*n+1-1}},{key:"cmp",value:function(r){return this.compare(r)}},{key:"eq",value:function(r){return 0===this.cmp(r)}},{key:"neq",value:function(r){return 0!==this.cmp(r)}},{key:"lt",value:function(r){return-1===this.cmp(r)}},{key:"lte",value:function(r){return this.cmp(r)<=0}},{key:"gt",value:function(r){return 1==this.cmp(r)}},{key:"gte",value:function(r){var e=this.cmp(r);return 0==e||1==e}},{key:"isNaN",value:function(r){function e(){return r.apply(this,arguments)}return e.toString=function(){return r.toString()},e}((function(){return isNaN(this.getOperator(0))}))},{key:"isZero",value:function(){return Boolean(this.small&&!isFinite(this.getOperator(0)))}},{key:"isFinite",value:function(r){function e(){return r.apply(this,arguments)}return e.toString=function(){return r.toString()},e}((function(){return Boolean(this.small||isFinite(this.getOperator(0)))&&!this.isNaN()}))},{key:"isInfinite",value:function(){return Boolean(!this.small&&!isFinite(this.getOperator(0)))||this.isNaN()}},{key:"isInt",value:function(){return!!this.isZero()||(!(this.small||!Number.isInteger(this.getOperator(0)))||!!this.abs().gte(t/2))}},{key:"ispos",value:function(){return this.sign>0}},{key:"isneg",value:function(){return this.sign<0}},{key:"normalize",value:function(){for(var r=!0,a=this,i=0;i<this.array.length;i++)if(this.array[i].repeat==1/0)return this.array=[{arrow:0,expans:1,megota:1,repeat:1/0}],this.layer=0,this;for(var l=1;l<a.array.length;++l){var u=a.array[l];if(null!==u.arrow&&void 0!==u.arrow||(u.arrow=0),null!==u.expans&&void 0!==u.expans||(u.expans=1),null!==u.megota&&void 0!==u.megota||(u.megota=1),isNaN(u.arrow)||isNaN(u.repeat)||isNaN(u.expans)||isNaN(u.megota))return a.array=[o(NaN,0,1,1)],a;if(!isFinite(u.repeat)||!isFinite(u.megota))return a.array=[o(1/0,0,1,1)],a;Number.isInteger(u.arrow)||(u.arrow=Math.floor(u.arrow)),Number.isInteger(u.repeat)||(u.repeat=Math.floor(u.repeat)),Number.isInteger(u.expans)||(u.expans=Math.floor(u.expans)),Number.isInteger(u.megota)||(u.megota=Math.floor(u.megota))}do{for(r=!1,this.array.sort((function(r,e){return s([r.megota,r.expans,r.arrow],[e.megota,e.expans,e.arrow])})),l=1;l<a.array.length;++l)0===a.array[l].arrow||0!==a.array[l].repeat&&null!==a.array[l].repeat&&void 0!==a.array[l].repeat?0==a.array[l].arrow&&a.array[l].expans>=2&&(a.array[l].arrow=1/0,a.array[l].valuereplaced=0,a.array[l].expans=a.array[l].expans-1):(a.array.splice(l,1),--l);for(var h=1;h<this.array.length;h++)0==this.array[h].repeat&&(this.array.splice(h,1),h--);for(a.array.length||(a.small=!a.small,a.array=[o(1/0)]),a.array.length>e.maxOps&&a.array.splice(1,a.array.length-e.maxOps),this.getOperator(1)>=1&&this.getOperator(0)<n&&(this.setOperator(this.getOperator(1)-1,1),this.setOperator(Math.pow(10,this.getOperator(0)),0),r=!0),this.getOperator(0)>t&&(this.setOperator(this.getOperator(1)+1,1),this.setOperator(Math.log10(this.getOperator(0)),0),r=!0),1==this.array.length&&this.array[0].repeat<1&&(this.array[0].repeat=1/this.array[0].repeat,this.small=!this.small,r=!0);a.array.length>=2&&1==a.array[0].repeat&&a.array[1].repeat;)a.array[1].repeat>1?a.array[1].repeat--:a.array.splice(1,1),a.array[0].repeat=10,r=!0;for(a.array.length>=2&&a.array[0].repeat<t&&a.array[1].arrow>=2&&1==a.array[1].repeat&&(a.array.splice(1,1,o(a.array[0].repeat,a.array[1].arrow-1,a.array[1].expans,a.array[1].megota)),a.array[0].repeat=10,r=!0),l=1;l<a.array.length-1;++l)a.array[l].arrow==a.array[l+1].arrow&&a.array[l].expans==a.array[l+1].expans&&a.array[l].megota==a.array[l+1].megota&&(a.array[l].repeat+=a.array[l+1].repeat,a.array.splice(l+1,1),--l,r=!0)}while(r);return this}},{key:"getOperatorIndex",value:function(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(1==this.array.length&&0==r)return 0;if(1==this.array.length&&1==r)return.5;if(2==this.array.length&&1==r)return 1;if(2==this.array.length&&0==r)return 0;for(var t=0;t<this.array.length;t++){var n=s([this.array[t].megota,this.array[t].expans,this.array[t].arrow],[a,e,r]);if(0==n)return t;if(1==n)return t-.5}return this.array.length-.5}},{key:"getOperator",value:function(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=this.getOperatorIndex(r,e,a);return this.array[t]?this.array[t].repeat:0}},{key:"setOperator",value:function(r,e){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,n=this.getOperatorIndex(e,a,t);return this.array[n]?(this.array[n].repeat=r,!1):(this.array.splice(Math.ceil(n),0,{arrow:e,expans:a,megota:t,valuereplaced:a===1/0?1:e==1/0?0:-1,repeat:r}),!0)}},{key:"clone",value:function(){var r=new e;return r.resetFromObject(this),r}},{key:"resetFromObject",value:function(r){this.array=[];for(var e=0;e<r.array.length;e++)this.array[e]={arrow:r.array[e].arrow,expans:r.array[e].expans,megota:r.array[e].megota,repeat:r.array[e].repeat,valuereplaced:r.array[e].valuereplaced};return this.small=r.small,this.sign=r.sign,this.layer=r.layer,this}},{key:"toNumber",value:function(){return-1==this.sign?-this.neg().toNumber():this.small?1/this.rec().toNumber():0==this.getOperator(1)?this.getOperator(0):1==this.getOperator(1)?Math.pow(10,this.getOperator(0)):NaN}},{key:"toString",value:function(){if(this.isNaN())return"NaN";if(-1==this.sign)return"-".concat(this.neg().toString());if(this.small)return this.eq(e.ZERO)?"0":"/".concat(this.rec().toString());if(this.isInfinite())return"Infinity";for(var r="",a=this.array.length-1;a>=0;a--){var t=this.array[a],n="10{".concat(t.arrow===1/0?"!":t.arrow).concat(t.expans>1||t.megota>1?",".concat(t.expans===1/0?"!":t.expans):"").concat(t.megota>1?",".concat(t.megota):"","}");n=1==t.arrow&&1==t.expans&&1==t.megota&&t.repeat<5?"e".repeat(t.repeat):0==t.arrow&&1==t.expans&&1==t.megota?t.repeat.toString():t.repeat>1?"(".concat(n,")^").concat(t.repeat," "):"".concat(n," "),r+="".concat(n)}return r}},{key:"arr01",get:function(){for(var r=[0],e=0;e<this.array.length;e++)0==e?r[0]=this.array[e].repeat:(r[e]=[0,0,0,0],r[e][0]=this.array[e].arrow==1/0?"x":this.array[e].arrow,r[e][1]=this.array[e].repeat,r[e][2]=this.array[e].expans==1/0?"x":this.array[e].expans,r[e][3]=this.array[e].megota);return r}}],[{key:"add",value:function(r,a){return new e(r).add(a)}},{key:"sub",value:function(r,a){return new e(r).sub(a)}},{key:"mul",value:function(r,a){return new e(r).mul(a)}},{key:"div",value:function(r,a){return new e(r).div(a)}},{key:"pow",value:function(r,a){return new e(r).pow(a)}},{key:"root",value:function(r,a){return new e(r).root(a)}},{key:"sqrt",value:function(r){return new e(r).sqrt()}},{key:"cbrt",value:function(r){return new e(r).cbrt()}},{key:"log10",value:function(r){return new e(r).log10()}},{key:"log",value:function(r){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.E;return new e(r).log(a)}},{key:"exp",value:function(r){return new e(r).pow_base(Math.E)}},{key:"factorial",value:function(r){return new e(r).factorial()}},{key:"gamma",value:function(r){return new e(r).gamma()}},{key:"lambertw",value:function(r){var a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new e(r).lambertw(a)}},{key:"isNaN",value:function(r){return new e(r).isNaN()}},{key:"fromNumber",value:function(r){var a=new e;r<0?a.sign=-1:0==r?a.sign=0:r>0&&(a.sign=1);var n=Math.abs(r);return n>=11102230246251568e-32&&n<1?(a.small=!0,a.array=[o(1/n,0)]):n<11102230246251568e-32?(a.small=!0,a.array=[o(-Math.log10(n),0),o(1,1)]):n<=t?a.array=[o(n,0)]:(a.setOperator(Math.log10(n),0),a.array=[o(Math.log10(n),0),o(1,1)]),a}},{key:"fromString",value:function(r){var a,s,u,h,g,y;if(!i.test(r))throw"[PowiainaNum 0.2 error]malformed input: "+r;var p=new e;if(!isNaN(Number(r))&&isFinite(Number(r)))return p.resetFromObject(e.fromNumber(Number(r))),p;var f=!1,c=!1;if("-"==r[0]||"+"==r[0]){var v=r.search(/[^-\+]/);f=(null!==(s=null===(a=r.substring(0,v).match(/-/g))||void 0===a?void 0:a.length)&&void 0!==s?s:0)%2==1,r=r.substring(v)}if("/"==r[0]){v=r.search(/[^\/]/);c=(null!==(h=null===(u=r.substring(0,v).match(/\//g))||void 0===u?void 0:u.length)&&void 0!==h?h:0)%2==1,r=r.substring(v)}if("NaN"==r)p.array=[o(NaN)];else if("Infinity"==r)p.array=[o(1/0)];else{var m,N,w,b;for(p.sign=1,p.array=[o(0)];r&&/^(\(?10[\^\{])/.test(r);){var d,I,O;if("("==r[0]&&(r=r.substring(1)),"^"==r[2])d=m=r.substring(2).search(/[^\^]/),N=m+2;else{m=r.indexOf("}");var E=r.substring(3,m).split(",");d=Number("!"==E[0]?1/0:E[0]),I=Number(null!==(g="!"==E[1]?1/0:E[1])&&void 0!==g?g:1),O=Number(null!==(y=E[2])&&void 0!==y?y:1),N=m+1}")"==(r=r.substring(N))[0]?(m=r.indexOf(" "),w=Number(r.substring(2,m)),r=r.substring(m+1)):w=1,1==d&&1==I&&1==O?p.array.length>=2&&1==p.array[1].arrow?p.array[1].repeat+=w:p.array.splice(1,0,o(w,1,I,O)):2==d&&1==I&&1==O?(m=p.array.length>=2&&1==p.array[1].arrow?p.array[1].repeat:0,(N=p.array[0].repeat)>=1e10&&++m,N>=10&&++m,p.array[0].repeat=m,p.array.length>=2&&1==p.array[1].arrow&&p.array.splice(1,1),b=p.getOperatorIndex(2),Number.isInteger(b)?p.array[b].repeat+=w:p.array.splice(Math.ceil(b),0,o(w,2,I,O))):isFinite(d)?(m=p.getOperator(d-1),(N=p.getOperator(d-2))>=10&&++m,b=p.getOperatorIndex(d),p.array.splice(1,Math.ceil(b)-1),p.array[0].repeat=m,Number.isInteger(b)?p.array[1].repeat+=w:p.array.splice(1,0,o(w,d,I,O))):p.array.splice(1,0,o(w,d,I,O))}m=r.split(/[Ee]/),N=[p.array[0].repeat,0],w=1;for(var M=m.length-1;M>=0;--M){N[0]<n&&0===N[1]?N[0]=Math.pow(10,w*N[0]):-1==w?(0===N[1]?N[0]=Math.pow(10,w*N[0]):1==N[1]&&N[0]<=Math.log10(Number.MAX_VALUE)?N[0]=Math.pow(10,w*Math.pow(10,N[0])):N[0]=0,N[1]=0):N[1]++;var k=m[M].indexOf("."),x=-1==k?m[M].length:k;0===N[1]?x>=17?(N[0]=Math.log10(N[0])+l(m[M].substring(0,x)),N[1]=1):m[M]&&(N[0]*=Number(m[M])):(b=x>=17?l(m[M].substring(0,x)):m[M]?Math.log10(Number(m[M])):0,1==N[1]?N[0]+=b:2==N[1]&&N[0]<n+Math.log10(b)&&(N[0]+=Math.log10(1+Math.pow(10,Math.log10(b)-N[0])))),N[0]<n&&N[1]?(N[0]=Math.pow(10,N[0]),N[1]--):N[0]>t&&(N[0]=Math.log10(N[0]),N[1]++)}p.array[0].repeat=N[0],N[1]&&(p.array.length>=2&&1==p.array[1].arrow?p.array[1].repeat+=N[1]:p.array.splice(1,0,o(N[1],1,1,1)))}return f&&(p.sign*=-1),c&&(p.small=!p.small),p.normalize(),p.normalize(),p}},{key:"fromObject",value:function(r){var a=new e;a.array=[];for(var t=0;t<r.array.length;t++)a.array[t]={arrow:r.array[t].arrow,expans:r.array[t].expans,megota:r.array[t].megota,repeat:r.array[t].repeat,valuereplaced:r.array[t].valuereplaced};return a.small=r.small,a.sign=r.sign,a.layer=r.layer,a}}])}();return p.ZERO=new p({array:[{arrow:0,expans:1,megota:1,repeat:1/0}],small:!0,layer:0,sign:0}),p.ONE=new p({array:[{arrow:0,expans:1,megota:1,repeat:1}],small:!1,layer:0,sign:1}),p.MSI=new p(t),p.MSI_REC=((y=new p(t)).small=!0,y),p.E_MSI=new p({array:[{arrow:0,expans:1,megota:1,repeat:t},{arrow:1,expans:1,megota:1,repeat:1}],small:!1,layer:0,sign:1}),p.E_MSI_REC=new p({array:[{arrow:0,expans:1,megota:1,repeat:t},{arrow:1,expans:1,megota:1,repeat:1}],small:!0,layer:0,sign:1}),p.TRITRI=new p({small:!1,layer:0,sign:1,array:[o(3638334640023.7783,0,1,1),o(7625587484984,1,1,1)]}),p.GRAHAMS_NUMBER=new p("(10{!})^63 10^^^(10^)^7625597484984 3638334640023.7783"),p.POSITIVE_INFINITY=new p(1/0),p.NEGATIVE_INFINITY=new p(-1/0),p.NaN=new p({array:[{arrow:0,expans:1,megota:1,repeat:NaN}],small:!1,layer:0,sign:0}),p.maxOps=100,p}));
package/dist/index.d.ts CHANGED
@@ -97,6 +97,9 @@ export default class PowiainaNum implements IPowiainaNum {
97
97
  isFinite(): boolean;
98
98
  isInfinite(): boolean;
99
99
  isInt(): boolean;
100
+ ispos(): boolean;
101
+ isneg(): boolean;
102
+ static isNaN(x: PowiainaNumSource): boolean;
100
103
  /**
101
104
  * Normalize functions will make this number convert into standard format.(it also change `this`, like [].sort)
102
105
  * @returns normalized number
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powiaina_num.js",
3
- "version": "0.2.0-alpha.2.3",
3
+ "version": "0.2.0-alpha.2.5",
4
4
  "description": "A JavaScript library that handles arithmetic for numbers as large as {10,9e15,1,1,1,2}.",
5
5
  "type": "module",
6
6
  "main": "dist/PowiainaNum.js",