powiaina_num.js 0.2.0-alpha.4.2 → 0.2.0-alpha.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.
@@ -66,6 +66,8 @@
66
66
  }
67
67
  }
68
68
 
69
+ /* Author: VeryrrDefine 0.2.0-alpha.4.3*/
70
+ var _a;
69
71
  var powiainaNumError = "[PowiainaNum 0.2 error]";
70
72
  var MSI = 9007199254740991;
71
73
  var MSI_LOG10 = 15.954589770191003;
@@ -73,6 +75,7 @@
73
75
  var LONG_STRING_MIN_LENGTH = 17;
74
76
  var EXP_E_REC = 1.444667861009766;
75
77
  var isPowiainaNum = /^(PN)?[\/\-\+]*(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*\x20*)*((\d+(\.\d*)?|\d*\.\d+)?([Ee][-\+]*))*(0|\d+(\.\d*)?|\d*\.\d+))$/;
78
+ //#region some useful functions
76
79
  function newOperator(r) {
77
80
  var a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
78
81
  var e = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
@@ -264,6 +267,7 @@
264
267
  }
265
268
  }
266
269
  }
270
+ //#endregion
267
271
  var PowiainaNum = /*#__PURE__*/function () {
268
272
  /**
269
273
  * Constructor of PowiainaNum class,
@@ -271,6 +275,7 @@
271
275
  */
272
276
  function PowiainaNum(arg1) {
273
277
  _classCallCheck(this, PowiainaNum);
278
+ this[_a] = "PowiainaNum";
274
279
  this.array = [{
275
280
  arrow: 0,
276
281
  expans: 1,
@@ -291,6 +296,7 @@
291
296
  this.resetFromObject(_obj2);
292
297
  } else ;
293
298
  }
299
+ //#region 4 Basic calculates.
294
300
  /**
295
301
  * Addition
296
302
  * @returns the sum of `this` and `other`
@@ -298,7 +304,7 @@
298
304
  return _createClass(PowiainaNum, [{
299
305
  key: "add",
300
306
  value: function add(other) {
301
- var _a, _b, _c, _d;
307
+ var _b, _c, _d, _e;
302
308
  var x = this.clone();
303
309
  var y = new PowiainaNum(other);
304
310
  // inf + -inf = nan
@@ -340,11 +346,11 @@
340
346
  return PowiainaNum.fromNumber(temp);
341
347
  }
342
348
  var mult = 1;
343
- 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) {
349
+ if (!a.small && !b.small && !((_b = a.array[1]) === null || _b === void 0 ? void 0 : _b.repeat) && !((_c = b.array[1]) === null || _c === void 0 ? void 0 : _c.repeat) && a.sign == b.sign) {
344
350
  return new PowiainaNum((a.array[0].repeat + b.array[0].repeat) * a.sign);
345
351
  }
346
- 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));
347
- 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));
352
+ var alog10 = (a.small ? -1 : 1) * (((_d = a.array[1]) === null || _d === void 0 ? void 0 : _d.repeat) ? a.array[0].repeat : Math.log10(a.array[0].repeat));
353
+ var blog10 = (b.small ? -1 : 1) * (((_e = b.array[1]) === null || _e === void 0 ? void 0 : _e.repeat) ? b.array[0].repeat : Math.log10(b.array[0].repeat));
348
354
  if (alog10 - blog10 > MSI_LOG10) return a;
349
355
  var offset = -Math.floor(alog10); //a number can make a+off in [0,1)
350
356
  var r,
@@ -413,13 +419,21 @@
413
419
  return this.mul(x);
414
420
  }
415
421
  }, {
416
- key: "pow10",
417
- value:
422
+ key: "mod",
423
+ value: function mod(x) {
424
+ var other = new PowiainaNum(x);
425
+ var division = this.div(other);
426
+ return division.sub(division.floor()).mul(other);
427
+ }
428
+ //#endregion
429
+ //#region power
418
430
  /**
419
431
  * @returns 10 to the power of `this`
420
432
  */
421
- function pow10() {
422
- var _a, _b;
433
+ }, {
434
+ key: "pow10",
435
+ value: function pow10() {
436
+ var _b, _c;
423
437
  var r = this.clone();
424
438
  // inf & nan check
425
439
  if (!this.isFinite()) return this.clone();
@@ -436,7 +450,7 @@
436
450
  return new PowiainaNum(Math.pow(10, Math.pow(r.array[0].repeat, -1)));
437
451
  }
438
452
  if (r.gt(PowiainaNum.TETRATED_MSI)) return r;
439
- r.setOperator(((_b = (_a = r.array[1]) === null || _a === void 0 ? void 0 : _a.repeat) !== null && _b !== void 0 ? _b : 0) + 1, 1);
453
+ r.setOperator(((_c = (_b = r.array[1]) === null || _b === void 0 ? void 0 : _b.repeat) !== null && _c !== void 0 ? _c : 0) + 1, 1);
440
454
  r.normalize();
441
455
  return r;
442
456
  }
@@ -501,141 +515,6 @@
501
515
  value: function cbrt() {
502
516
  return this.abs().root(3).mul(this.sign);
503
517
  }
504
- }, {
505
- key: "tetrate",
506
- value:
507
- // Code from ExpantaNum.js
508
- function tetrate(other2) {
509
- var payload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
510
- var t = this.clone();
511
- var other = new PowiainaNum(other2);
512
- var payl = new PowiainaNum(payload);
513
- if (t.isNaN() || other.isNaN() || payl.isNaN()) return PowiainaNum.NaN.clone();
514
- if (t.eq(1)) return PowiainaNum.ONE.clone();
515
- if (payl.neq(PowiainaNum.ONE)) other = other.add(payl.slog(t));
516
- var negln;
517
- if (other.isInfi() && other.sign > 0) {
518
- if (t.gte(EXP_E_REC)) return PowiainaNum.POSITIVE_INFINITY.clone();
519
- negln = this.log().neg();
520
- return negln.lambertw().div(negln);
521
- }
522
- if (other.lte(-2)) return PowiainaNum.NaN.clone();
523
- if (t.isZero()) {
524
- if (other.isZero()) return PowiainaNum.NaN.clone();
525
- if (other.gte(MSI / 2) || other.toNumber() % 2 == 0) return PowiainaNum.ZERO.clone();
526
- return PowiainaNum.ONE.clone();
527
- }
528
- if (t.eq(PowiainaNum.ONE)) {
529
- if (other.eq(PowiainaNum.ONE.neg())) return PowiainaNum.NaN.clone();
530
- return PowiainaNum.ONE.clone();
531
- }
532
- if (other.eq(PowiainaNum.ONE.neg())) return PowiainaNum.ZERO.clone();
533
- if (other.eq(PowiainaNum.ZERO)) return PowiainaNum.ONE.clone();
534
- if (other.eq(PowiainaNum.ONE)) return t;
535
- if (other.eq(2)) return t.pow(t);
536
- if (t.eq(2)) {
537
- if (other.eq(3)) return PowiainaNum.fromNumber(16);
538
- if (other.eq(4)) return PowiainaNum.fromNumber(65536);
539
- }
540
- var m = t.max(other);
541
- if (m.gt(PowiainaNum.PENTATED_MSI)) return m;
542
- if (m.gt(PowiainaNum.TETRATED_MSI) || other.gt(MSI)) {
543
- if (this.lt(EXP_E_REC)) {
544
- negln = t.ln().neg();
545
- return negln.lambertw().div(negln);
546
- }
547
- var j = t.slog(10).add(other);
548
- j.setOperator(j.getOperator(2) + 1, 2);
549
- j.normalize();
550
- return j;
551
- }
552
- var y = other.toNumber();
553
- var f = Math.floor(y);
554
- var r = t.pow(y - f);
555
- var l = PowiainaNum.NaN;
556
- var i = 0;
557
- for (var w = PowiainaNum.E_MSI.clone(); f !== 0 && r.lt(w) && i < 100; ++i) {
558
- if (f > 0) {
559
- r = t.pow(r);
560
- if (l.eq(r)) {
561
- f = 0;
562
- break;
563
- }
564
- l = r;
565
- --f;
566
- } else {
567
- r = r.log(t);
568
- if (l.eq(r)) {
569
- f = 0;
570
- break;
571
- }
572
- l = r;
573
- ++f;
574
- }
575
- }
576
- if (i == 100 || this.lt(EXP_E_REC)) f = 0;
577
- r.setOperator(r.getOperator(1) + f, 1);
578
- r.normalize();
579
- return r;
580
- }
581
- // Code from ExpantaNum.js
582
- }, {
583
- key: "slog",
584
- value: function slog() {
585
- var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
586
- var x = this.clone();
587
- var b = new PowiainaNum(base);
588
- if (x.isInfiNaN()) return x;
589
- if (b.isNaN()) return b;
590
- if (b.isInfi()) return PowiainaNum.ZERO.clone();
591
- if (x.isZero()) return PowiainaNum.ONE.clone();
592
- if (x.eq(PowiainaNum.ONE)) return PowiainaNum.ZERO.clone();
593
- if (x.eq(b)) return PowiainaNum.ONE.clone();
594
- if (b.lt(EXP_E_REC)) {
595
- var a = b.tetrate(Infinity);
596
- if (x.eq(a)) return PowiainaNum.POSITIVE_INFINITY.clone();
597
- if (x.gt(a)) return PowiainaNum.NaN.clone();
598
- }
599
- if (x.max(b).gt(PowiainaNum.PENTATED_MSI)) {
600
- if (x.gt(b)) return x;
601
- return PowiainaNum.ZERO.clone();
602
- }
603
- if (x.max(b).gt(PowiainaNum.TETRATED_MSI)) {
604
- if (x.gt(b)) {
605
- x.setOperator(x.getOperator(2) - 1, 2);
606
- x.normalize();
607
- return x.sub(x.getOperator(1));
608
- }
609
- }
610
- if (x.lt(PowiainaNum.ZERO.clone())) return b.pow(x).sub(2);
611
- var r = 0;
612
- var t = x.getOperator(1) - b.getOperator(1);
613
- if (t > 3) {
614
- var l = t - 3;
615
- r += l;
616
- x.setOperator(x.getOperator(1) - l, 1);
617
- }
618
- for (var i = 0; i < 100; ++i) {
619
- if (x.lt(PowiainaNum.ZERO)) {
620
- x = PowiainaNum.pow(base, x);
621
- --r;
622
- } else if (x.lte(1)) {
623
- return new PowiainaNum(r + x.toNumber() - 1);
624
- } else {
625
- ++r;
626
- x = PowiainaNum.log(x, base);
627
- }
628
- }
629
- if (x.gt(10)) return new PowiainaNum(r);
630
- return PowiainaNum.NaN.clone();
631
- }
632
- }, {
633
- key: "abs",
634
- value: function abs() {
635
- var obj = this.clone();
636
- if (obj.sign < 0) obj.sign *= -1;
637
- return obj;
638
- }
639
518
  }, {
640
519
  key: "log10",
641
520
  value: function log10() {
@@ -706,13 +585,8 @@
706
585
  value: function exp() {
707
586
  return this.pow_base(Math.E);
708
587
  }
709
- }, {
710
- key: "mod",
711
- value: function mod(x) {
712
- var other = new PowiainaNum(x);
713
- var division = this.div(other);
714
- return division.sub(division.floor()).mul(other);
715
- }
588
+ //#endregion
589
+ //#region some math functions
716
590
  /**
717
591
  * For positive integers, X factorial (written as X!) equals X * (X - 1) * (X - 2) *... * 3 * 2 * 1. 0! equals 1.
718
592
  * This can be extended to real numbers (except for negative integers) via the gamma function, which is what this function does.
@@ -823,6 +697,162 @@
823
697
  }
824
698
  }
825
699
  }
700
+ }, {
701
+ key: "tetrate",
702
+ value:
703
+ //#endregion
704
+ //#region higher calculates
705
+ // Code from ExpantaNum.js
706
+ function tetrate(other2) {
707
+ var payload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
708
+ var t = this.clone();
709
+ var other = new PowiainaNum(other2);
710
+ var payl = new PowiainaNum(payload);
711
+ if (t.isNaN() || other.isNaN() || payl.isNaN()) return PowiainaNum.NaN.clone();
712
+ if (t.eq(1)) return PowiainaNum.ONE.clone();
713
+ if (payl.neq(PowiainaNum.ONE)) other = other.add(payl.slog(t));
714
+ var negln;
715
+ if (other.isInfi() && other.sign > 0) {
716
+ if (t.gte(EXP_E_REC)) return PowiainaNum.POSITIVE_INFINITY.clone();
717
+ negln = this.log().neg();
718
+ return negln.lambertw().div(negln);
719
+ }
720
+ if (other.lte(-2)) return PowiainaNum.NaN.clone();
721
+ if (t.isZero()) {
722
+ if (other.isZero()) return PowiainaNum.NaN.clone();
723
+ if (other.gte(MSI / 2) || other.toNumber() % 2 == 0) return PowiainaNum.ZERO.clone();
724
+ return PowiainaNum.ONE.clone();
725
+ }
726
+ if (t.eq(PowiainaNum.ONE)) {
727
+ if (other.eq(PowiainaNum.ONE.neg())) return PowiainaNum.NaN.clone();
728
+ return PowiainaNum.ONE.clone();
729
+ }
730
+ if (other.eq(PowiainaNum.ONE.neg())) return PowiainaNum.ZERO.clone();
731
+ if (other.eq(PowiainaNum.ZERO)) return PowiainaNum.ONE.clone();
732
+ if (other.eq(PowiainaNum.ONE)) return t;
733
+ if (other.eq(2)) return t.pow(t);
734
+ if (t.eq(2)) {
735
+ if (other.eq(3)) return PowiainaNum.fromNumber(16);
736
+ if (other.eq(4)) return PowiainaNum.fromNumber(65536);
737
+ }
738
+ var m = t.max(other);
739
+ if (m.gt(PowiainaNum.PENTATED_MSI)) return m;
740
+ if (m.gt(PowiainaNum.TETRATED_MSI) || other.gt(MSI)) {
741
+ if (this.lt(EXP_E_REC)) {
742
+ negln = t.ln().neg();
743
+ return negln.lambertw().div(negln);
744
+ }
745
+ var j = t.slog(10).add(other);
746
+ j.setOperator(j.getOperator(2) + 1, 2);
747
+ j.normalize();
748
+ return j;
749
+ }
750
+ var y = other.toNumber();
751
+ var f = Math.floor(y);
752
+ var r = t.pow(y - f);
753
+ var l = PowiainaNum.NaN;
754
+ var i = 0;
755
+ for (var w = PowiainaNum.E_MSI.clone(); f !== 0 && r.lt(w) && i < 100; ++i) {
756
+ if (f > 0) {
757
+ r = t.pow(r);
758
+ if (l.eq(r)) {
759
+ f = 0;
760
+ break;
761
+ }
762
+ l = r;
763
+ --f;
764
+ } else {
765
+ r = r.log(t);
766
+ if (l.eq(r)) {
767
+ f = 0;
768
+ break;
769
+ }
770
+ l = r;
771
+ ++f;
772
+ }
773
+ }
774
+ if (i == 100 || this.lt(EXP_E_REC)) f = 0;
775
+ r.setOperator(r.getOperator(1) + f, 1);
776
+ r.normalize();
777
+ return r;
778
+ }
779
+ // Code from ExpantaNum.js
780
+ }, {
781
+ key: "slog",
782
+ value: function slog() {
783
+ var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
784
+ var x = this.clone();
785
+ var b = new PowiainaNum(base);
786
+ if (x.isInfiNaN()) return x;
787
+ if (b.isNaN()) return b;
788
+ if (b.isInfi()) return PowiainaNum.ZERO.clone();
789
+ if (x.isZero()) return PowiainaNum.ONE.clone();
790
+ if (x.eq(PowiainaNum.ONE)) return PowiainaNum.ZERO.clone();
791
+ if (x.eq(b)) return PowiainaNum.ONE.clone();
792
+ if (b.lt(EXP_E_REC)) {
793
+ var a = b.tetrate(Infinity);
794
+ if (x.eq(a)) return PowiainaNum.POSITIVE_INFINITY.clone();
795
+ if (x.gt(a)) return PowiainaNum.NaN.clone();
796
+ }
797
+ if (x.max(b).gt(PowiainaNum.PENTATED_MSI)) {
798
+ if (x.gt(b)) return x;
799
+ return PowiainaNum.ZERO.clone();
800
+ }
801
+ if (x.max(b).gt(PowiainaNum.TETRATED_MSI)) {
802
+ if (x.gt(b)) {
803
+ x.setOperator(x.getOperator(2) - 1, 2);
804
+ x.normalize();
805
+ return x.sub(x.getOperator(1));
806
+ }
807
+ }
808
+ if (x.lt(PowiainaNum.ZERO.clone())) return b.pow(x).sub(2);
809
+ // base^base^... = x? (? bases)
810
+ var r = 0;
811
+ // 计算x与base的差距
812
+ var t = x.getOperator(1) - b.getOperator(1);
813
+ if (t > 3) {
814
+ var l = t - 3;
815
+ r += l;
816
+ x.setOperator(x.getOperator(1) - l, 1);
817
+ }
818
+ // 假设b=3, x=1e19
819
+ for (var i = 0; i < 100; ++i) {
820
+ if (x.lt(PowiainaNum.ZERO)) {
821
+ x = PowiainaNum.pow(base, x);
822
+ --r;
823
+ } else if (x.lte(1)) {
824
+ // 第五次,进入此处
825
+ // 结果=4+0.08795395574340908-1=3.087953...
826
+ // 验算3**3**3**(3**.08795395574340908)=10000000000000720000,符合预期
827
+ return new PowiainaNum(r + x.toNumber() - 1);
828
+ } else {
829
+ // 第1-4次迭代,进入此处
830
+ ++r;
831
+ x = PowiainaNum.log(x, base);
832
+ // 第一次:r = 1, x = log_3(1e19) ~ 39.822162211498316
833
+ // 第二次:r = 2, x = log_3(39.822...) ~ 3.353706885314807
834
+ // 第三次:r = 3, x = log_3(3.3537...) ~ 1.1014497830508163
835
+ // 第四次:r = 4, x = log_3(1.1014...) ~ 0.08795395574340908
836
+ }
837
+ }
838
+ if (x.gt(10)) return new PowiainaNum(r);
839
+ return PowiainaNum.NaN.clone();
840
+ }
841
+ }, {
842
+ key: "ssqrt",
843
+ value: function ssqrt() {
844
+ var x = this.clone();
845
+ if (x.lt(1 / EXP_E_REC)) return PowiainaNum.NaN.clone();
846
+ if (!x.isFinite()) return x;
847
+ if (x.gt(PowiainaNum.TETRATED_MSI)) return x;
848
+ if (x.gt(PowiainaNum.EE_MSI)) {
849
+ x.setOperator(x.getOperator(1) - 1, 1);
850
+ return x;
851
+ }
852
+ // use lambertw
853
+ var l = x.ln();
854
+ return l.div(l.lambertw());
855
+ }
826
856
  }, {
827
857
  key: "arrow",
828
858
  value: function arrow(arrows2) {
@@ -915,6 +945,75 @@
915
945
  return res;
916
946
  };
917
947
  }
948
+ }, {
949
+ key: "anyarrow_log",
950
+ value: function anyarrow_log(arrow2) {
951
+ var x = this.clone();
952
+ var arrow = new PowiainaNum(arrow2);
953
+ var arrowsNum = arrow.toNumber();
954
+ if (arrow.gt(MSI)) {
955
+ throw new Error(powiainaNumError + "Not implemented");
956
+ }
957
+ if (!arrow.isInt() || arrow.lt(0)) return function () {
958
+ return PowiainaNum.NaN.clone();
959
+ };
960
+ if (arrow.eq(0)) return function (base) {
961
+ return x.div(base);
962
+ };
963
+ if (arrow.eq(1)) return function (base) {
964
+ return x.log(base);
965
+ };
966
+ if (arrow.eq(2)) return function (base) {
967
+ return x.slog(base);
968
+ };
969
+ if (x.isInfiNaN()) return function () {
970
+ return x;
971
+ };
972
+ return function (base) {
973
+ var b = new PowiainaNum(base);
974
+ if (b.isNaN()) return b;
975
+ if (b.isInfi()) return PowiainaNum.ZERO.clone();
976
+ if (x.isZero()) return PowiainaNum.ONE.clone();
977
+ if (x.eq(PowiainaNum.ONE)) return PowiainaNum.ZERO.clone();
978
+ if (x.eq(b)) return PowiainaNum.ONE.clone();
979
+ if (x.max(b).gt(PowiainaNum.arrowMSI(arrowsNum + 1))) {
980
+ if (x.gt(b)) return x;
981
+ return PowiainaNum.ZERO.clone();
982
+ }
983
+ if (x.max(b).gt(PowiainaNum.arrowMSI(arrowsNum))) {
984
+ if (x.gt(b)) {
985
+ x.setOperator(x.getOperator(arrowsNum) - 1, arrowsNum);
986
+ x.normalize();
987
+ return x.sub(x.getOperator(arrowsNum - 1));
988
+ }
989
+ }
990
+ if (x.lt(PowiainaNum.ZERO.clone())) return PowiainaNum.NaN.clone();
991
+ // base^base^... = x? (? bases)
992
+ var r = 0;
993
+ // 计算x与base的差距
994
+ var t = x.getOperator(arrowsNum) - b.getOperator(arrowsNum);
995
+ if (t > 3) {
996
+ var l = t - 3;
997
+ r += l;
998
+ x.setOperator(x.getOperator(arrowsNum) - l, arrowsNum);
999
+ }
1000
+ // 假设b=3, x=1e19
1001
+ for (var i = 0; i < 100; ++i) {
1002
+ if (x.lt(PowiainaNum.ZERO)) {
1003
+ x = x.arrow(arrowsNum - 1)(base);
1004
+ --r;
1005
+ } else if (x.lte(1)) {
1006
+ return new PowiainaNum(r + x.toNumber() - 1);
1007
+ } else {
1008
+ // 第1-4次迭代,进入此处
1009
+ ++r;
1010
+ x = x.anyarrow_log(arrowsNum - 1)(base);
1011
+ }
1012
+ }
1013
+ if (x.gt(10)) return new PowiainaNum(r);
1014
+ return PowiainaNum.NaN.clone();
1015
+ };
1016
+ }
918
1017
  }, {
919
1018
  key: "chain",
920
1019
  value: function chain(other, arrows) {
@@ -1076,9 +1175,18 @@
1076
1175
  }, {
1077
1176
  key: "megotion",
1078
1177
  value: function megotion(other) {
1079
- console.warn("This function is unstable when calculating numbers");
1080
1178
  return PowiainaNum.BEAF(this, other, 1, 1, 2);
1081
1179
  }
1180
+ }, {
1181
+ key: "abs",
1182
+ value:
1183
+ //#endregion
1184
+ //#region comparsion
1185
+ function abs() {
1186
+ var obj = this.clone();
1187
+ if (obj.sign < 0) obj.sign *= -1;
1188
+ return obj;
1189
+ }
1082
1190
  }, {
1083
1191
  key: "max",
1084
1192
  value: function max() {
@@ -1128,6 +1236,73 @@
1128
1236
  var other = new PowiainaNum(x).abs();
1129
1237
  return this.abs().cmp(other);
1130
1238
  }
1239
+ }, {
1240
+ key: "compare",
1241
+ value: function compare(x) {
1242
+ var other = new PowiainaNum(x);
1243
+ if (this.isNaN() || other.isNaN()) return 2;
1244
+ if (this.sign < other.sign) return -1;
1245
+ if (this.sign > other.sign) return 1;
1246
+ //this.sign = other.sign
1247
+ var allneg = this.sign == -1 && other.sign == -1;
1248
+ if (this.small && !other.small) return -1 * (allneg ? -1 : 1);
1249
+ if (other.small && !this.small) return 1 * (allneg ? -1 : 1);
1250
+ var resultreverse = 1;
1251
+ if (this.small && other.small) resultreverse *= -1;
1252
+ if (allneg) resultreverse *= -1;
1253
+ var result = 0;
1254
+ for (var i = 0; this.array.length - 1 - i >= 0 && other.array.length - 1 - i >= 0; i++) {
1255
+ var op1 = this.array[this.array.length - 1 - i];
1256
+ var op2 = other.array[other.array.length - 1 - i];
1257
+ var cmp = compareTuples([op1.megota, op1.expans, op1.arrow, op1.repeat], [op2.megota, op2.expans, op2.arrow, op2.repeat]);
1258
+ if (cmp == 1) {
1259
+ result = 1;
1260
+ break;
1261
+ } else if (cmp == -1) {
1262
+ result = -1;
1263
+ break;
1264
+ }
1265
+ }
1266
+ return result * resultreverse + 1 - 1;
1267
+ }
1268
+ }, {
1269
+ key: "cmp",
1270
+ value: function cmp(other) {
1271
+ return this.compare(other);
1272
+ }
1273
+ }, {
1274
+ key: "eq",
1275
+ value: function eq(other) {
1276
+ return this.cmp(other) === 0;
1277
+ }
1278
+ }, {
1279
+ key: "neq",
1280
+ value: function neq(other) {
1281
+ return this.cmp(other) !== 0;
1282
+ }
1283
+ }, {
1284
+ key: "lt",
1285
+ value: function lt(other) {
1286
+ return this.cmp(other) === -1;
1287
+ }
1288
+ }, {
1289
+ key: "lte",
1290
+ value: function lte(other) {
1291
+ return this.cmp(other) <= 0;
1292
+ }
1293
+ }, {
1294
+ key: "gt",
1295
+ value: function gt(other) {
1296
+ return this.cmp(other) == 1;
1297
+ }
1298
+ }, {
1299
+ key: "gte",
1300
+ value: function gte(other) {
1301
+ var t = this.cmp(other);
1302
+ return t == 0 || t == 1;
1303
+ }
1304
+ //#endregion
1305
+ //#region geometry
1131
1306
  }, {
1132
1307
  key: "sin",
1133
1308
  value: function sin() {
@@ -1163,12 +1338,8 @@
1163
1338
  value: function csc() {
1164
1339
  return this.sin().rec();
1165
1340
  }
1166
- // public asin_abs(): PowiainaNum {
1167
- // const t = this.clone().abs();
1168
- // if (t.lte(1)) {
1169
- // return PowiainaNum.fromNumber(Math.asin(t.toNumber()));
1170
- // }
1171
- // }
1341
+ //#endregion
1342
+ //#region neg, rec, floor, ceil, round, trunc, sign
1172
1343
  }, {
1173
1344
  key: "neg",
1174
1345
  value: function neg() {
@@ -1244,71 +1415,6 @@
1244
1415
  /**
1245
1416
  * @returns if this<other, return -1, if this=other, return 0, if this>other, return 1, if this!<=>, return 2
1246
1417
  */
1247
- }, {
1248
- key: "compare",
1249
- value: function compare(x) {
1250
- var other = new PowiainaNum(x);
1251
- if (this.isNaN() || other.isNaN()) return 2;
1252
- if (this.sign < other.sign) return -1;
1253
- if (this.sign > other.sign) return 1;
1254
- //this.sign = other.sign
1255
- var allneg = this.sign == -1 && other.sign == -1;
1256
- if (this.small && !other.small) return -1 * (allneg ? -1 : 1);
1257
- if (other.small && !this.small) return 1 * (allneg ? -1 : 1);
1258
- var resultreverse = 1;
1259
- if (this.small && other.small) resultreverse *= -1;
1260
- if (allneg) resultreverse *= -1;
1261
- var result = 0;
1262
- for (var i = 0; this.array.length - 1 - i >= 0 && other.array.length - 1 - i >= 0; i++) {
1263
- var op1 = this.array[this.array.length - 1 - i];
1264
- var op2 = other.array[other.array.length - 1 - i];
1265
- var cmp = compareTuples([op1.megota, op1.expans, op1.arrow, op1.repeat], [op2.megota, op2.expans, op2.arrow, op2.repeat]);
1266
- if (cmp == 1) {
1267
- result = 1;
1268
- break;
1269
- } else if (cmp == -1) {
1270
- result = -1;
1271
- break;
1272
- }
1273
- }
1274
- return result * resultreverse + 1 - 1;
1275
- }
1276
- }, {
1277
- key: "cmp",
1278
- value: function cmp(other) {
1279
- return this.compare(other);
1280
- }
1281
- }, {
1282
- key: "eq",
1283
- value: function eq(other) {
1284
- return this.cmp(other) === 0;
1285
- }
1286
- }, {
1287
- key: "neq",
1288
- value: function neq(other) {
1289
- return this.cmp(other) !== 0;
1290
- }
1291
- }, {
1292
- key: "lt",
1293
- value: function lt(other) {
1294
- return this.cmp(other) === -1;
1295
- }
1296
- }, {
1297
- key: "lte",
1298
- value: function lte(other) {
1299
- return this.cmp(other) <= 0;
1300
- }
1301
- }, {
1302
- key: "gt",
1303
- value: function gt(other) {
1304
- return this.cmp(other) == 1;
1305
- }
1306
- }, {
1307
- key: "gte",
1308
- value: function gte(other) {
1309
- var t = this.cmp(other);
1310
- return t == 0 || t == 1;
1311
- }
1312
1418
  }, {
1313
1419
  key: "isNaN",
1314
1420
  value: function (_isNaN) {
@@ -1319,7 +1425,10 @@
1319
1425
  return _isNaN.toString();
1320
1426
  };
1321
1427
  return isNaN;
1322
- }(function () {
1428
+ }(
1429
+ //#endregion
1430
+ //#region judge-numbers
1431
+ function () {
1323
1432
  return isNaN(this.getOperator(0));
1324
1433
  })
1325
1434
  }, {
@@ -1371,6 +1480,7 @@
1371
1480
  }, {
1372
1481
  key: "normalize",
1373
1482
  value:
1483
+ //#endregion
1374
1484
  /**
1375
1485
  * Normalize functions will make this number convert into standard format.(it also change `this`, like [].sort)
1376
1486
  * @returns normalized number
@@ -1505,13 +1615,13 @@
1505
1615
  } while (renormalize);
1506
1616
  return this;
1507
1617
  }
1508
- }, {
1509
- key: "getOperatorIndex",
1510
- value:
1618
+ //#region operators
1511
1619
  /**
1512
1620
  * @returns number will return the index of the operator in array. return as x.5 if it's between the xth and x+1th operators.
1513
1621
  */
1514
- function getOperatorIndex(arrow) {
1622
+ }, {
1623
+ key: "getOperatorIndex",
1624
+ value: function getOperatorIndex(arrow) {
1515
1625
  var expans = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
1516
1626
  var megota = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
1517
1627
  for (var i = 0; i < this.array.length; i++) {
@@ -1559,6 +1669,7 @@
1559
1669
  // this.normalize()
1560
1670
  return false;
1561
1671
  }
1672
+ //#endregion
1562
1673
  /**
1563
1674
  * @returns a PowiainaNum object which deep copied from `this` object.
1564
1675
  */
@@ -1569,6 +1680,11 @@
1569
1680
  obj.resetFromObject(this);
1570
1681
  return obj;
1571
1682
  }
1683
+ /**
1684
+ * Set `this` from a object(deep-copy)
1685
+ * @param powlikeObject
1686
+ * @returns
1687
+ */
1572
1688
  }, {
1573
1689
  key: "resetFromObject",
1574
1690
  value: function resetFromObject(powlikeObject) {
@@ -1587,6 +1703,7 @@
1587
1703
  this.layer = powlikeObject.layer;
1588
1704
  return this;
1589
1705
  }
1706
+ //#region converters
1590
1707
  /**
1591
1708
  * Convert `this` to Javascript `number`
1592
1709
  *
@@ -1706,17 +1823,6 @@
1706
1823
  value: function cbrt(t) {
1707
1824
  return new PowiainaNum(t).cbrt();
1708
1825
  }
1709
- }, {
1710
- key: "tetrate",
1711
- value: function tetrate(t, other2) {
1712
- var payload = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
1713
- return new PowiainaNum(t).tetrate(other2, payload);
1714
- }
1715
- }, {
1716
- key: "abs",
1717
- value: function abs(x) {
1718
- return new PowiainaNum(x).abs();
1719
- }
1720
1826
  }, {
1721
1827
  key: "log10",
1722
1828
  value: function log10(t) {
@@ -1761,40 +1867,34 @@
1761
1867
  var principal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1762
1868
  return new PowiainaNum(x).lambertw(principal);
1763
1869
  }
1870
+ }, {
1871
+ key: "tetrate",
1872
+ value: function tetrate(t, other2) {
1873
+ var payload = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
1874
+ return new PowiainaNum(t).tetrate(other2, payload);
1875
+ }
1764
1876
  }, {
1765
1877
  key: "tetrate_10",
1766
1878
  value: function tetrate_10(other2) {
1767
1879
  return PowiainaNum.fromNumber(10).tetrate(other2);
1768
- /*
1769
- const other = new PowiainaNum(other2);
1770
- const height_int = other.trunc().toNumber();
1771
- const height_frac = other.sub(height_int).toNumber();
1772
- if (other.gt(PowiainaNum.PENTATED_MSI))
1773
- return other.clone();
1774
- else if (other.gt(PowiainaNum.MSI)) {
1775
- other.setOperator(other.getOperator(2)+1, 2);
1776
- } else if (other.lt(-2))
1777
- return PowiainaNum.NaN.clone();
1778
- else if (other.lt(-1)) {
1779
- return other.add(2).log10();
1780
- }
1781
- else if (other.lt(0)) {
1782
- return other.add(1);
1783
- }else if (other.lt(1)) {
1784
- return other.pow10() // 10^x
1785
- }else if (height_int==1)
1786
- return PowiainaNum.pow(10,PowiainaNum.pow(10,height_frac));
1787
- else if (height_int==2)
1788
- return PowiainaNum.pow(10,PowiainaNum.pow(10,PowiainaNum.pow(10,height_frac)));
1789
- else {
1790
- const remain = height_int-2;
1791
- let a = PowiainaNum.pow(10,PowiainaNum.pow(10,PowiainaNum.pow(10,height_frac)));
1792
- a.setOperator(a.getOperator(1)+remain, 1);
1793
- return a;
1880
+ }
1881
+ }, {
1882
+ key: "arrowMSI",
1883
+ value: function arrowMSI(arrowsNum) {
1884
+ return new PowiainaNum("10{".concat(arrowsNum, "}").concat(MSI));
1885
+ }
1886
+ }, {
1887
+ key: "hyper",
1888
+ value: function hyper(arr) {
1889
+ var z = new PowiainaNum(arr);
1890
+ if (z.eq(0)) return function (x, y) {
1891
+ return new PowiainaNum(y).eq(0) ? new PowiainaNum(x) : new PowiainaNum(x).add(1);
1892
+ };
1893
+ if (z.eq(1)) return PowiainaNum.add;else if (z.eq(2)) return PowiainaNum.mul;else if (z.eq(3)) return PowiainaNum.pow;else {
1894
+ return function (x, y) {
1895
+ return new PowiainaNum(x).arrow(z.sub(2))(y);
1896
+ };
1794
1897
  }
1795
- // 1--2, 10-<1e10, 10^10^0->1
1796
- // 2--3, 1e10-<e1e10, 10^10^10^0->1
1797
- return PowiainaNum.NaN.clone();*/
1798
1898
  }
1799
1899
  }, {
1800
1900
  key: "expansion",
@@ -1814,27 +1914,29 @@
1814
1914
  }, {
1815
1915
  key: "BEAF",
1816
1916
  value: function BEAF(base2, power2) {
1817
- for (var _len6 = arguments.length, args = new Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {
1818
- args[_key6 - 2] = arguments[_key6];
1819
- }
1820
- console.warn("This function is unstable when calculating numbers greater than *megotion*");
1917
+ var arrow2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
1918
+ var expans2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
1919
+ var megota2 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
1920
+ var powiaina2 = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
1921
+ var depth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;
1922
+ // console.warn(
1923
+ // "This function is unstable when calculating numbers greater than *megotion*",
1924
+ // );
1821
1925
  var base = new PowiainaNum(base2);
1822
1926
  var power = new PowiainaNum(power2);
1823
1927
  function readArg(a) {
1824
- var _a;
1825
- return new PowiainaNum((_a = args[a]) !== null && _a !== void 0 ? _a : 1);
1928
+ var _b;
1929
+ return new PowiainaNum((_b = [arrow2, expans2, megota2, powiaina2][a]) !== null && _b !== void 0 ? _b : 1);
1826
1930
  }
1827
1931
  if (base.eq(1)) return new PowiainaNum(1);
1828
1932
  if (power.eq(1)) return new PowiainaNum(base);
1829
1933
  if (power.isZero()) return new PowiainaNum(1);
1830
1934
  if (base.lt(0)) return PowiainaNum.NaN.clone();
1831
- // check infinite
1832
- var sufpowiaina = args.slice(4);
1833
- if (sufpowiaina.filter(function (f) {
1834
- return new PowiainaNum(f).gte(2);
1835
- }).length > 0) {
1836
- return PowiainaNum.POSITIVE_INFINITY;
1837
- }
1935
+ // // check infinite
1936
+ // let sufpowiaina = args.slice(4);
1937
+ // if (sufpowiaina.filter((f) => new PowiainaNum(f).gte(2)).length > 0) {
1938
+ // return PowiainaNum.POSITIVE_INFINITY;
1939
+ // }
1838
1940
  if (readArg(0).eq(1) && readArg(1).eq(1) && readArg(2).eq(1)) {
1839
1941
  return base.pow(power);
1840
1942
  }
@@ -1874,8 +1976,10 @@
1874
1976
  }
1875
1977
  var t = base.clone();
1876
1978
  var arrows = new PowiainaNum(readArg(0));
1877
- return function (other2, _r, _r2) {
1979
+ var result = function (other2) {
1980
+ var _r, _r2;
1878
1981
  var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
1982
+ console.log("".concat("-".repeat(depth), " {").concat(base2, ",").concat(power2, ",").concat(arrow2, ",").concat(expans2, ",").concat(megota2, "}"));
1879
1983
  var other = new PowiainaNum(other2);
1880
1984
  var r;
1881
1985
  if (t.isNaN() || other.isNaN()) return PowiainaNum.NaN.clone();
@@ -1888,11 +1992,11 @@
1888
1992
  if (other.eq(PowiainaNum.ZERO)) return PowiainaNum.ONE.clone();
1889
1993
  if (other.eq(PowiainaNum.ONE)) return t.clone();
1890
1994
  if (arrows.eq(0)) {
1891
- return PowiainaNum.BEAF(t, t, power, expans.sub(1), megota);
1995
+ return PowiainaNum.BEAF(t, t, power, expans.sub(1), megota, powiaina2, depth + 1);
1892
1996
  // {this, this, power, expans-1, megota}
1893
1997
  }
1894
1998
  if (expans.eq(0)) {
1895
- return PowiainaNum.BEAF(t, t, t, power, megota.sub(1));
1999
+ return PowiainaNum.BEAF(t, t, t, arrow2, megota.sub(1), powiaina2, depth + 1);
1896
2000
  }
1897
2001
  // expans > 9e15, that using 10{?, x}, x=expans;
1898
2002
  if (expans.gt(MSI)) {
@@ -1909,7 +2013,7 @@
1909
2013
  var arrowsNum = arrows.toNumber();
1910
2014
  // arrow < 9e15
1911
2015
  // 10{x}2 = 10{x-1}10
1912
- if (other.eq(2)) return PowiainaNum.BEAF(t, t, arrowsNum - 1, expans, megota);
2016
+ if (other.eq(2)) return PowiainaNum.BEAF(t, t, arrowsNum - 1, expans, megota, powiaina2, depth + 1);
1913
2017
  if (t.max(other).gt(getMSIForm(arrowsNum + 1, expans.toNumber(), megota.toNumber()))) return t.max(other);
1914
2018
  if (t.gt(getMSIForm(arrowsNum, expans.toNumber(), megota.toNumber())) || other.gt(MSI)) {
1915
2019
  if (t.gt(getMSIForm(arrowsNum, expans.toNumber(), megota.toNumber()))) {
@@ -1937,11 +2041,11 @@
1937
2041
  var y = other.toNumber();
1938
2042
  var f = Math.floor(y);
1939
2043
  var arrows_m1 = arrows.sub(PowiainaNum.ONE);
1940
- r = PowiainaNum.BEAF(t, y - f, arrows_m1.toNumber(), expans, megota);
2044
+ r = PowiainaNum.BEAF(t, y - f, arrows_m1.toNumber(), expans, megota, powiaina2, depth + 1);
1941
2045
  var i = 0;
1942
2046
  for (var m = new PowiainaNum(getMSIForm.apply(void 0, _toConsumableArray(convertOperator(arrowsNum - 1, expans.toNumber(), megota.toNumber())))); f !== 0 && r.lt(m) && i < 100; i++) {
1943
2047
  if (f > 0) {
1944
- r = PowiainaNum.BEAF(base, r, arrows_m1.toNumber(), expans, megota);
2048
+ r = PowiainaNum.BEAF(base, r, arrows_m1.toNumber(), expans, megota, powiaina2, depth + 1);
1945
2049
  --f;
1946
2050
  }
1947
2051
  }
@@ -1949,7 +2053,14 @@
1949
2053
  (_r = r).setOperator.apply(_r, [(_r2 = r).getOperator.apply(_r2, _toConsumableArray(convertOperator(arrowsNum - 1, expans.toNumber(), megota.toNumber()))) + f].concat(_toConsumableArray(convertOperator(arrowsNum - 1, expans.toNumber(), megota.toNumber()))));
1950
2054
  r.normalize();
1951
2055
  return r;
1952
- }(power);
2056
+ }(power, depth);
2057
+ console.log("".concat('-'.repeat(depth), " = ").concat(result));
2058
+ return result;
2059
+ }
2060
+ }, {
2061
+ key: "abs",
2062
+ value: function abs(x) {
2063
+ return new PowiainaNum(x).abs();
1953
2064
  }
1954
2065
  /**
1955
2066
  * Select the largest number of arguments.
@@ -1958,8 +2069,8 @@
1958
2069
  key: "max",
1959
2070
  value: function max() {
1960
2071
  var max = PowiainaNum.NEGATIVE_INFINITY;
1961
- for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
1962
- args[_key7] = arguments[_key7];
2072
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
2073
+ args[_key6] = arguments[_key6];
1963
2074
  }
1964
2075
  for (var i = 0; i < args.length; i++) {
1965
2076
  if (max.lt(args[i])) {
@@ -1975,8 +2086,8 @@
1975
2086
  key: "min",
1976
2087
  value: function min() {
1977
2088
  var max = PowiainaNum.POSITIVE_INFINITY;
1978
- for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
1979
- args[_key8] = arguments[_key8];
2089
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
2090
+ args[_key7] = arguments[_key7];
1980
2091
  }
1981
2092
  for (var i = 0; i < args.length; i++) {
1982
2093
  if (max.gt(args[i])) {
@@ -2017,11 +2128,6 @@
2017
2128
  value: function isNaN(x) {
2018
2129
  return new PowiainaNum(x).isNaN();
2019
2130
  }
2020
- }, {
2021
- key: "arrowMSI",
2022
- value: function arrowMSI(arrowsNum) {
2023
- return new PowiainaNum("10{".concat(arrowsNum, "}").concat(MSI));
2024
- }
2025
2131
  }, {
2026
2132
  key: "fromNumber",
2027
2133
  value: function fromNumber(x) {
@@ -2053,7 +2159,7 @@
2053
2159
  }, {
2054
2160
  key: "fromString",
2055
2161
  value: function fromString(input) {
2056
- var _a, _b, _c, _d, _e, _f;
2162
+ var _b, _c, _d, _e, _f, _g;
2057
2163
  var x = new PowiainaNum();
2058
2164
  // Judge the string was a number
2059
2165
  if (input.startsWith("PN")) input = input.substring(2);
@@ -2061,7 +2167,7 @@
2061
2167
  var res = Number(input);
2062
2168
  var _a2 = false;
2063
2169
  if (res == 0) {
2064
- if (/^(0*\.0*e)|(0*\.0*)$/.test(input)) {
2170
+ if (/^((0)|(0*\.0+e\d+)|(0*\.0*))$/.test(input)) {
2065
2171
  _a2 = true;
2066
2172
  }
2067
2173
  } else {
@@ -2097,7 +2203,7 @@
2097
2203
  return PowiainaNum.pow(10, -mantissaME[1] - 1).mul(Math.pow(mantissaME[0], -1) * 10).rec();
2098
2204
  }
2099
2205
  if (isFinite(res) && _a2) {
2100
- x.resetFromObject(PowiainaNum.fromNumber(Number(input)));
2206
+ x = PowiainaNum.fromNumber(Number(input));
2101
2207
  return x;
2102
2208
  }
2103
2209
  }
@@ -2110,13 +2216,13 @@
2110
2216
  if (input[0] == "-" || input[0] == "+") {
2111
2217
  var numSigns = input.search(/[^-\+]/);
2112
2218
  var signs = input.substring(0, numSigns);
2113
- negateIt = ((_b = (_a = signs.match(/-/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) % 2 == 1;
2219
+ negateIt = ((_c = (_b = signs.match(/-/g)) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) % 2 == 1;
2114
2220
  input = input.substring(numSigns);
2115
2221
  }
2116
2222
  if (input[0] == "/") {
2117
2223
  var numSigns = input.search(/[^\/]/);
2118
2224
  var signs = input.substring(0, numSigns);
2119
- recipIt = ((_d = (_c = signs.match(/\//g)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) % 2 == 1;
2225
+ recipIt = ((_e = (_d = signs.match(/\//g)) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0) % 2 == 1;
2120
2226
  input = input.substring(numSigns);
2121
2227
  }
2122
2228
  if (input == "NaN") x.array = [newOperator(NaN)];else if (input == "Infinity") x.array = [newOperator(Infinity)];else {
@@ -2148,8 +2254,8 @@
2148
2254
  // select contents between {...}
2149
2255
  var tmp = input.substring(3, a).split(",");
2150
2256
  arrows = Number(tmp[0] == "!" ? Infinity : tmp[0]);
2151
- expans = Number((_e = tmp[1] == "!" ? Infinity : tmp[1]) !== null && _e !== void 0 ? _e : 1);
2152
- megota = Number((_f = tmp[2]) !== null && _f !== void 0 ? _f : 1);
2257
+ expans = Number((_f = tmp[1] == "!" ? Infinity : tmp[1]) !== null && _f !== void 0 ? _f : 1);
2258
+ megota = Number((_g = tmp[2]) !== null && _g !== void 0 ? _g : 1);
2153
2259
  b = a + 1;
2154
2260
  // b points to after }.
2155
2261
  }
@@ -2280,6 +2386,9 @@
2280
2386
  }
2281
2387
  }]);
2282
2388
  }();
2389
+ _a = Symbol.toStringTag;
2390
+ //#endregion
2391
+ //#region constants
2283
2392
  /**
2284
2393
  * Zero
2285
2394
  */
@@ -2340,6 +2449,25 @@
2340
2449
  layer: 0,
2341
2450
  sign: 1
2342
2451
  });
2452
+ /**
2453
+ * 10^10^(MSI) = 10^10^9007199254740991.
2454
+ */
2455
+ PowiainaNum.EE_MSI = new PowiainaNum({
2456
+ array: [{
2457
+ arrow: 0,
2458
+ expans: 1,
2459
+ megota: 1,
2460
+ repeat: MSI
2461
+ }, {
2462
+ arrow: 1,
2463
+ expans: 1,
2464
+ megota: 1,
2465
+ repeat: 2
2466
+ }],
2467
+ small: false,
2468
+ layer: 0,
2469
+ sign: 1
2470
+ });
2343
2471
  /**
2344
2472
  * 10^(MSI) 's reciprocate value, = 10^-9007199254740991.
2345
2473
  */
@@ -2469,8 +2597,9 @@
2469
2597
  */
2470
2598
  PowiainaNum.SQRT2 = new PowiainaNum(Math.SQRT2);
2471
2599
  PowiainaNum.maxOps = 100;
2472
- PowiainaNum.arrowFuncMap = new Map();
2473
2600
  PowiainaNum.POW_2_44_MOD_PI = 1.701173079953;
2601
+ //#endregion
2602
+ PowiainaNum.arrowFuncMap = new Map();
2474
2603
 
2475
2604
  exports.arraySortFunction = arraySortFunction;
2476
2605
  exports["default"] = PowiainaNum;