powiaina_num.js 0.2.0-alpha.3.2 → 0.2.0-alpha.3.4
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.
- package/dist/PowiainaNum.cjs.js +78 -19
- package/dist/PowiainaNum.esm.js +78 -19
- package/dist/PowiainaNum.js +78 -19
- package/dist/PowiainaNum.min.js +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.js +313 -45
- package/dist/types/index.d.ts +140 -5
- package/package.json +1 -1
package/dist/PowiainaNum.cjs.js
CHANGED
|
@@ -68,7 +68,7 @@ var MSI_LOG10 = 15.954589770191003;
|
|
|
68
68
|
var MSI_REC = 1.1102230246251568e-16;
|
|
69
69
|
var LONG_STRING_MIN_LENGTH = 17;
|
|
70
70
|
var EXP_E_REC = 1.444667861009766;
|
|
71
|
-
var isPowiainaNum = /^(PN)
|
|
71
|
+
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+))$/;
|
|
72
72
|
function newOperator(r) {
|
|
73
73
|
var a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
74
74
|
var e = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
@@ -465,7 +465,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
465
465
|
}, {
|
|
466
466
|
key: "cbrt",
|
|
467
467
|
value: function cbrt() {
|
|
468
|
-
return this.root(3);
|
|
468
|
+
return this.abs().root(3).mul(this.sign);
|
|
469
469
|
}
|
|
470
470
|
}, {
|
|
471
471
|
key: "tetrate",
|
|
@@ -581,11 +581,17 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
581
581
|
x.setOperator(x.getOperator(1) - l, 1);
|
|
582
582
|
}
|
|
583
583
|
for (var i = 0; i < 100; ++i) {
|
|
584
|
-
if (x.
|
|
585
|
-
|
|
586
|
-
|
|
584
|
+
if (x.lt(PowiainaNum.ZERO)) {
|
|
585
|
+
x = PowiainaNum.pow(base, x);
|
|
586
|
+
--r;
|
|
587
|
+
} else if (x.lte(1)) {
|
|
588
|
+
return new PowiainaNum(r + x.toNumber() - 1);
|
|
589
|
+
} else {
|
|
590
|
+
++r;
|
|
591
|
+
x = PowiainaNum.log(x, base);
|
|
592
|
+
}
|
|
587
593
|
}
|
|
588
|
-
|
|
594
|
+
if (x.gt(10)) return new PowiainaNum(r);
|
|
589
595
|
return PowiainaNum.NaN.clone();
|
|
590
596
|
}
|
|
591
597
|
}, {
|
|
@@ -625,6 +631,41 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
625
631
|
value: function ln() {
|
|
626
632
|
return this.log();
|
|
627
633
|
}
|
|
634
|
+
/**
|
|
635
|
+
* plog10, beware unexpected errors.
|
|
636
|
+
*/
|
|
637
|
+
}, {
|
|
638
|
+
key: "plog10",
|
|
639
|
+
value: function plog10() {
|
|
640
|
+
return this.max(1).log10();
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* plog10, beware unexpected errors.
|
|
644
|
+
*/
|
|
645
|
+
}, {
|
|
646
|
+
key: "plog",
|
|
647
|
+
value:
|
|
648
|
+
/**
|
|
649
|
+
* plog, beware unexpected errors.
|
|
650
|
+
*/
|
|
651
|
+
function plog() {
|
|
652
|
+
var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Math.E;
|
|
653
|
+
// log_a b = log_x b / log_x a;
|
|
654
|
+
var other = new PowiainaNum(base);
|
|
655
|
+
return this.plog10().div(other.plog10());
|
|
656
|
+
}
|
|
657
|
+
/**
|
|
658
|
+
* plog, beware unexpected errors.
|
|
659
|
+
*/
|
|
660
|
+
}, {
|
|
661
|
+
key: "pln",
|
|
662
|
+
value:
|
|
663
|
+
/**
|
|
664
|
+
* pln, beware unexpected errors.
|
|
665
|
+
*/
|
|
666
|
+
function pln() {
|
|
667
|
+
return this.plog();
|
|
668
|
+
}
|
|
628
669
|
}, {
|
|
629
670
|
key: "exp",
|
|
630
671
|
value: function exp() {
|
|
@@ -770,7 +811,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
770
811
|
return function (other2) {
|
|
771
812
|
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
772
813
|
var other = new PowiainaNum(other2);
|
|
773
|
-
var ctt = PowiainaNum.arrowFuncMap.get("".concat(t.toString(), " ").concat(arrows.toString(), " ").concat(other.toString()));
|
|
814
|
+
var ctt = PowiainaNum.arrowFuncMap.get("".concat(t.toString(), " ").concat(arrows.toString(), " ").concat(other.toString(), " ").concat(depth));
|
|
774
815
|
if (ctt) return ctt.clone();
|
|
775
816
|
var res = function () {
|
|
776
817
|
var r;
|
|
@@ -783,12 +824,15 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
783
824
|
if (t.eq(PowiainaNum.ONE)) return PowiainaNum.ONE.clone();
|
|
784
825
|
if (other.eq(PowiainaNum.ZERO)) return PowiainaNum.ONE.clone();
|
|
785
826
|
if (other.eq(PowiainaNum.ONE)) return t.clone();
|
|
827
|
+
// arrow > 9e15, that using 10{x}, x=arrow;
|
|
786
828
|
if (arrows.gt(PowiainaNum.MSI)) {
|
|
787
829
|
r = arrows.clone();
|
|
788
830
|
r.setOperator(r.getOperator(Infinity) + 1, Infinity);
|
|
789
831
|
return r;
|
|
790
832
|
}
|
|
791
833
|
var arrowsNum = arrows.toNumber();
|
|
834
|
+
// arrow < 9e15
|
|
835
|
+
// 10{x}2 = 10{x-1}10
|
|
792
836
|
if (other.eq(2)) return t.arrow(arrowsNum - 1)(t, depth + 1);
|
|
793
837
|
if (t.max(other).gt(PowiainaNum.arrowMSI(arrowsNum + 1))) return t.max(other);
|
|
794
838
|
if (t.gt(PowiainaNum.arrowMSI(arrowsNum)) || other.gt(MSI)) {
|
|
@@ -807,7 +851,12 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
807
851
|
return j;
|
|
808
852
|
}
|
|
809
853
|
if (depth >= PowiainaNum.maxOps + 10) {
|
|
810
|
-
return new PowiainaNum(
|
|
854
|
+
return new PowiainaNum({
|
|
855
|
+
small: false,
|
|
856
|
+
sign: 1,
|
|
857
|
+
layer: 0,
|
|
858
|
+
array: [newOperator(10, 0), newOperator(1, arrowsNum)]
|
|
859
|
+
});
|
|
811
860
|
}
|
|
812
861
|
var y = other.toNumber();
|
|
813
862
|
var f = Math.floor(y);
|
|
@@ -825,7 +874,9 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
825
874
|
r.normalize();
|
|
826
875
|
return r;
|
|
827
876
|
}();
|
|
828
|
-
|
|
877
|
+
if (depth < PowiainaNum.maxOps + 10) {
|
|
878
|
+
PowiainaNum.arrowFuncMap.set("".concat(t.toString(), " ").concat(arrows.toString(), " ").concat(other.toString(), " ").concat(depth), res.clone());
|
|
879
|
+
}
|
|
829
880
|
return res;
|
|
830
881
|
};
|
|
831
882
|
}
|
|
@@ -1169,9 +1220,9 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1169
1220
|
}
|
|
1170
1221
|
if (x.array.length > PowiainaNum.maxOps) x.array.splice(1, x.array.length - PowiainaNum.maxOps); // max operators check
|
|
1171
1222
|
// for any 10^a but a >log10(MSI), replace to regular 10^a
|
|
1172
|
-
if (this.
|
|
1173
|
-
this.setOperator(this.
|
|
1174
|
-
this.setOperator(Math.pow(10, this.
|
|
1223
|
+
if (this.array[1].arrow == 1 && this.array[1].repeat >= 1 && this.array[0].repeat < MSI_LOG10) {
|
|
1224
|
+
this.setOperator(this.array[1].repeat - 1, 1);
|
|
1225
|
+
this.setOperator(Math.pow(10, this.array[0].repeat), 0);
|
|
1175
1226
|
renormalize = true;
|
|
1176
1227
|
}
|
|
1177
1228
|
if (this.getOperator(0) > MSI && !isFinite(this.getOperator(0))) {
|
|
@@ -1196,7 +1247,9 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1196
1247
|
x.array[0].repeat = 10;
|
|
1197
1248
|
renormalize = true;
|
|
1198
1249
|
}
|
|
1199
|
-
if (x.array.length >= 2 && x.array[0].repeat < MSI && x.array[1].arrow >= 2 && x.array[1].repeat == 1 &&
|
|
1250
|
+
if (x.array.length >= 2 && x.array[0].repeat < MSI && x.array[1].arrow >= 2 && x.array[1].repeat == 1 &&
|
|
1251
|
+
//10^^^ 10
|
|
1252
|
+
isFinite(x.array[1].arrow)) {
|
|
1200
1253
|
// for any 10{A sample=2}1e9, turn into (10{A-1})^1e9-1 10
|
|
1201
1254
|
// But dont convert when a is infinite
|
|
1202
1255
|
// [1e9, [R=1, A=2, sth, sth]]
|
|
@@ -1223,10 +1276,6 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1223
1276
|
function getOperatorIndex(arrow) {
|
|
1224
1277
|
var expans = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
1225
1278
|
var megota = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
1226
|
-
if (this.array.length == 1 && arrow == 0) return 0;
|
|
1227
|
-
if (this.array.length == 1 && arrow == 1) return 0.5;
|
|
1228
|
-
if (this.array.length == 2 && arrow == 1) return 1;
|
|
1229
|
-
if (this.array.length == 2 && arrow == 0) return 0;
|
|
1230
1279
|
for (var i = 0; i < this.array.length; i++) {
|
|
1231
1280
|
var cmp = compareTuples([this.array[i].megota, this.array[i].expans, this.array[i].arrow], [megota, expans, arrow]);
|
|
1232
1281
|
if (cmp == 0) return i; // I find it was [xx,xxx,*xxx*,xxx]!
|
|
@@ -1436,6 +1485,17 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1436
1485
|
var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Math.E;
|
|
1437
1486
|
return new PowiainaNum(t).log(base);
|
|
1438
1487
|
}
|
|
1488
|
+
}, {
|
|
1489
|
+
key: "plog10",
|
|
1490
|
+
value: function plog10(t) {
|
|
1491
|
+
return new PowiainaNum(t).plog10();
|
|
1492
|
+
}
|
|
1493
|
+
}, {
|
|
1494
|
+
key: "plog",
|
|
1495
|
+
value: function plog(t) {
|
|
1496
|
+
var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Math.E;
|
|
1497
|
+
return new PowiainaNum(t).plog(base);
|
|
1498
|
+
}
|
|
1439
1499
|
}, {
|
|
1440
1500
|
key: "exp",
|
|
1441
1501
|
value: function exp(x) {
|
|
@@ -1559,7 +1619,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1559
1619
|
}, {
|
|
1560
1620
|
key: "arrowMSI",
|
|
1561
1621
|
value: function arrowMSI(arrowsNum) {
|
|
1562
|
-
return new PowiainaNum("10".concat(arrowsNum).concat(MSI));
|
|
1622
|
+
return new PowiainaNum("10{".concat(arrowsNum, "}").concat(MSI));
|
|
1563
1623
|
}
|
|
1564
1624
|
}, {
|
|
1565
1625
|
key: "fromNumber",
|
|
@@ -1798,7 +1858,6 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1798
1858
|
obj.small = false;
|
|
1799
1859
|
obj.sign = 1;
|
|
1800
1860
|
obj.layer = 0;
|
|
1801
|
-
obj.normalize();
|
|
1802
1861
|
return obj;
|
|
1803
1862
|
} else {
|
|
1804
1863
|
for (var _i3 = 0; _i3 < powlikeObject.array.length; _i3++) {
|
package/dist/PowiainaNum.esm.js
CHANGED
|
@@ -66,7 +66,7 @@ var MSI_LOG10 = 15.954589770191003;
|
|
|
66
66
|
var MSI_REC = 1.1102230246251568e-16;
|
|
67
67
|
var LONG_STRING_MIN_LENGTH = 17;
|
|
68
68
|
var EXP_E_REC = 1.444667861009766;
|
|
69
|
-
var isPowiainaNum = /^(PN)
|
|
69
|
+
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+))$/;
|
|
70
70
|
function newOperator(r) {
|
|
71
71
|
var a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
72
72
|
var e = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
@@ -463,7 +463,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
463
463
|
}, {
|
|
464
464
|
key: "cbrt",
|
|
465
465
|
value: function cbrt() {
|
|
466
|
-
return this.root(3);
|
|
466
|
+
return this.abs().root(3).mul(this.sign);
|
|
467
467
|
}
|
|
468
468
|
}, {
|
|
469
469
|
key: "tetrate",
|
|
@@ -579,11 +579,17 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
579
579
|
x.setOperator(x.getOperator(1) - l, 1);
|
|
580
580
|
}
|
|
581
581
|
for (var i = 0; i < 100; ++i) {
|
|
582
|
-
if (x.
|
|
583
|
-
|
|
584
|
-
|
|
582
|
+
if (x.lt(PowiainaNum.ZERO)) {
|
|
583
|
+
x = PowiainaNum.pow(base, x);
|
|
584
|
+
--r;
|
|
585
|
+
} else if (x.lte(1)) {
|
|
586
|
+
return new PowiainaNum(r + x.toNumber() - 1);
|
|
587
|
+
} else {
|
|
588
|
+
++r;
|
|
589
|
+
x = PowiainaNum.log(x, base);
|
|
590
|
+
}
|
|
585
591
|
}
|
|
586
|
-
|
|
592
|
+
if (x.gt(10)) return new PowiainaNum(r);
|
|
587
593
|
return PowiainaNum.NaN.clone();
|
|
588
594
|
}
|
|
589
595
|
}, {
|
|
@@ -623,6 +629,41 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
623
629
|
value: function ln() {
|
|
624
630
|
return this.log();
|
|
625
631
|
}
|
|
632
|
+
/**
|
|
633
|
+
* plog10, beware unexpected errors.
|
|
634
|
+
*/
|
|
635
|
+
}, {
|
|
636
|
+
key: "plog10",
|
|
637
|
+
value: function plog10() {
|
|
638
|
+
return this.max(1).log10();
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* plog10, beware unexpected errors.
|
|
642
|
+
*/
|
|
643
|
+
}, {
|
|
644
|
+
key: "plog",
|
|
645
|
+
value:
|
|
646
|
+
/**
|
|
647
|
+
* plog, beware unexpected errors.
|
|
648
|
+
*/
|
|
649
|
+
function plog() {
|
|
650
|
+
var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Math.E;
|
|
651
|
+
// log_a b = log_x b / log_x a;
|
|
652
|
+
var other = new PowiainaNum(base);
|
|
653
|
+
return this.plog10().div(other.plog10());
|
|
654
|
+
}
|
|
655
|
+
/**
|
|
656
|
+
* plog, beware unexpected errors.
|
|
657
|
+
*/
|
|
658
|
+
}, {
|
|
659
|
+
key: "pln",
|
|
660
|
+
value:
|
|
661
|
+
/**
|
|
662
|
+
* pln, beware unexpected errors.
|
|
663
|
+
*/
|
|
664
|
+
function pln() {
|
|
665
|
+
return this.plog();
|
|
666
|
+
}
|
|
626
667
|
}, {
|
|
627
668
|
key: "exp",
|
|
628
669
|
value: function exp() {
|
|
@@ -768,7 +809,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
768
809
|
return function (other2) {
|
|
769
810
|
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
770
811
|
var other = new PowiainaNum(other2);
|
|
771
|
-
var ctt = PowiainaNum.arrowFuncMap.get("".concat(t.toString(), " ").concat(arrows.toString(), " ").concat(other.toString()));
|
|
812
|
+
var ctt = PowiainaNum.arrowFuncMap.get("".concat(t.toString(), " ").concat(arrows.toString(), " ").concat(other.toString(), " ").concat(depth));
|
|
772
813
|
if (ctt) return ctt.clone();
|
|
773
814
|
var res = function () {
|
|
774
815
|
var r;
|
|
@@ -781,12 +822,15 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
781
822
|
if (t.eq(PowiainaNum.ONE)) return PowiainaNum.ONE.clone();
|
|
782
823
|
if (other.eq(PowiainaNum.ZERO)) return PowiainaNum.ONE.clone();
|
|
783
824
|
if (other.eq(PowiainaNum.ONE)) return t.clone();
|
|
825
|
+
// arrow > 9e15, that using 10{x}, x=arrow;
|
|
784
826
|
if (arrows.gt(PowiainaNum.MSI)) {
|
|
785
827
|
r = arrows.clone();
|
|
786
828
|
r.setOperator(r.getOperator(Infinity) + 1, Infinity);
|
|
787
829
|
return r;
|
|
788
830
|
}
|
|
789
831
|
var arrowsNum = arrows.toNumber();
|
|
832
|
+
// arrow < 9e15
|
|
833
|
+
// 10{x}2 = 10{x-1}10
|
|
790
834
|
if (other.eq(2)) return t.arrow(arrowsNum - 1)(t, depth + 1);
|
|
791
835
|
if (t.max(other).gt(PowiainaNum.arrowMSI(arrowsNum + 1))) return t.max(other);
|
|
792
836
|
if (t.gt(PowiainaNum.arrowMSI(arrowsNum)) || other.gt(MSI)) {
|
|
@@ -805,7 +849,12 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
805
849
|
return j;
|
|
806
850
|
}
|
|
807
851
|
if (depth >= PowiainaNum.maxOps + 10) {
|
|
808
|
-
return new PowiainaNum(
|
|
852
|
+
return new PowiainaNum({
|
|
853
|
+
small: false,
|
|
854
|
+
sign: 1,
|
|
855
|
+
layer: 0,
|
|
856
|
+
array: [newOperator(10, 0), newOperator(1, arrowsNum)]
|
|
857
|
+
});
|
|
809
858
|
}
|
|
810
859
|
var y = other.toNumber();
|
|
811
860
|
var f = Math.floor(y);
|
|
@@ -823,7 +872,9 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
823
872
|
r.normalize();
|
|
824
873
|
return r;
|
|
825
874
|
}();
|
|
826
|
-
|
|
875
|
+
if (depth < PowiainaNum.maxOps + 10) {
|
|
876
|
+
PowiainaNum.arrowFuncMap.set("".concat(t.toString(), " ").concat(arrows.toString(), " ").concat(other.toString(), " ").concat(depth), res.clone());
|
|
877
|
+
}
|
|
827
878
|
return res;
|
|
828
879
|
};
|
|
829
880
|
}
|
|
@@ -1167,9 +1218,9 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1167
1218
|
}
|
|
1168
1219
|
if (x.array.length > PowiainaNum.maxOps) x.array.splice(1, x.array.length - PowiainaNum.maxOps); // max operators check
|
|
1169
1220
|
// for any 10^a but a >log10(MSI), replace to regular 10^a
|
|
1170
|
-
if (this.
|
|
1171
|
-
this.setOperator(this.
|
|
1172
|
-
this.setOperator(Math.pow(10, this.
|
|
1221
|
+
if (this.array[1].arrow == 1 && this.array[1].repeat >= 1 && this.array[0].repeat < MSI_LOG10) {
|
|
1222
|
+
this.setOperator(this.array[1].repeat - 1, 1);
|
|
1223
|
+
this.setOperator(Math.pow(10, this.array[0].repeat), 0);
|
|
1173
1224
|
renormalize = true;
|
|
1174
1225
|
}
|
|
1175
1226
|
if (this.getOperator(0) > MSI && !isFinite(this.getOperator(0))) {
|
|
@@ -1194,7 +1245,9 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1194
1245
|
x.array[0].repeat = 10;
|
|
1195
1246
|
renormalize = true;
|
|
1196
1247
|
}
|
|
1197
|
-
if (x.array.length >= 2 && x.array[0].repeat < MSI && x.array[1].arrow >= 2 && x.array[1].repeat == 1 &&
|
|
1248
|
+
if (x.array.length >= 2 && x.array[0].repeat < MSI && x.array[1].arrow >= 2 && x.array[1].repeat == 1 &&
|
|
1249
|
+
//10^^^ 10
|
|
1250
|
+
isFinite(x.array[1].arrow)) {
|
|
1198
1251
|
// for any 10{A sample=2}1e9, turn into (10{A-1})^1e9-1 10
|
|
1199
1252
|
// But dont convert when a is infinite
|
|
1200
1253
|
// [1e9, [R=1, A=2, sth, sth]]
|
|
@@ -1221,10 +1274,6 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1221
1274
|
function getOperatorIndex(arrow) {
|
|
1222
1275
|
var expans = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
1223
1276
|
var megota = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
1224
|
-
if (this.array.length == 1 && arrow == 0) return 0;
|
|
1225
|
-
if (this.array.length == 1 && arrow == 1) return 0.5;
|
|
1226
|
-
if (this.array.length == 2 && arrow == 1) return 1;
|
|
1227
|
-
if (this.array.length == 2 && arrow == 0) return 0;
|
|
1228
1277
|
for (var i = 0; i < this.array.length; i++) {
|
|
1229
1278
|
var cmp = compareTuples([this.array[i].megota, this.array[i].expans, this.array[i].arrow], [megota, expans, arrow]);
|
|
1230
1279
|
if (cmp == 0) return i; // I find it was [xx,xxx,*xxx*,xxx]!
|
|
@@ -1434,6 +1483,17 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1434
1483
|
var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Math.E;
|
|
1435
1484
|
return new PowiainaNum(t).log(base);
|
|
1436
1485
|
}
|
|
1486
|
+
}, {
|
|
1487
|
+
key: "plog10",
|
|
1488
|
+
value: function plog10(t) {
|
|
1489
|
+
return new PowiainaNum(t).plog10();
|
|
1490
|
+
}
|
|
1491
|
+
}, {
|
|
1492
|
+
key: "plog",
|
|
1493
|
+
value: function plog(t) {
|
|
1494
|
+
var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Math.E;
|
|
1495
|
+
return new PowiainaNum(t).plog(base);
|
|
1496
|
+
}
|
|
1437
1497
|
}, {
|
|
1438
1498
|
key: "exp",
|
|
1439
1499
|
value: function exp(x) {
|
|
@@ -1557,7 +1617,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1557
1617
|
}, {
|
|
1558
1618
|
key: "arrowMSI",
|
|
1559
1619
|
value: function arrowMSI(arrowsNum) {
|
|
1560
|
-
return new PowiainaNum("10".concat(arrowsNum).concat(MSI));
|
|
1620
|
+
return new PowiainaNum("10{".concat(arrowsNum, "}").concat(MSI));
|
|
1561
1621
|
}
|
|
1562
1622
|
}, {
|
|
1563
1623
|
key: "fromNumber",
|
|
@@ -1796,7 +1856,6 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1796
1856
|
obj.small = false;
|
|
1797
1857
|
obj.sign = 1;
|
|
1798
1858
|
obj.layer = 0;
|
|
1799
|
-
obj.normalize();
|
|
1800
1859
|
return obj;
|
|
1801
1860
|
} else {
|
|
1802
1861
|
for (var _i3 = 0; _i3 < powlikeObject.array.length; _i3++) {
|
package/dist/PowiainaNum.js
CHANGED
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
var MSI_REC = 1.1102230246251568e-16;
|
|
73
73
|
var LONG_STRING_MIN_LENGTH = 17;
|
|
74
74
|
var EXP_E_REC = 1.444667861009766;
|
|
75
|
-
var isPowiainaNum = /^(PN)
|
|
75
|
+
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+))$/;
|
|
76
76
|
function newOperator(r) {
|
|
77
77
|
var a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
78
78
|
var e = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
@@ -469,7 +469,7 @@
|
|
|
469
469
|
}, {
|
|
470
470
|
key: "cbrt",
|
|
471
471
|
value: function cbrt() {
|
|
472
|
-
return this.root(3);
|
|
472
|
+
return this.abs().root(3).mul(this.sign);
|
|
473
473
|
}
|
|
474
474
|
}, {
|
|
475
475
|
key: "tetrate",
|
|
@@ -585,11 +585,17 @@
|
|
|
585
585
|
x.setOperator(x.getOperator(1) - l, 1);
|
|
586
586
|
}
|
|
587
587
|
for (var i = 0; i < 100; ++i) {
|
|
588
|
-
if (x.
|
|
589
|
-
|
|
590
|
-
|
|
588
|
+
if (x.lt(PowiainaNum.ZERO)) {
|
|
589
|
+
x = PowiainaNum.pow(base, x);
|
|
590
|
+
--r;
|
|
591
|
+
} else if (x.lte(1)) {
|
|
592
|
+
return new PowiainaNum(r + x.toNumber() - 1);
|
|
593
|
+
} else {
|
|
594
|
+
++r;
|
|
595
|
+
x = PowiainaNum.log(x, base);
|
|
596
|
+
}
|
|
591
597
|
}
|
|
592
|
-
|
|
598
|
+
if (x.gt(10)) return new PowiainaNum(r);
|
|
593
599
|
return PowiainaNum.NaN.clone();
|
|
594
600
|
}
|
|
595
601
|
}, {
|
|
@@ -629,6 +635,41 @@
|
|
|
629
635
|
value: function ln() {
|
|
630
636
|
return this.log();
|
|
631
637
|
}
|
|
638
|
+
/**
|
|
639
|
+
* plog10, beware unexpected errors.
|
|
640
|
+
*/
|
|
641
|
+
}, {
|
|
642
|
+
key: "plog10",
|
|
643
|
+
value: function plog10() {
|
|
644
|
+
return this.max(1).log10();
|
|
645
|
+
}
|
|
646
|
+
/**
|
|
647
|
+
* plog10, beware unexpected errors.
|
|
648
|
+
*/
|
|
649
|
+
}, {
|
|
650
|
+
key: "plog",
|
|
651
|
+
value:
|
|
652
|
+
/**
|
|
653
|
+
* plog, beware unexpected errors.
|
|
654
|
+
*/
|
|
655
|
+
function plog() {
|
|
656
|
+
var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Math.E;
|
|
657
|
+
// log_a b = log_x b / log_x a;
|
|
658
|
+
var other = new PowiainaNum(base);
|
|
659
|
+
return this.plog10().div(other.plog10());
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* plog, beware unexpected errors.
|
|
663
|
+
*/
|
|
664
|
+
}, {
|
|
665
|
+
key: "pln",
|
|
666
|
+
value:
|
|
667
|
+
/**
|
|
668
|
+
* pln, beware unexpected errors.
|
|
669
|
+
*/
|
|
670
|
+
function pln() {
|
|
671
|
+
return this.plog();
|
|
672
|
+
}
|
|
632
673
|
}, {
|
|
633
674
|
key: "exp",
|
|
634
675
|
value: function exp() {
|
|
@@ -774,7 +815,7 @@
|
|
|
774
815
|
return function (other2) {
|
|
775
816
|
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
776
817
|
var other = new PowiainaNum(other2);
|
|
777
|
-
var ctt = PowiainaNum.arrowFuncMap.get("".concat(t.toString(), " ").concat(arrows.toString(), " ").concat(other.toString()));
|
|
818
|
+
var ctt = PowiainaNum.arrowFuncMap.get("".concat(t.toString(), " ").concat(arrows.toString(), " ").concat(other.toString(), " ").concat(depth));
|
|
778
819
|
if (ctt) return ctt.clone();
|
|
779
820
|
var res = function () {
|
|
780
821
|
var r;
|
|
@@ -787,12 +828,15 @@
|
|
|
787
828
|
if (t.eq(PowiainaNum.ONE)) return PowiainaNum.ONE.clone();
|
|
788
829
|
if (other.eq(PowiainaNum.ZERO)) return PowiainaNum.ONE.clone();
|
|
789
830
|
if (other.eq(PowiainaNum.ONE)) return t.clone();
|
|
831
|
+
// arrow > 9e15, that using 10{x}, x=arrow;
|
|
790
832
|
if (arrows.gt(PowiainaNum.MSI)) {
|
|
791
833
|
r = arrows.clone();
|
|
792
834
|
r.setOperator(r.getOperator(Infinity) + 1, Infinity);
|
|
793
835
|
return r;
|
|
794
836
|
}
|
|
795
837
|
var arrowsNum = arrows.toNumber();
|
|
838
|
+
// arrow < 9e15
|
|
839
|
+
// 10{x}2 = 10{x-1}10
|
|
796
840
|
if (other.eq(2)) return t.arrow(arrowsNum - 1)(t, depth + 1);
|
|
797
841
|
if (t.max(other).gt(PowiainaNum.arrowMSI(arrowsNum + 1))) return t.max(other);
|
|
798
842
|
if (t.gt(PowiainaNum.arrowMSI(arrowsNum)) || other.gt(MSI)) {
|
|
@@ -811,7 +855,12 @@
|
|
|
811
855
|
return j;
|
|
812
856
|
}
|
|
813
857
|
if (depth >= PowiainaNum.maxOps + 10) {
|
|
814
|
-
return new PowiainaNum(
|
|
858
|
+
return new PowiainaNum({
|
|
859
|
+
small: false,
|
|
860
|
+
sign: 1,
|
|
861
|
+
layer: 0,
|
|
862
|
+
array: [newOperator(10, 0), newOperator(1, arrowsNum)]
|
|
863
|
+
});
|
|
815
864
|
}
|
|
816
865
|
var y = other.toNumber();
|
|
817
866
|
var f = Math.floor(y);
|
|
@@ -829,7 +878,9 @@
|
|
|
829
878
|
r.normalize();
|
|
830
879
|
return r;
|
|
831
880
|
}();
|
|
832
|
-
|
|
881
|
+
if (depth < PowiainaNum.maxOps + 10) {
|
|
882
|
+
PowiainaNum.arrowFuncMap.set("".concat(t.toString(), " ").concat(arrows.toString(), " ").concat(other.toString(), " ").concat(depth), res.clone());
|
|
883
|
+
}
|
|
833
884
|
return res;
|
|
834
885
|
};
|
|
835
886
|
}
|
|
@@ -1173,9 +1224,9 @@
|
|
|
1173
1224
|
}
|
|
1174
1225
|
if (x.array.length > PowiainaNum.maxOps) x.array.splice(1, x.array.length - PowiainaNum.maxOps); // max operators check
|
|
1175
1226
|
// for any 10^a but a >log10(MSI), replace to regular 10^a
|
|
1176
|
-
if (this.
|
|
1177
|
-
this.setOperator(this.
|
|
1178
|
-
this.setOperator(Math.pow(10, this.
|
|
1227
|
+
if (this.array[1].arrow == 1 && this.array[1].repeat >= 1 && this.array[0].repeat < MSI_LOG10) {
|
|
1228
|
+
this.setOperator(this.array[1].repeat - 1, 1);
|
|
1229
|
+
this.setOperator(Math.pow(10, this.array[0].repeat), 0);
|
|
1179
1230
|
renormalize = true;
|
|
1180
1231
|
}
|
|
1181
1232
|
if (this.getOperator(0) > MSI && !isFinite(this.getOperator(0))) {
|
|
@@ -1200,7 +1251,9 @@
|
|
|
1200
1251
|
x.array[0].repeat = 10;
|
|
1201
1252
|
renormalize = true;
|
|
1202
1253
|
}
|
|
1203
|
-
if (x.array.length >= 2 && x.array[0].repeat < MSI && x.array[1].arrow >= 2 && x.array[1].repeat == 1 &&
|
|
1254
|
+
if (x.array.length >= 2 && x.array[0].repeat < MSI && x.array[1].arrow >= 2 && x.array[1].repeat == 1 &&
|
|
1255
|
+
//10^^^ 10
|
|
1256
|
+
isFinite(x.array[1].arrow)) {
|
|
1204
1257
|
// for any 10{A sample=2}1e9, turn into (10{A-1})^1e9-1 10
|
|
1205
1258
|
// But dont convert when a is infinite
|
|
1206
1259
|
// [1e9, [R=1, A=2, sth, sth]]
|
|
@@ -1227,10 +1280,6 @@
|
|
|
1227
1280
|
function getOperatorIndex(arrow) {
|
|
1228
1281
|
var expans = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
1229
1282
|
var megota = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
1230
|
-
if (this.array.length == 1 && arrow == 0) return 0;
|
|
1231
|
-
if (this.array.length == 1 && arrow == 1) return 0.5;
|
|
1232
|
-
if (this.array.length == 2 && arrow == 1) return 1;
|
|
1233
|
-
if (this.array.length == 2 && arrow == 0) return 0;
|
|
1234
1283
|
for (var i = 0; i < this.array.length; i++) {
|
|
1235
1284
|
var cmp = compareTuples([this.array[i].megota, this.array[i].expans, this.array[i].arrow], [megota, expans, arrow]);
|
|
1236
1285
|
if (cmp == 0) return i; // I find it was [xx,xxx,*xxx*,xxx]!
|
|
@@ -1440,6 +1489,17 @@
|
|
|
1440
1489
|
var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Math.E;
|
|
1441
1490
|
return new PowiainaNum(t).log(base);
|
|
1442
1491
|
}
|
|
1492
|
+
}, {
|
|
1493
|
+
key: "plog10",
|
|
1494
|
+
value: function plog10(t) {
|
|
1495
|
+
return new PowiainaNum(t).plog10();
|
|
1496
|
+
}
|
|
1497
|
+
}, {
|
|
1498
|
+
key: "plog",
|
|
1499
|
+
value: function plog(t) {
|
|
1500
|
+
var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Math.E;
|
|
1501
|
+
return new PowiainaNum(t).plog(base);
|
|
1502
|
+
}
|
|
1443
1503
|
}, {
|
|
1444
1504
|
key: "exp",
|
|
1445
1505
|
value: function exp(x) {
|
|
@@ -1563,7 +1623,7 @@
|
|
|
1563
1623
|
}, {
|
|
1564
1624
|
key: "arrowMSI",
|
|
1565
1625
|
value: function arrowMSI(arrowsNum) {
|
|
1566
|
-
return new PowiainaNum("10".concat(arrowsNum).concat(MSI));
|
|
1626
|
+
return new PowiainaNum("10{".concat(arrowsNum, "}").concat(MSI));
|
|
1567
1627
|
}
|
|
1568
1628
|
}, {
|
|
1569
1629
|
key: "fromNumber",
|
|
@@ -1802,7 +1862,6 @@
|
|
|
1802
1862
|
obj.small = false;
|
|
1803
1863
|
obj.sign = 1;
|
|
1804
1864
|
obj.layer = 0;
|
|
1805
|
-
obj.normalize();
|
|
1806
1865
|
return obj;
|
|
1807
1866
|
} else {
|
|
1808
1867
|
for (var _i3 = 0; _i3 < powlikeObject.array.length; _i3++) {
|