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