powiaina_num.js 0.2.22 → 0.2.23
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 +337 -46
- package/dist/PowiainaNum.esm.js +337 -47
- package/dist/PowiainaNum.js +337 -46
- package/dist/PowiainaNum.min.js +1 -1
- package/dist/index.d.ts +26 -2
- package/package.json +1 -1
package/dist/PowiainaNum.esm.js
CHANGED
|
@@ -169,6 +169,10 @@ function parseLegacyPowiainaNumString(str) {
|
|
|
169
169
|
}
|
|
170
170
|
return null;
|
|
171
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* 如果左边小于右边的,返回-1,等于就是0,大于就是1
|
|
174
|
+
* @returns
|
|
175
|
+
*/
|
|
172
176
|
function compareTuples() {
|
|
173
177
|
for (var _len = arguments.length, tuples = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
174
178
|
tuples[_key] = arguments[_key];
|
|
@@ -1158,9 +1162,12 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1158
1162
|
// // @ts-expect-error
|
|
1159
1163
|
// let zero = new PowiainaNum(dis.array[dis.arr01.length - 1][0]);
|
|
1160
1164
|
// return zero;
|
|
1161
|
-
// }
|
|
1162
|
-
//
|
|
1163
|
-
|
|
1165
|
+
// }
|
|
1166
|
+
// else
|
|
1167
|
+
if (target.lt(PowiainaNum.pentate(bbase, 2))) {
|
|
1168
|
+
return new PowiainaNum(target).anyarrow_log(3)(bbase);
|
|
1169
|
+
}
|
|
1170
|
+
// else {
|
|
1164
1171
|
// let addTest = 8;
|
|
1165
1172
|
// let target = 0;
|
|
1166
1173
|
// while (addTest >= 10 ** -10) {
|
|
@@ -1192,7 +1199,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1192
1199
|
var mid = Math.floor((left + right) / 2);
|
|
1193
1200
|
var comparison = PowiainaNum.arrFrac(bbase, mid).cmp(target);
|
|
1194
1201
|
if (comparison === 0) {
|
|
1195
|
-
return mid;
|
|
1202
|
+
return new PowiainaNum(mid);
|
|
1196
1203
|
} else if (comparison < 0) {
|
|
1197
1204
|
result = mid;
|
|
1198
1205
|
left = mid + 1;
|
|
@@ -1200,10 +1207,10 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1200
1207
|
right = mid - 1;
|
|
1201
1208
|
}
|
|
1202
1209
|
if (Math.abs(left - right) <= EPSILON) {
|
|
1203
|
-
return mid;
|
|
1210
|
+
return new PowiainaNum(mid);
|
|
1204
1211
|
}
|
|
1205
1212
|
}
|
|
1206
|
-
return result;
|
|
1213
|
+
return new PowiainaNum(result);
|
|
1207
1214
|
// if (dis.arr01[dis.array.length - 1][0] >= 98) {
|
|
1208
1215
|
// // @ts-expect-error
|
|
1209
1216
|
// let zero = new PowiainaNum(dis.array[dis.arr01.length - 1][0]);
|
|
@@ -1414,6 +1421,96 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1414
1421
|
return PowiainaNum.NaN.clone();
|
|
1415
1422
|
};
|
|
1416
1423
|
}
|
|
1424
|
+
}, {
|
|
1425
|
+
key: "omega2log",
|
|
1426
|
+
value: function omega2log() {
|
|
1427
|
+
var bbase = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
|
|
1428
|
+
var EPSILON = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1e-6;
|
|
1429
|
+
var target = this;
|
|
1430
|
+
var dis = target.clone();
|
|
1431
|
+
if (dis.isInfiNaN()) return dis;
|
|
1432
|
+
if (dis.gte("10{1,3}e15.954589770191003")) return dis;
|
|
1433
|
+
new PowiainaNum(bbase).clone();
|
|
1434
|
+
if (dis.getOperator(1 / 0, 2) >= 1) {
|
|
1435
|
+
dis.setOperator(dis.getOperator(1 / 0) - 1, 1 / 0, 2, 1);
|
|
1436
|
+
return dis;
|
|
1437
|
+
}
|
|
1438
|
+
// if (dis.layer >= 1) {
|
|
1439
|
+
// dis.layer -= 1
|
|
1440
|
+
// return dis
|
|
1441
|
+
// } else
|
|
1442
|
+
// // @ts-expect-error
|
|
1443
|
+
// if (dis.arr01[dis.array.length - 1][0] >= 98) {
|
|
1444
|
+
// // @ts-expect-error
|
|
1445
|
+
// let zero = new PowiainaNum(dis.array[dis.arr01.length - 1][0]);
|
|
1446
|
+
// return zero;
|
|
1447
|
+
// }
|
|
1448
|
+
// else
|
|
1449
|
+
if (target.lt(new PowiainaNum(bbase).expansionArrow(3)(2))) {
|
|
1450
|
+
return new PowiainaNum(target).expansion_log2(3)(bbase);
|
|
1451
|
+
}
|
|
1452
|
+
// else {
|
|
1453
|
+
// let addTest = 8;
|
|
1454
|
+
// let target = 0;
|
|
1455
|
+
// while (addTest >= 10 ** -10) {
|
|
1456
|
+
// if (PowiainaNum.arrFrac(base, target + addTest).lte(dis)) {
|
|
1457
|
+
// target += addTest;
|
|
1458
|
+
// }
|
|
1459
|
+
// addTest /= 2;
|
|
1460
|
+
// }
|
|
1461
|
+
// return new PowiainaNum(target);
|
|
1462
|
+
// }
|
|
1463
|
+
if (bbase == 10) {
|
|
1464
|
+
var clonedOperators = [];
|
|
1465
|
+
for (var i = 0; i < target.array.length; i++) {
|
|
1466
|
+
clonedOperators[i] = {
|
|
1467
|
+
arrow: target.array[i].arrow,
|
|
1468
|
+
expans: target.array[i].expans,
|
|
1469
|
+
megota: target.array[i].megota,
|
|
1470
|
+
repeat: target.array[i].repeat,
|
|
1471
|
+
valuereplaced: target.array[i].valuereplaced
|
|
1472
|
+
};
|
|
1473
|
+
}
|
|
1474
|
+
var _result2 = PowiainaNum.omegacollect(clonedOperators);
|
|
1475
|
+
return new PowiainaNum(_result2[1].arrow - 1 + Math.log(_result2[0].repeat / 2) / Math.log(5));
|
|
1476
|
+
}
|
|
1477
|
+
var left = 2;
|
|
1478
|
+
var right = 9007199254740991;
|
|
1479
|
+
var result = NaN;
|
|
1480
|
+
while (left <= right) {
|
|
1481
|
+
var mid = Math.floor((left + right) / 2);
|
|
1482
|
+
var comparison = PowiainaNum.arrw2Frac(bbase, mid).cmp(target);
|
|
1483
|
+
if (comparison === 0) {
|
|
1484
|
+
return new PowiainaNum(mid);
|
|
1485
|
+
} else if (comparison < 0) {
|
|
1486
|
+
result = mid;
|
|
1487
|
+
left = mid + 1;
|
|
1488
|
+
} else {
|
|
1489
|
+
right = mid - 1;
|
|
1490
|
+
}
|
|
1491
|
+
if (Math.abs(left - right) <= EPSILON) {
|
|
1492
|
+
return new PowiainaNum(mid);
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
return new PowiainaNum(result);
|
|
1496
|
+
// if (dis.arr01[dis.array.length - 1][0] >= 98) {
|
|
1497
|
+
// // @ts-expect-error
|
|
1498
|
+
// let zero = new PowiainaNum(dis.array[dis.arr01.length - 1][0]);
|
|
1499
|
+
// return zero;
|
|
1500
|
+
// } else if (target.lt(PowiainaNum.pentate(bbase, 2))) {
|
|
1501
|
+
// return new PowiainaNum(target).anyarrow_log(3)(bbase);
|
|
1502
|
+
// } else {
|
|
1503
|
+
// let addTest = 8;
|
|
1504
|
+
// let target = 0;
|
|
1505
|
+
// while (addTest >= 10 ** -10) {
|
|
1506
|
+
// if (PowiainaNum.arrFrac(base, target + addTest).lte(dis)) {
|
|
1507
|
+
// target += addTest;
|
|
1508
|
+
// }
|
|
1509
|
+
// addTest /= 2;
|
|
1510
|
+
// }
|
|
1511
|
+
// return new PowiainaNum(target);
|
|
1512
|
+
// }
|
|
1513
|
+
}
|
|
1417
1514
|
/**
|
|
1418
1515
|
* base{height}base
|
|
1419
1516
|
*/
|
|
@@ -1428,6 +1525,16 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1428
1525
|
function arrow_height_inverse(arrows) {
|
|
1429
1526
|
return this.anyarrow_log(arrows);
|
|
1430
1527
|
}
|
|
1528
|
+
/**
|
|
1529
|
+
* Arrow w2 height inverse, an alias of `expansion_log2`
|
|
1530
|
+
* @param arrows
|
|
1531
|
+
* @returns
|
|
1532
|
+
*/
|
|
1533
|
+
}, {
|
|
1534
|
+
key: "arrow_w2_height_inverse",
|
|
1535
|
+
value: function arrow_w2_height_inverse(arrows) {
|
|
1536
|
+
return this.expansion_log2(arrows);
|
|
1537
|
+
}
|
|
1431
1538
|
}, {
|
|
1432
1539
|
key: "chain",
|
|
1433
1540
|
value: function chain(other, arrows) {
|
|
@@ -1467,52 +1574,56 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1467
1574
|
function expansion(other2) {
|
|
1468
1575
|
var other = new PowiainaNum(other2);
|
|
1469
1576
|
var t = this.clone();
|
|
1470
|
-
if (other.lt(PowiainaNum.ZERO)
|
|
1577
|
+
if (other.lt(PowiainaNum.ZERO)) return PowiainaNum.NaN.clone();
|
|
1471
1578
|
if (other.eq(PowiainaNum.ONE)) return this.clone();
|
|
1472
1579
|
if (this.eq(PowiainaNum.ONE)) return PowiainaNum.ONE.clone();
|
|
1473
|
-
if (!this.isInt()) {
|
|
1474
|
-
if (PowiainaNum.throwErrorOnResultNaN) throw new Error("NaN");
|
|
1475
|
-
return PowiainaNum.NaN.clone();
|
|
1476
|
-
}
|
|
1477
1580
|
if (this.eq(2)) return new PowiainaNum(4);
|
|
1478
1581
|
if (other.eq(0)) return PowiainaNum.ONE.clone();
|
|
1479
|
-
|
|
1582
|
+
if (other.gt(0) && other.lt(1) && !other.isInt()) {
|
|
1583
|
+
return t.pow(other);
|
|
1584
|
+
}
|
|
1585
|
+
if (other.gt(1) && other.lt(2) && !other.isInt()) {
|
|
1586
|
+
var _y = other.sub(1).pow_base(t);
|
|
1587
|
+
if (_y.lt(2)) return PowiainaNum.arrow(t, 3, _y);
|
|
1588
|
+
return PowiainaNum.arrFrac(t, _y);
|
|
1589
|
+
}
|
|
1590
|
+
var calcBase;
|
|
1480
1591
|
// I don't know is this added partrs work correctly...
|
|
1481
1592
|
if (t.gt("10{1,2}".concat(MSI)) || other.gt(MSI)) {
|
|
1482
1593
|
if (t.gt("10{1,2}".concat(MSI))) {
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1594
|
+
calcBase = t.clone();
|
|
1595
|
+
calcBase.setOperator(calcBase.getOperator(1, 2) - 1, 1, 2);
|
|
1596
|
+
calcBase.normalize();
|
|
1486
1597
|
} else if (t.gt("10{".concat(MSI, "}10"))) {
|
|
1487
|
-
|
|
1598
|
+
calcBase = new PowiainaNum(t.getOperator(Infinity));
|
|
1488
1599
|
} else {
|
|
1489
|
-
|
|
1600
|
+
calcBase = PowiainaNum.ZERO;
|
|
1490
1601
|
}
|
|
1491
|
-
var j =
|
|
1602
|
+
var j = calcBase.add(other);
|
|
1492
1603
|
j.setOperator(j.getOperator(1, 2) + 1, 1, 2);
|
|
1493
1604
|
j.normalize();
|
|
1494
1605
|
return j;
|
|
1495
1606
|
}
|
|
1496
|
-
var
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1607
|
+
var y = other.toNumber() - 1;
|
|
1608
|
+
var f = Math.floor(y);
|
|
1609
|
+
calcBase = PowiainaNum.expansion(t, 1 + y - f);
|
|
1610
|
+
var i = 0;
|
|
1611
|
+
for (var m = new PowiainaNum("10{1,2}e15.954589770191003"); f !== 0 && calcBase.lt(m) && i < 100; i++) {
|
|
1500
1612
|
if (f > 0) {
|
|
1501
|
-
|
|
1613
|
+
calcBase = PowiainaNum.arrFrac(t, calcBase);
|
|
1502
1614
|
--f;
|
|
1503
1615
|
}
|
|
1504
1616
|
}
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
return r;
|
|
1617
|
+
calcBase.setOperator(calcBase.getOperator(Infinity) + f, Infinity);
|
|
1618
|
+
calcBase.normalize();
|
|
1619
|
+
return calcBase;
|
|
1509
1620
|
}
|
|
1510
1621
|
}, {
|
|
1511
1622
|
key: "expansionArrow",
|
|
1512
1623
|
value: function expansionArrow(arrow2) {
|
|
1513
1624
|
var arrow = new PowiainaNum(arrow2);
|
|
1514
1625
|
var t = this.clone();
|
|
1515
|
-
if (arrow.lt(0) || !arrow.isInt()
|
|
1626
|
+
if (arrow.lt(0) || !arrow.isInt()) return function () {
|
|
1516
1627
|
if (PowiainaNum.throwErrorOnResultNaN) throw new Error("NaN");
|
|
1517
1628
|
return PowiainaNum.NaN.clone();
|
|
1518
1629
|
};
|
|
@@ -1591,6 +1702,116 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1591
1702
|
return r;
|
|
1592
1703
|
};
|
|
1593
1704
|
}
|
|
1705
|
+
}, {
|
|
1706
|
+
key: "expansion_log_inner",
|
|
1707
|
+
value: function expansion_log_inner(base2) {
|
|
1708
|
+
var t = this.clone();
|
|
1709
|
+
var base = new PowiainaNum(base2);
|
|
1710
|
+
if (base.eq(2) && t.gt(4)) return PowiainaNum.NaN.clone();
|
|
1711
|
+
if (t.gte("10{2,2}".concat(MSI))) {
|
|
1712
|
+
return t;
|
|
1713
|
+
}
|
|
1714
|
+
if (t.gte("10{1,2}".concat(MSI))) {
|
|
1715
|
+
t.setOperator(t.getOperator(1, 2) - 1, 1, 2);
|
|
1716
|
+
return t;
|
|
1717
|
+
}
|
|
1718
|
+
var r = 0;
|
|
1719
|
+
var x = t.clone();
|
|
1720
|
+
var morexxxoperators = 0;
|
|
1721
|
+
if (x.getOperator(1 / 0) >= 10) {
|
|
1722
|
+
morexxxoperators = x.getOperator(1 / 0) - 10;
|
|
1723
|
+
x.setOperator(10, 1 / 0);
|
|
1724
|
+
}
|
|
1725
|
+
for (var i = 0; i < 100; ++i) {
|
|
1726
|
+
if (x.lt(PowiainaNum.ZERO)) {
|
|
1727
|
+
x = PowiainaNum.arrFrac(base, x);
|
|
1728
|
+
--r;
|
|
1729
|
+
} else if (x.lte(1)) {
|
|
1730
|
+
return new PowiainaNum(r + x.toNumber() - 1 + morexxxoperators);
|
|
1731
|
+
} else {
|
|
1732
|
+
// 第1-4次迭代,进入此处
|
|
1733
|
+
++r;
|
|
1734
|
+
x = x.omegalog(base.toNumber());
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
if (x.gt(10)) return new PowiainaNum(r + morexxxoperators);
|
|
1738
|
+
return x.add(morexxxoperators);
|
|
1739
|
+
}
|
|
1740
|
+
/**
|
|
1741
|
+
* return `base`{{`arrow2`}}`x` = `this` which `x` is.
|
|
1742
|
+
*
|
|
1743
|
+
* @param arrow2
|
|
1744
|
+
* @returns
|
|
1745
|
+
*/
|
|
1746
|
+
}, {
|
|
1747
|
+
key: "expansion_log2",
|
|
1748
|
+
value: function expansion_log2(arrow2) {
|
|
1749
|
+
var x = this.clone();
|
|
1750
|
+
var arrow = new PowiainaNum(arrow2);
|
|
1751
|
+
var arrowsNum = arrow.toNumber();
|
|
1752
|
+
if (arrow.gt(MSI)) {
|
|
1753
|
+
throw new Error(powiainaNumError + "Not implemented");
|
|
1754
|
+
}
|
|
1755
|
+
if (!arrow.isInt() || arrow.lt(1)) return function () {
|
|
1756
|
+
if (PowiainaNum.throwErrorOnResultNaN) throw new Error("NaN");
|
|
1757
|
+
return PowiainaNum.NaN.clone();
|
|
1758
|
+
};
|
|
1759
|
+
if (arrow.eq(1)) return function (base) {
|
|
1760
|
+
return x.expansion_log_inner(base);
|
|
1761
|
+
};
|
|
1762
|
+
if (x.isInfiNaN()) return function () {
|
|
1763
|
+
return x;
|
|
1764
|
+
};
|
|
1765
|
+
return function (base) {
|
|
1766
|
+
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
1767
|
+
var b = new PowiainaNum(base);
|
|
1768
|
+
if (b.isNaN()) return b;
|
|
1769
|
+
if (b.isInfi()) return PowiainaNum.ZERO.clone();
|
|
1770
|
+
if (x.isZero()) return PowiainaNum.ONE.clone();
|
|
1771
|
+
if (x.eq(PowiainaNum.ONE)) return PowiainaNum.ZERO.clone();
|
|
1772
|
+
if (x.eq(b)) return PowiainaNum.ONE.clone();
|
|
1773
|
+
if (x.max(b).gt(PowiainaNum.arrowexpansMSI(arrowsNum + 1))) {
|
|
1774
|
+
if (x.gt(b)) return x;
|
|
1775
|
+
return PowiainaNum.ZERO.clone();
|
|
1776
|
+
}
|
|
1777
|
+
if (x.max(b).gt(PowiainaNum.arrowexpansMSI(arrowsNum))) {
|
|
1778
|
+
if (x.gt(b)) {
|
|
1779
|
+
x.setOperator(x.getOperator(arrowsNum, 2) - 1, arrowsNum, 2);
|
|
1780
|
+
x.normalize();
|
|
1781
|
+
return x.sub(x.getOperator(arrowsNum - 1, 2));
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1784
|
+
if (x.lt(PowiainaNum.ZERO.clone())) {
|
|
1785
|
+
if (PowiainaNum.throwErrorOnResultNaN) throw new Error("NaN");
|
|
1786
|
+
return PowiainaNum.NaN.clone();
|
|
1787
|
+
}
|
|
1788
|
+
// base^base^... = x? (? bases)
|
|
1789
|
+
var r = 0;
|
|
1790
|
+
// 计算x与base的差距
|
|
1791
|
+
var distanceLayerOf = x.getOperator(arrowsNum, 2) - b.getOperator(arrowsNum, 2);
|
|
1792
|
+
if (distanceLayerOf > 3) {
|
|
1793
|
+
var l = distanceLayerOf - 3;
|
|
1794
|
+
r += l;
|
|
1795
|
+
x.setOperator(x.getOperator(arrowsNum, 2) - l, arrowsNum, 2);
|
|
1796
|
+
}
|
|
1797
|
+
// 假设b=3, x=1e19
|
|
1798
|
+
for (var i = 0; i < 100; ++i) {
|
|
1799
|
+
if (x.lt(PowiainaNum.ZERO)) {
|
|
1800
|
+
x = x.expansionArrow(arrowsNum - 1)(base);
|
|
1801
|
+
--r;
|
|
1802
|
+
} else if (x.lte(1)) {
|
|
1803
|
+
return new PowiainaNum(r + x.toNumber() - 1);
|
|
1804
|
+
} else {
|
|
1805
|
+
// 第1-4次迭代,进入此处
|
|
1806
|
+
++r;
|
|
1807
|
+
x = x.expansion_log2(arrowsNum - 1)(base, depth + 1);
|
|
1808
|
+
}
|
|
1809
|
+
}
|
|
1810
|
+
if (x.gt(10)) return new PowiainaNum(r);
|
|
1811
|
+
if (PowiainaNum.throwErrorOnResultNaN) throw new Error("NaN");
|
|
1812
|
+
return PowiainaNum.NaN.clone();
|
|
1813
|
+
};
|
|
1814
|
+
}
|
|
1594
1815
|
}, {
|
|
1595
1816
|
key: "multiExpansion",
|
|
1596
1817
|
value: function multiExpansion(other) {
|
|
@@ -2590,18 +2811,44 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
2590
2811
|
value: function oBase(operators) {
|
|
2591
2812
|
return operators[0].repeat;
|
|
2592
2813
|
}
|
|
2814
|
+
}, {
|
|
2815
|
+
key: "operatorLevel",
|
|
2816
|
+
value: function operatorLevel(operator) {
|
|
2817
|
+
if (operator == undefined) return [0, 0, 0];
|
|
2818
|
+
if (!Array.isArray(operator)) return [operator.megota, operator.expans, operator.arrow];else {
|
|
2819
|
+
return _toConsumableArray(operator);
|
|
2820
|
+
}
|
|
2821
|
+
}
|
|
2822
|
+
}, {
|
|
2823
|
+
key: "cmpOperatorLevel",
|
|
2824
|
+
value: function cmpOperatorLevel(operator, operator2) {
|
|
2825
|
+
return compareTuples(this.operatorLevel(operator), this.operatorLevel(operator2));
|
|
2826
|
+
}
|
|
2827
|
+
}, {
|
|
2828
|
+
key: "higherOmega",
|
|
2829
|
+
value: function higherOmega(operator) {
|
|
2830
|
+
this.operatorLevel(operator);
|
|
2831
|
+
if (!isFinite(operator.expans)) return this.operatorLevel(operator);else if (!isFinite(operator.arrow)) return this.operatorLevel(operator);else {
|
|
2832
|
+
return [operator.megota, operator.expans, 1 / 0];
|
|
2833
|
+
}
|
|
2834
|
+
}
|
|
2593
2835
|
/**
|
|
2594
|
-
* Only works for operators level <
|
|
2836
|
+
* Only works for operators level < ω2.
|
|
2595
2837
|
*/
|
|
2596
2838
|
}, {
|
|
2597
2839
|
key: "omegacollect",
|
|
2598
2840
|
value: function omegacollect(operators) {
|
|
2599
|
-
|
|
2841
|
+
var _b;
|
|
2600
2842
|
// const result = {
|
|
2601
2843
|
// bottom: NaN,
|
|
2602
2844
|
// top: NaN,
|
|
2603
2845
|
// };
|
|
2604
|
-
|
|
2846
|
+
function upgrade2(base) {
|
|
2847
|
+
operators[1].arrow++;
|
|
2848
|
+
operators[0].repeat = operators[1].repeat + Math.log10(base);
|
|
2849
|
+
operators[1].repeat = 1;
|
|
2850
|
+
}
|
|
2851
|
+
var maxWhile = 1000000;
|
|
2605
2852
|
while (maxWhile--) {
|
|
2606
2853
|
var base = PowiainaNum.oBase(operators);
|
|
2607
2854
|
if (base >= 10) {
|
|
@@ -2609,26 +2856,53 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
2609
2856
|
operators[0].repeat = Math.log10(base);
|
|
2610
2857
|
PowiainaNum.opSetOperator(operators, PowiainaNum.opGetOperator(operators, 1, 1, 1) + 1, 1, 1, 1);
|
|
2611
2858
|
} else {
|
|
2612
|
-
if (operators.length <= 2 && operators[1].repeat == 1) {
|
|
2859
|
+
if (operators.length <= 2 && ((_b = operators[1]) === null || _b === void 0 ? void 0 : _b.repeat) == 1) {
|
|
2613
2860
|
return operators;
|
|
2614
2861
|
}
|
|
2615
2862
|
// Operator upgrade mode:
|
|
2863
|
+
var nextisOmega = this.cmpOperatorLevel(this.higherOmega(operators[1]), operators[2]) <= 0;
|
|
2864
|
+
// some operator will upgrade to 10{!}:
|
|
2865
|
+
// first, the 3th operator is >=ω.
|
|
2866
|
+
// second, the 2th operator's repeat is 1.
|
|
2867
|
+
// third: the 2th operator's arrow >=3 and it's not 10{!}(for converting)
|
|
2868
|
+
// fourth, base < 10
|
|
2869
|
+
if (nextisOmega && operators[1].repeat == 1 && isFinite(operators[1].arrow) && operators[1].arrow >= 3) {
|
|
2870
|
+
operators[0].repeat = operators[1].arrow - 1 + Math.log(operators[0].repeat / 2) / Math.log(5);
|
|
2871
|
+
operators[1] = newOperator(1, 1 / 0, operators[1].expans, operators[1].megota);
|
|
2872
|
+
mergeSameArrays({
|
|
2873
|
+
array: operators
|
|
2874
|
+
});
|
|
2875
|
+
continue;
|
|
2876
|
+
}
|
|
2616
2877
|
// Check the -2th operator, is repeat >= 2?
|
|
2617
|
-
if (operators[1].
|
|
2618
|
-
operators[1].arrow
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2878
|
+
else if (isFinite(operators[1].arrow)) {
|
|
2879
|
+
// 如果下一个是omega,而且operators[1].arrow<3的话,强行提到arrow>=3
|
|
2880
|
+
if (operators[1].repeat >= 2) {
|
|
2881
|
+
upgrade2(base);
|
|
2882
|
+
} else if (nextisOmega && operators[1].arrow < 3) {
|
|
2883
|
+
upgrade2(base);
|
|
2884
|
+
} else if (base !== 1) {
|
|
2885
|
+
upgrade2(base);
|
|
2886
|
+
} else if (this.cmpOperatorLevel(this.higherOmega(operators[1]), operators[2]) == 1) {
|
|
2887
|
+
// -2th repeat = 1, and base = 1, 3rd operator is not higher.
|
|
2888
|
+
operators[1].arrow = operators[2].arrow;
|
|
2889
|
+
}
|
|
2890
|
+
mergeSameArrays({
|
|
2891
|
+
array: operators
|
|
2892
|
+
});
|
|
2893
|
+
continue;
|
|
2894
|
+
} else if (!isFinite(operators[1].arrow)) {
|
|
2895
|
+
// if an operator is 10{!}, upgrade to a higher level
|
|
2896
|
+
// 10{!}3 = 10{1,2}(1+Math.log10(3))
|
|
2897
|
+
var infRepeat = operators[1].repeat;
|
|
2898
|
+
var baseAfter = infRepeat + Math.log10(base);
|
|
2899
|
+
operators[1] = newOperator(1, 1, operators[1].expans + 1, operators[1].megota);
|
|
2900
|
+
operators[0].repeat = baseAfter;
|
|
2901
|
+
mergeSameArrays({
|
|
2902
|
+
array: operators
|
|
2903
|
+
});
|
|
2904
|
+
continue;
|
|
2628
2905
|
}
|
|
2629
|
-
mergeSameArrays({
|
|
2630
|
-
array: operators
|
|
2631
|
-
});
|
|
2632
2906
|
}
|
|
2633
2907
|
}
|
|
2634
2908
|
return operators;
|
|
@@ -2646,11 +2920,27 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
2646
2920
|
var h = new PowiainaNum(height).clone();
|
|
2647
2921
|
return new PowiainaNum(b).arrow(h.floor().add(1))(b.div(2).pow(h.sub(h.floor())).mul(2));
|
|
2648
2922
|
}
|
|
2923
|
+
/**
|
|
2924
|
+
* base{{height}}base
|
|
2925
|
+
*/
|
|
2926
|
+
}, {
|
|
2927
|
+
key: "arrw2Frac",
|
|
2928
|
+
value: function arrw2Frac(base, height) {
|
|
2929
|
+
if (new PowiainaNum(height).lt(2)) return new PowiainaNum(base).expansionArrow(3)(height);
|
|
2930
|
+
var b = new PowiainaNum(base).clone();
|
|
2931
|
+
var h = new PowiainaNum(height).clone();
|
|
2932
|
+
return new PowiainaNum(b).expansionArrow(h.floor().add(1))(b.div(2).pow(h.sub(h.floor())).mul(2));
|
|
2933
|
+
}
|
|
2649
2934
|
}, {
|
|
2650
2935
|
key: "arrowMSI",
|
|
2651
2936
|
value: function arrowMSI(arrowsNum) {
|
|
2652
2937
|
return new PowiainaNum("10{".concat(arrowsNum, "}").concat(MSI));
|
|
2653
2938
|
}
|
|
2939
|
+
}, {
|
|
2940
|
+
key: "arrowexpansMSI",
|
|
2941
|
+
value: function arrowexpansMSI(arrowsNum) {
|
|
2942
|
+
return new PowiainaNum("10{".concat(arrowsNum, ",2}").concat(MSI));
|
|
2943
|
+
}
|
|
2654
2944
|
}, {
|
|
2655
2945
|
key: "hyper",
|
|
2656
2946
|
value: function hyper(arr) {
|
|
@@ -3697,4 +3987,4 @@ PowiainaNum.blankArgumentConstructorReturnZero = false;
|
|
|
3697
3987
|
*/
|
|
3698
3988
|
PowiainaNum.throwErrorOnResultNaN = false;
|
|
3699
3989
|
|
|
3700
|
-
export { arraySortFunction, PowiainaNum as default, mergeSameArrays };
|
|
3990
|
+
export { arraySortFunction, PowiainaNum as default, mergeSameArrays, newOperator };
|