powiaina_num.js 0.2.0-alpha.2.6 → 0.2.0-alpha.2.7
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/README.md +71 -71
- package/dist/PowiainaNum.cjs.js +59 -4
- package/dist/PowiainaNum.esm.js +59 -4
- package/dist/PowiainaNum.js +59 -4
- package/dist/PowiainaNum.min.js +1 -1
- package/dist/index.d.ts +3 -0
- package/package.json +47 -47
package/README.md
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
# PowiainaNum.js
|
|
2
|
-
|
|
3
|
-
A JavaScript library that handles arithmetic for numbers as large as {10,9e15,1,1,1,2}.
|
|
4
|
-
|
|
5
|
-
This reaches level f<sub>ω<sup>3</sup>+1</sub>.
|
|
6
|
-
|
|
7
|
-
Internally, it is represented as an sign,layer, small and array. Sign is 1 or -1. It's 10{oper.arrow, oper.expans, oper.megota}, If arrow count or expans count is Infinite, the count replaces from the next operators.
|
|
8
|
-
|
|
9
|
-
Some codes snippet from [ExpantaNum.js by Naruyoko](https://github.com/Naruyoko/ExpantaNum.js)
|
|
10
|
-
|
|
11
|
-
Functions are as follows `abs, neg, add, sub, mul, div, rec, pow, sqrt, cbrt, root, log10, log, cmp, isFinite, isInfinite, isNaN`(some missing items that have not been fully developed)
|
|
12
|
-
|
|
13
|
-
## Using
|
|
14
|
-
|
|
15
|
-
The library exports a class,
|
|
16
|
-
Create a PowiainaNum.js object like this:
|
|
17
|
-
|
|
18
|
-
```javascript
|
|
19
|
-
import PowiainaNum from "powiaina_num.js";
|
|
20
|
-
|
|
21
|
-
let a = new PowiainaNum(); // create PN.js number with NaN
|
|
22
|
-
let b = new PowiainaNum(3); // create PN.js number with number 3
|
|
23
|
-
let c = new PowiainaNum("1e114514"); // create PN.js number with number 10^114514
|
|
24
|
-
|
|
25
|
-
let d = new PowiainaNum(c); // create PN.js number from a PN.js number
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Javascript operators will not work such as `+`, `-`, etc.
|
|
29
|
-
You should call the equivalent functions instead.
|
|
30
|
-
|
|
31
|
-
```javascript
|
|
32
|
-
let a = new PowiainaNum(114514);
|
|
33
|
-
let b = new PowiainaNum(1919810);
|
|
34
|
-
|
|
35
|
-
// Calculate a+b:
|
|
36
|
-
let c = a.add(b); // 1919810+114514
|
|
37
|
-
|
|
38
|
-
// Calculate a-b:
|
|
39
|
-
let c = a.sub(b);
|
|
40
|
-
|
|
41
|
-
a.mul(b); // a*b
|
|
42
|
-
a.div(b); // a/b
|
|
43
|
-
a.pow(b); // a^b
|
|
44
|
-
|
|
45
|
-
a.log10(); // log10(a)
|
|
46
|
-
|
|
47
|
-
// comparing PN.js numbers
|
|
48
|
-
|
|
49
|
-
a.lt(b); // a is less than b
|
|
50
|
-
a.gt(b); // a is greater than b
|
|
51
|
-
a.eq(b); // a is equals to b
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Future ideas
|
|
55
|
-
|
|
56
|
-
Extend `Operator` to nearly infinite keys to reach level f<sub>ω<sup>ω</sup></sub>
|
|
57
|
-
|
|
58
|
-
```typescript
|
|
59
|
-
interface Operator {
|
|
60
|
-
/*P3*/ arrow: number;
|
|
61
|
-
/*P4*/ expans: number;
|
|
62
|
-
/*P5*/ megota: number;
|
|
63
|
-
/*P6*/ powiaina: number;
|
|
64
|
-
P7: number;
|
|
65
|
-
.....
|
|
66
|
-
|
|
67
|
-
repeat: number;
|
|
68
|
-
|
|
69
|
-
valuereplaced?: -1 | 0 | 1 | 2 | ...
|
|
70
|
-
}
|
|
71
|
-
```
|
|
1
|
+
# PowiainaNum.js
|
|
2
|
+
|
|
3
|
+
A JavaScript library that handles arithmetic for numbers as large as {10,9e15,1,1,1,2}.
|
|
4
|
+
|
|
5
|
+
This reaches level f<sub>ω<sup>3</sup>+1</sub>.
|
|
6
|
+
|
|
7
|
+
Internally, it is represented as an sign,layer, small and array. Sign is 1 or -1. It's 10{oper.arrow, oper.expans, oper.megota}, If arrow count or expans count is Infinite, the count replaces from the next operators.
|
|
8
|
+
|
|
9
|
+
Some codes snippet from [ExpantaNum.js by Naruyoko](https://github.com/Naruyoko/ExpantaNum.js)
|
|
10
|
+
|
|
11
|
+
Functions are as follows `abs, neg, add, sub, mul, div, rec, pow, sqrt, cbrt, root, log10, log, cmp, isFinite, isInfinite, isNaN`(some missing items that have not been fully developed)
|
|
12
|
+
|
|
13
|
+
## Using
|
|
14
|
+
|
|
15
|
+
The library exports a class,
|
|
16
|
+
Create a PowiainaNum.js object like this:
|
|
17
|
+
|
|
18
|
+
```javascript
|
|
19
|
+
import PowiainaNum from "powiaina_num.js";
|
|
20
|
+
|
|
21
|
+
let a = new PowiainaNum(); // create PN.js number with NaN
|
|
22
|
+
let b = new PowiainaNum(3); // create PN.js number with number 3
|
|
23
|
+
let c = new PowiainaNum("1e114514"); // create PN.js number with number 10^114514
|
|
24
|
+
|
|
25
|
+
let d = new PowiainaNum(c); // create PN.js number from a PN.js number
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Javascript operators will not work such as `+`, `-`, etc.
|
|
29
|
+
You should call the equivalent functions instead.
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
let a = new PowiainaNum(114514);
|
|
33
|
+
let b = new PowiainaNum(1919810);
|
|
34
|
+
|
|
35
|
+
// Calculate a+b:
|
|
36
|
+
let c = a.add(b); // 1919810+114514
|
|
37
|
+
|
|
38
|
+
// Calculate a-b:
|
|
39
|
+
let c = a.sub(b);
|
|
40
|
+
|
|
41
|
+
a.mul(b); // a*b
|
|
42
|
+
a.div(b); // a/b
|
|
43
|
+
a.pow(b); // a^b
|
|
44
|
+
|
|
45
|
+
a.log10(); // log10(a)
|
|
46
|
+
|
|
47
|
+
// comparing PN.js numbers
|
|
48
|
+
|
|
49
|
+
a.lt(b); // a is less than b
|
|
50
|
+
a.gt(b); // a is greater than b
|
|
51
|
+
a.eq(b); // a is equals to b
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Future ideas
|
|
55
|
+
|
|
56
|
+
Extend `Operator` to nearly infinite keys to reach level f<sub>ω<sup>ω</sup></sub>
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
interface Operator {
|
|
60
|
+
/*P3*/ arrow: number;
|
|
61
|
+
/*P4*/ expans: number;
|
|
62
|
+
/*P5*/ megota: number;
|
|
63
|
+
/*P6*/ powiaina: number;
|
|
64
|
+
P7: number;
|
|
65
|
+
.....
|
|
66
|
+
|
|
67
|
+
repeat: number;
|
|
68
|
+
|
|
69
|
+
valuereplaced?: -1 | 0 | 1 | 2 | ...
|
|
70
|
+
}
|
|
71
|
+
```
|
package/dist/PowiainaNum.cjs.js
CHANGED
|
@@ -276,7 +276,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
276
276
|
if (l > MSI_LOG10 || l < -MSI_LOG10) {
|
|
277
277
|
r.array = [newOperator(l, 0), newOperator(1, 1)];
|
|
278
278
|
} else {
|
|
279
|
-
r.array = [newOperator(Math.pow(10, l), 0)];
|
|
279
|
+
r.array = [newOperator(Math.pow(10, Math.abs(l)), 0)];
|
|
280
280
|
}
|
|
281
281
|
r.small = l < 0 ? true : false;
|
|
282
282
|
r.sign *= mult;
|
|
@@ -403,7 +403,6 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
403
403
|
}, {
|
|
404
404
|
key: "log10",
|
|
405
405
|
value: function log10() {
|
|
406
|
-
var _a, _b;
|
|
407
406
|
if (this.isneg()) return PowiainaNum.NaN.clone();
|
|
408
407
|
if (this.isZero()) return PowiainaNum.NEGATIVE_INFINITY.clone();
|
|
409
408
|
if (this.small) {
|
|
@@ -411,7 +410,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
411
410
|
_x.small = !_x.small;
|
|
412
411
|
return _x.log10().neg();
|
|
413
412
|
}
|
|
414
|
-
if (
|
|
413
|
+
if (this.array.length == 1) return new PowiainaNum(Math.log10(this.array[0].repeat));
|
|
415
414
|
var x = this.clone();
|
|
416
415
|
x.array[1].repeat = x.array[1].repeat - 1;
|
|
417
416
|
x.normalize();
|
|
@@ -631,6 +630,12 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
631
630
|
r.sign = this.sign;
|
|
632
631
|
return r;
|
|
633
632
|
}
|
|
633
|
+
}, {
|
|
634
|
+
key: "trunc",
|
|
635
|
+
value: function trunc() {
|
|
636
|
+
var y = this.clone();
|
|
637
|
+
return y.gte(0) ? y.floor() : y.ceil();
|
|
638
|
+
}
|
|
634
639
|
/**
|
|
635
640
|
* @returns if this<other, return -1, if this=other, return 0, if this>other, return 1, if this!<=>, return 2
|
|
636
641
|
*/
|
|
@@ -1092,6 +1097,30 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1092
1097
|
var principal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
1093
1098
|
return new PowiainaNum(x).lambertw(principal);
|
|
1094
1099
|
}
|
|
1100
|
+
}, {
|
|
1101
|
+
key: "tetrate_10",
|
|
1102
|
+
value: function tetrate_10(other2) {
|
|
1103
|
+
var other = new PowiainaNum(other2);
|
|
1104
|
+
var height_int = other.trunc().toNumber();
|
|
1105
|
+
var height_frac = other.sub(height_int).toNumber();
|
|
1106
|
+
if (other.gt(PowiainaNum.PENTATED_MSI)) return other.clone();else if (other.gt(PowiainaNum.MSI)) {
|
|
1107
|
+
other.setOperator(other.getOperator(2) + 1, 2);
|
|
1108
|
+
} else if (other.lt(-2)) return PowiainaNum.NaN.clone();else if (other.lt(-1)) {
|
|
1109
|
+
return other.add(2).log10();
|
|
1110
|
+
} else if (other.lt(0)) {
|
|
1111
|
+
return other.add(1);
|
|
1112
|
+
} else if (other.lt(1)) {
|
|
1113
|
+
return other.pow10(); // 10^x
|
|
1114
|
+
} else if (height_int == 1) return PowiainaNum.pow(10, PowiainaNum.pow(10, height_frac));else if (height_int == 2) return PowiainaNum.pow(10, PowiainaNum.pow(10, PowiainaNum.pow(10, height_frac)));else {
|
|
1115
|
+
var remain = height_int - 2;
|
|
1116
|
+
var a = PowiainaNum.pow(10, PowiainaNum.pow(10, PowiainaNum.pow(10, height_frac)));
|
|
1117
|
+
a.setOperator(a.getOperator(1) + remain, 1);
|
|
1118
|
+
return a;
|
|
1119
|
+
}
|
|
1120
|
+
// 1--2, 10-<1e10, 10^10^0->1
|
|
1121
|
+
// 2--3, 1e10-<e1e10, 10^10^10^0->1
|
|
1122
|
+
return PowiainaNum.NaN.clone();
|
|
1123
|
+
}
|
|
1095
1124
|
}, {
|
|
1096
1125
|
key: "isNaN",
|
|
1097
1126
|
value: function isNaN(x) {
|
|
@@ -1102,7 +1131,12 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1102
1131
|
value: function fromNumber(x) {
|
|
1103
1132
|
var obj = new PowiainaNum(); // NaN
|
|
1104
1133
|
if (x < 0) obj.sign = -1; // negative
|
|
1105
|
-
else if (x == 0)
|
|
1134
|
+
else if (x == 0) {
|
|
1135
|
+
obj.sign = 0;
|
|
1136
|
+
obj.small = true;
|
|
1137
|
+
obj.array = [newOperator(Infinity, 0)];
|
|
1138
|
+
return obj;
|
|
1139
|
+
} else if (x > 0) obj.sign = 1;
|
|
1106
1140
|
var y = Math.abs(x);
|
|
1107
1141
|
if (y >= MSI_REC && y < 1) {
|
|
1108
1142
|
obj.small = true;
|
|
@@ -1371,6 +1405,27 @@ PowiainaNum.TETRATED_MSI = new PowiainaNum({
|
|
|
1371
1405
|
layer: 0,
|
|
1372
1406
|
sign: 1
|
|
1373
1407
|
});
|
|
1408
|
+
PowiainaNum.PENTATED_MSI = new PowiainaNum({
|
|
1409
|
+
array: [{
|
|
1410
|
+
arrow: 0,
|
|
1411
|
+
expans: 1,
|
|
1412
|
+
megota: 1,
|
|
1413
|
+
repeat: MSI
|
|
1414
|
+
}, {
|
|
1415
|
+
arrow: 1,
|
|
1416
|
+
expans: 1,
|
|
1417
|
+
megota: 1,
|
|
1418
|
+
repeat: MSI
|
|
1419
|
+
}, {
|
|
1420
|
+
arrow: 2,
|
|
1421
|
+
expans: 1,
|
|
1422
|
+
megota: 1,
|
|
1423
|
+
repeat: MSI
|
|
1424
|
+
}],
|
|
1425
|
+
small: false,
|
|
1426
|
+
layer: 0,
|
|
1427
|
+
sign: 1
|
|
1428
|
+
});
|
|
1374
1429
|
PowiainaNum.TRITRI = new PowiainaNum({
|
|
1375
1430
|
small: false,
|
|
1376
1431
|
layer: 0,
|
package/dist/PowiainaNum.esm.js
CHANGED
|
@@ -274,7 +274,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
274
274
|
if (l > MSI_LOG10 || l < -MSI_LOG10) {
|
|
275
275
|
r.array = [newOperator(l, 0), newOperator(1, 1)];
|
|
276
276
|
} else {
|
|
277
|
-
r.array = [newOperator(Math.pow(10, l), 0)];
|
|
277
|
+
r.array = [newOperator(Math.pow(10, Math.abs(l)), 0)];
|
|
278
278
|
}
|
|
279
279
|
r.small = l < 0 ? true : false;
|
|
280
280
|
r.sign *= mult;
|
|
@@ -401,7 +401,6 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
401
401
|
}, {
|
|
402
402
|
key: "log10",
|
|
403
403
|
value: function log10() {
|
|
404
|
-
var _a, _b;
|
|
405
404
|
if (this.isneg()) return PowiainaNum.NaN.clone();
|
|
406
405
|
if (this.isZero()) return PowiainaNum.NEGATIVE_INFINITY.clone();
|
|
407
406
|
if (this.small) {
|
|
@@ -409,7 +408,7 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
409
408
|
_x.small = !_x.small;
|
|
410
409
|
return _x.log10().neg();
|
|
411
410
|
}
|
|
412
|
-
if (
|
|
411
|
+
if (this.array.length == 1) return new PowiainaNum(Math.log10(this.array[0].repeat));
|
|
413
412
|
var x = this.clone();
|
|
414
413
|
x.array[1].repeat = x.array[1].repeat - 1;
|
|
415
414
|
x.normalize();
|
|
@@ -629,6 +628,12 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
629
628
|
r.sign = this.sign;
|
|
630
629
|
return r;
|
|
631
630
|
}
|
|
631
|
+
}, {
|
|
632
|
+
key: "trunc",
|
|
633
|
+
value: function trunc() {
|
|
634
|
+
var y = this.clone();
|
|
635
|
+
return y.gte(0) ? y.floor() : y.ceil();
|
|
636
|
+
}
|
|
632
637
|
/**
|
|
633
638
|
* @returns if this<other, return -1, if this=other, return 0, if this>other, return 1, if this!<=>, return 2
|
|
634
639
|
*/
|
|
@@ -1090,6 +1095,30 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1090
1095
|
var principal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
1091
1096
|
return new PowiainaNum(x).lambertw(principal);
|
|
1092
1097
|
}
|
|
1098
|
+
}, {
|
|
1099
|
+
key: "tetrate_10",
|
|
1100
|
+
value: function tetrate_10(other2) {
|
|
1101
|
+
var other = new PowiainaNum(other2);
|
|
1102
|
+
var height_int = other.trunc().toNumber();
|
|
1103
|
+
var height_frac = other.sub(height_int).toNumber();
|
|
1104
|
+
if (other.gt(PowiainaNum.PENTATED_MSI)) return other.clone();else if (other.gt(PowiainaNum.MSI)) {
|
|
1105
|
+
other.setOperator(other.getOperator(2) + 1, 2);
|
|
1106
|
+
} else if (other.lt(-2)) return PowiainaNum.NaN.clone();else if (other.lt(-1)) {
|
|
1107
|
+
return other.add(2).log10();
|
|
1108
|
+
} else if (other.lt(0)) {
|
|
1109
|
+
return other.add(1);
|
|
1110
|
+
} else if (other.lt(1)) {
|
|
1111
|
+
return other.pow10(); // 10^x
|
|
1112
|
+
} else if (height_int == 1) return PowiainaNum.pow(10, PowiainaNum.pow(10, height_frac));else if (height_int == 2) return PowiainaNum.pow(10, PowiainaNum.pow(10, PowiainaNum.pow(10, height_frac)));else {
|
|
1113
|
+
var remain = height_int - 2;
|
|
1114
|
+
var a = PowiainaNum.pow(10, PowiainaNum.pow(10, PowiainaNum.pow(10, height_frac)));
|
|
1115
|
+
a.setOperator(a.getOperator(1) + remain, 1);
|
|
1116
|
+
return a;
|
|
1117
|
+
}
|
|
1118
|
+
// 1--2, 10-<1e10, 10^10^0->1
|
|
1119
|
+
// 2--3, 1e10-<e1e10, 10^10^10^0->1
|
|
1120
|
+
return PowiainaNum.NaN.clone();
|
|
1121
|
+
}
|
|
1093
1122
|
}, {
|
|
1094
1123
|
key: "isNaN",
|
|
1095
1124
|
value: function isNaN(x) {
|
|
@@ -1100,7 +1129,12 @@ var PowiainaNum = /*#__PURE__*/function () {
|
|
|
1100
1129
|
value: function fromNumber(x) {
|
|
1101
1130
|
var obj = new PowiainaNum(); // NaN
|
|
1102
1131
|
if (x < 0) obj.sign = -1; // negative
|
|
1103
|
-
else if (x == 0)
|
|
1132
|
+
else if (x == 0) {
|
|
1133
|
+
obj.sign = 0;
|
|
1134
|
+
obj.small = true;
|
|
1135
|
+
obj.array = [newOperator(Infinity, 0)];
|
|
1136
|
+
return obj;
|
|
1137
|
+
} else if (x > 0) obj.sign = 1;
|
|
1104
1138
|
var y = Math.abs(x);
|
|
1105
1139
|
if (y >= MSI_REC && y < 1) {
|
|
1106
1140
|
obj.small = true;
|
|
@@ -1369,6 +1403,27 @@ PowiainaNum.TETRATED_MSI = new PowiainaNum({
|
|
|
1369
1403
|
layer: 0,
|
|
1370
1404
|
sign: 1
|
|
1371
1405
|
});
|
|
1406
|
+
PowiainaNum.PENTATED_MSI = new PowiainaNum({
|
|
1407
|
+
array: [{
|
|
1408
|
+
arrow: 0,
|
|
1409
|
+
expans: 1,
|
|
1410
|
+
megota: 1,
|
|
1411
|
+
repeat: MSI
|
|
1412
|
+
}, {
|
|
1413
|
+
arrow: 1,
|
|
1414
|
+
expans: 1,
|
|
1415
|
+
megota: 1,
|
|
1416
|
+
repeat: MSI
|
|
1417
|
+
}, {
|
|
1418
|
+
arrow: 2,
|
|
1419
|
+
expans: 1,
|
|
1420
|
+
megota: 1,
|
|
1421
|
+
repeat: MSI
|
|
1422
|
+
}],
|
|
1423
|
+
small: false,
|
|
1424
|
+
layer: 0,
|
|
1425
|
+
sign: 1
|
|
1426
|
+
});
|
|
1372
1427
|
PowiainaNum.TRITRI = new PowiainaNum({
|
|
1373
1428
|
small: false,
|
|
1374
1429
|
layer: 0,
|
package/dist/PowiainaNum.js
CHANGED
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
if (l > MSI_LOG10 || l < -MSI_LOG10) {
|
|
281
281
|
r.array = [newOperator(l, 0), newOperator(1, 1)];
|
|
282
282
|
} else {
|
|
283
|
-
r.array = [newOperator(Math.pow(10, l), 0)];
|
|
283
|
+
r.array = [newOperator(Math.pow(10, Math.abs(l)), 0)];
|
|
284
284
|
}
|
|
285
285
|
r.small = l < 0 ? true : false;
|
|
286
286
|
r.sign *= mult;
|
|
@@ -407,7 +407,6 @@
|
|
|
407
407
|
}, {
|
|
408
408
|
key: "log10",
|
|
409
409
|
value: function log10() {
|
|
410
|
-
var _a, _b;
|
|
411
410
|
if (this.isneg()) return PowiainaNum.NaN.clone();
|
|
412
411
|
if (this.isZero()) return PowiainaNum.NEGATIVE_INFINITY.clone();
|
|
413
412
|
if (this.small) {
|
|
@@ -415,7 +414,7 @@
|
|
|
415
414
|
_x.small = !_x.small;
|
|
416
415
|
return _x.log10().neg();
|
|
417
416
|
}
|
|
418
|
-
if (
|
|
417
|
+
if (this.array.length == 1) return new PowiainaNum(Math.log10(this.array[0].repeat));
|
|
419
418
|
var x = this.clone();
|
|
420
419
|
x.array[1].repeat = x.array[1].repeat - 1;
|
|
421
420
|
x.normalize();
|
|
@@ -635,6 +634,12 @@
|
|
|
635
634
|
r.sign = this.sign;
|
|
636
635
|
return r;
|
|
637
636
|
}
|
|
637
|
+
}, {
|
|
638
|
+
key: "trunc",
|
|
639
|
+
value: function trunc() {
|
|
640
|
+
var y = this.clone();
|
|
641
|
+
return y.gte(0) ? y.floor() : y.ceil();
|
|
642
|
+
}
|
|
638
643
|
/**
|
|
639
644
|
* @returns if this<other, return -1, if this=other, return 0, if this>other, return 1, if this!<=>, return 2
|
|
640
645
|
*/
|
|
@@ -1096,6 +1101,30 @@
|
|
|
1096
1101
|
var principal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
1097
1102
|
return new PowiainaNum(x).lambertw(principal);
|
|
1098
1103
|
}
|
|
1104
|
+
}, {
|
|
1105
|
+
key: "tetrate_10",
|
|
1106
|
+
value: function tetrate_10(other2) {
|
|
1107
|
+
var other = new PowiainaNum(other2);
|
|
1108
|
+
var height_int = other.trunc().toNumber();
|
|
1109
|
+
var height_frac = other.sub(height_int).toNumber();
|
|
1110
|
+
if (other.gt(PowiainaNum.PENTATED_MSI)) return other.clone();else if (other.gt(PowiainaNum.MSI)) {
|
|
1111
|
+
other.setOperator(other.getOperator(2) + 1, 2);
|
|
1112
|
+
} else if (other.lt(-2)) return PowiainaNum.NaN.clone();else if (other.lt(-1)) {
|
|
1113
|
+
return other.add(2).log10();
|
|
1114
|
+
} else if (other.lt(0)) {
|
|
1115
|
+
return other.add(1);
|
|
1116
|
+
} else if (other.lt(1)) {
|
|
1117
|
+
return other.pow10(); // 10^x
|
|
1118
|
+
} else if (height_int == 1) return PowiainaNum.pow(10, PowiainaNum.pow(10, height_frac));else if (height_int == 2) return PowiainaNum.pow(10, PowiainaNum.pow(10, PowiainaNum.pow(10, height_frac)));else {
|
|
1119
|
+
var remain = height_int - 2;
|
|
1120
|
+
var a = PowiainaNum.pow(10, PowiainaNum.pow(10, PowiainaNum.pow(10, height_frac)));
|
|
1121
|
+
a.setOperator(a.getOperator(1) + remain, 1);
|
|
1122
|
+
return a;
|
|
1123
|
+
}
|
|
1124
|
+
// 1--2, 10-<1e10, 10^10^0->1
|
|
1125
|
+
// 2--3, 1e10-<e1e10, 10^10^10^0->1
|
|
1126
|
+
return PowiainaNum.NaN.clone();
|
|
1127
|
+
}
|
|
1099
1128
|
}, {
|
|
1100
1129
|
key: "isNaN",
|
|
1101
1130
|
value: function isNaN(x) {
|
|
@@ -1106,7 +1135,12 @@
|
|
|
1106
1135
|
value: function fromNumber(x) {
|
|
1107
1136
|
var obj = new PowiainaNum(); // NaN
|
|
1108
1137
|
if (x < 0) obj.sign = -1; // negative
|
|
1109
|
-
else if (x == 0)
|
|
1138
|
+
else if (x == 0) {
|
|
1139
|
+
obj.sign = 0;
|
|
1140
|
+
obj.small = true;
|
|
1141
|
+
obj.array = [newOperator(Infinity, 0)];
|
|
1142
|
+
return obj;
|
|
1143
|
+
} else if (x > 0) obj.sign = 1;
|
|
1110
1144
|
var y = Math.abs(x);
|
|
1111
1145
|
if (y >= MSI_REC && y < 1) {
|
|
1112
1146
|
obj.small = true;
|
|
@@ -1375,6 +1409,27 @@
|
|
|
1375
1409
|
layer: 0,
|
|
1376
1410
|
sign: 1
|
|
1377
1411
|
});
|
|
1412
|
+
PowiainaNum.PENTATED_MSI = new PowiainaNum({
|
|
1413
|
+
array: [{
|
|
1414
|
+
arrow: 0,
|
|
1415
|
+
expans: 1,
|
|
1416
|
+
megota: 1,
|
|
1417
|
+
repeat: MSI
|
|
1418
|
+
}, {
|
|
1419
|
+
arrow: 1,
|
|
1420
|
+
expans: 1,
|
|
1421
|
+
megota: 1,
|
|
1422
|
+
repeat: MSI
|
|
1423
|
+
}, {
|
|
1424
|
+
arrow: 2,
|
|
1425
|
+
expans: 1,
|
|
1426
|
+
megota: 1,
|
|
1427
|
+
repeat: MSI
|
|
1428
|
+
}],
|
|
1429
|
+
small: false,
|
|
1430
|
+
layer: 0,
|
|
1431
|
+
sign: 1
|
|
1432
|
+
});
|
|
1378
1433
|
PowiainaNum.TRITRI = new PowiainaNum({
|
|
1379
1434
|
small: false,
|
|
1380
1435
|
layer: 0,
|
package/dist/PowiainaNum.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).PowiainaNum=e()}(this,(function(){"use strict";function r(r,a){for(var t=0;t<a.length;t++){var n=a[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,e(n.key),n)}}function e(r){var e=function(r,e){if("object"!=typeof r||!r)return r;var a=r[Symbol.toPrimitive];if(void 0!==a){var t=a.call(r,e||"default");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(r)}(r,"string");return"symbol"==typeof e?e:e+""}function a(r){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r})(r)}var t=9007199254740991,n=15.954589770191003,i=/^[-\+]*(Infinity|NaN|(10(\^+|\{([1-9]\d*|!)(,([1-9]\d*|!))?(,[1-9]\d*)?\})|\(10(\^+|\{([1-9]\d*|!)(,([1-9]\d*|!))?(,[1-9]\d*)?\})\)\^[1-9]\d* )*((\d+(\.\d*)?|\d*\.\d+)?([Ee][-\+]*))*(0|\d+(\.\d*)?|\d*\.\d+))$/;function o(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{repeat:r,arrow:e,expans:a,megota:t,valuereplaced:e==1/0?0:a==1/0?1:-1}}function s(){for(var r=arguments.length,e=new Array(r),a=0;a<r;a++)e[a]=arguments[a];for(var t=0;t<Math.min(e[0].length,e[1].length);t++){var n=e[0][t],i=e[1][t];if(n<i)return-1;if(n>i)return 1}return 0}function l(r){return Math.log10(Number(r.substring(0,17)))+(r.length-17)}var u=.5671432904097838;function h(r){var e,a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!Number.isFinite(r))return r;if(n){if(0===r)return r;if(1===r)return u;e=r<10?0:Math.log(r)-Math.log(Math.log(r))}else{if(0===r)return-1/0;e=r<=-.1?-2:Math.log(-r)-Math.log(-Math.log(-r))}for(var i=0;i<100;++i){if(a=(r*Math.exp(-e)+e*e)/(e+1),Math.abs(a-e)<t*Math.abs(a))return a;e=a}throw Error("Iteration failed to converge: ".concat(r.toString()))}function g(r){var e,a,t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(r.isInfinite())return r;if(o){if(r.eq(p.ZERO))return p.ZERO.clone();if(r.eq(p.ONE))return p.fromNumber(u);e=r.log()}else{if(r.eq(p.ZERO))return p.NEGATIVE_INFINITY.clone();e=r.neg().log()}for(var s=0;s<100;++s){if(a=e.neg().exp(),t=e.sub(r.mul(a)),(n=e.sub(t.div(e.add(1).sub(e.add(2).mul(t).div(e.mul(2).add(2)))))).sub(e).abs().lt(n.abs().mul(i)))return n;e=n}throw Error("Iteration failed to converge: ".concat(r.toString()))}var y,p=function(){function e(r){if(function(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.array=[{arrow:0,expans:1,megota:1,repeat:NaN}],this.small=!1,this.sign=0,this.layer=0,void 0===r);else if("number"==typeof r){var t=e.fromNumber(r);this.resetFromObject(t)}else if("object"==a(r)){var n=e.fromObject(r);this.resetFromObject(n)}else if("string"==typeof r){var i=e.fromString(r);this.resetFromObject(i)}}return function(e,a,t){return a&&r(e.prototype,a),t&&r(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}(e,[{key:"add",value:function(r){var a,t,i,s,l,u,h=this.clone(),g=new e(r);if(h.eq(e.POSITIVE_INFINITY)&&g.eq(e.NEGATIVE_INFINITY)||h.eq(e.NEGATIVE_INFINITY)&&g.eq(e.POSITIVE_INFINITY))return e.NaN.clone();if(!h.isFinite())return h.clone();if(!g.isFinite())return g.clone();if(h.isZero())return g.clone();if(g.isZero())return h.clone();if(h.sign==-g.sign&&function(){var r=h.abs(),e=g.abs();return r.eq(e)}())return e.ZERO.clone();if(h.abs().lt(e.E_MSI_REC)||h.abs().gt(e.E_MSI)||g.abs().lt(e.E_MSI_REC)||g.abs().gt(e.E_MSI))return h.maxabs(g);if(-1==h.sign)return h.neg().add(g.neg()).neg();h.cmpabs(g)>0?(l=h,u=g):(u=h,l=g);var y=1;if(!(l.small||u.small||(null===(a=l.array[1])||void 0===a?void 0:a.repeat)||(null===(t=u.array[1])||void 0===t?void 0:t.repeat)||l.sign!=u.sign))return new e((l.array[0].repeat+u.array[0].repeat)*l.sign);var p=(l.small?-1:1)*((null===(i=l.array[1])||void 0===i?void 0:i.repeat)?l.array[0].repeat:Math.log10(l.array[0].repeat)),f=(u.small?-1:1)*((null===(s=u.array[1])||void 0===s?void 0:s.repeat)?u.array[0].repeat:Math.log10(u.array[0].repeat));if(p-f>n)return l;var c,m,v=-Math.floor(p),N=0;if((m=l.sign*Math.pow(10,p+v)+u.sign*Math.pow(10,f+v))>0&&(N=Math.log10(m)-v),m<0&&(N=Math.log10(-m)-v,y*=-1),0==m)throw Error("Encounter a calculate error");return(c=new e).sign=1,c.array=N>n||N<-n?[o(N,0),o(1,1)]:[o(Math.pow(10,N),0)],c.small=N<0,c.sign*=y,c}},{key:"sub",value:function(r){return this.add(new e(r).neg())}},{key:"mul",value:function(r){var a,t=this.clone(),n=new e(r);return t.eq(e.POSITIVE_INFINITY)&&n.eq(e.NEGATIVE_INFINITY)||n.eq(e.POSITIVE_INFINITY)&&t.eq(e.NEGATIVE_INFINITY)?e.NEGATIVE_INFINITY.clone():t.isInfinite()&&n.eq(e.ZERO)&&n.isInfinite()&&t.eq(e.ZERO)?e.NaN.clone():t.eq(e.NEGATIVE_INFINITY)&&n.eq(e.NEGATIVE_INFINITY)?e.POSITIVE_INFINITY.clone():t.isFinite()?n.isFinite()?t.isZero()||n.isZero()?e.ZERO.clone():((a=t.abs().log10().add(n.abs().log10()).pow10()).sign=t.sign*n.sign,a):n.clone():t.clone()}},{key:"div",value:function(r){var a=new e(r).rec();return this.mul(a)}},{key:"pow10",value:function(){var r,a,t=this.clone();return this.isFinite()?t.isneg()?(t.sign*=-1,t.pow10().rec()):t.lte(308.25471555991675)?e.fromNumber(Math.pow(10,t.toNumber())):t.small?t.lt(e.MSI_REC)?e.ONE:new e(Math.pow(10,Math.pow(t.array[0].repeat,-1))):(t.setOperator((null!==(a=null===(r=t.array[1])||void 0===r?void 0:r.repeat)&&void 0!==a?a:0)+1,1),t.normalize(),t):this.clone()}},{key:"pow",value:function(r){var a=new e(r);if(!a.isFinite())return a.clone();if(!this.isFinite())return this.clone();if(this.eq(10))return a.pow10();if(this.isneg()){if(!a.isInt())return e.NaN.clone();var t=this.abs().pow(a);return t.sign=function(){var r=a.mod(2).round();return r.eq(0)||r.eq(2)?1:-1}(),t}var n=this.toNumber(),i=a.toNumber(),o=Math.pow(n,i);return isFinite(o)?e.fromNumber(o):this.log10().mul(a).pow10()}},{key:"pow_base",value:function(r){return new e(r).pow(this)}},{key:"root",value:function(r){var a=new e(r);return this.pow(a.rec())}},{key:"sqrt",value:function(){return this.pow(.5)}},{key:"cbrt",value:function(){return this.root(3)}},{key:"abs",value:function(){var r=this.clone();return r.sign<0&&(r.sign*=-1),r}},{key:"log10",value:function(){var r,a;if(this.isneg())return e.NaN.clone();if(this.isZero())return e.NEGATIVE_INFINITY.clone();if(this.small){var t=this.clone();return t.small=!t.small,t.log10().neg()}if(null===(a=null===(r=this.array[1])||void 0===r?void 0:r.repeat)||void 0===a||a)return new e(Math.log10(this.array[0].repeat));var n=this.clone();return n.array[1].repeat=n.array[1].repeat-1,n.normalize(),n}},{key:"log",value:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Math.E,a=new e(r);return this.log10().div(a.log10())}},{key:"exp",value:function(){return this.pow_base(Math.E)}},{key:"mod",value:function(r){var a=new e(r),t=this.div(a);return t.sub(t.floor()).mul(a)}},{key:"factorial",value:function(){return this.abs().lt(t)?this.add(1).gamma():this.abs().lt(e.E_MSI)?e.exp(this.mul(this.log10().sub(1))):e.exp(this)}},{key:"gamma",value:function(){if(this.small)return this.rec();if(this.lte(t)){if(this.lt(24))return e.fromNumber(function(r){if(!isFinite(r))return r;if(r<-50)return r===Math.trunc(r)?Number.NEGATIVE_INFINITY:0;for(var e=1;r<10;)e*=r,++r;var a=.9189385332046727;a+=((r-=1)+.5)*Math.log(r),a-=r;var t=r*r,n=r;return a+=1/(12*n),a-=1/(360*(n*=t)),a+=1/(1260*(n*=t)),a-=1/(1680*(n*=t)),a+=1/(1188*(n*=t)),a-=691/(360360*(n*=t)),a+=7/(1092*(n*=t)),a-=3617/(122400*(n*=t)),Math.exp(a)/e}(this.sign*this.getOperator(0)));var r=this.getOperator(0)-1,a=.9189385332046727;a+=(r+.5)*Math.log(r);var n=r*r,i=r,o=12*i,s=1/o,l=(a-=r)+s;if(l===a)return e.exp(a);if((l=(a=l)-(s=1/(o=360*(i*=n))))===a)return e.exp(a);a=l;var u=1/(o=1260*(i*=n));return a+=u,a-=u=1/(o=1680*(i*=n)),e.exp(a)}return this.gt(t)?e.exp(this.mul(this.log().sub(1))):e.exp(this)}},{key:"lambertw",value:function(){var r=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.lt(-.3678794411710499)?e.NaN.clone():r?this.abs().lt("1e-300")?new e(this):this.small?e.fromNumber(h(this.toNumber())):0===this.layer?e.fromNumber(h(this.sign*this.getOperator(0))):this.lt("eee15")?g(this):this.log():1===this.sign?e.NaN.clone():0===this.layer?e.fromNumber(h(this.sign*this.array[0].repeat,1e-10,!1)):1==this.layer?g(this,1e-10,!1):this.neg().rec().lambertw().neg()}},{key:"max",value:function(r){var a=new e(r);return this.lt(a)?a.clone():this.clone()}},{key:"min",value:function(r){var a=new e(r);return this.gte(a)?a.clone():this.clone()}},{key:"maxabs",value:function(r){var a=new e(r).abs();return this.abs().lt(a)?a.clone():this.clone()}},{key:"minabs",value:function(r){var a=new e(r).abs();return this.abs().gt(a)?a.clone():this.clone()}},{key:"cmpabs",value:function(r){var a=new e(r).abs();return this.abs().cmp(a)}},{key:"neg",value:function(){var r=this.clone();return r.sign*=-1,r.normalize(),r}},{key:"rec",value:function(){var r=this.clone();return r.small=!r.small,r}},{key:"floor",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?e.ZERO.clone():e.ONE.neg().clone();var r=this.abs();return r.array[0].repeat=Math[1==this.sign?"floor":"ceil"](r.getOperator(0)),r}},{key:"ceil",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?e.ONE.clone():e.ZERO.clone();var r=this.abs();return r.array[0].repeat=Math[1==this.sign?"ceil":"floor"](r.getOperator(0)),r.sign=this.sign,r}},{key:"round",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?this.rec().lte(2)?e.ONE.clone():e.ZERO.clone():this.abs().rec().lte(2)?e.ZERO.clone():e.ONE.neg().clone();var r=this.abs();return r.array[0].repeat=Math.round(r.array[0].repeat),r.sign=this.sign,r}},{key:"compare",value:function(r){var a=new e(r);if(this.isNaN()||a.isNaN())return 2;if(this.sign<a.sign)return-1;if(this.sign>a.sign)return 1;var t=-1==this.sign&&-1==a.sign;if(this.small&&!a.small)return-1*(t?-1:1);if(a.small&&!this.small)return 1*(t?-1:1);var n=1;this.small&&a.small&&(n*=-1),t&&(n*=-1);for(var i=0,o=0;this.array.length-1-o>=0&&a.array.length-1-o>=0;o++){var l=this.array[this.array.length-1-o],u=a.array[a.array.length-1-o],h=s([l.megota,l.expans,l.arrow,l.repeat],[u.megota,u.expans,u.arrow,u.repeat]);if(1==h){i=1;break}if(-1==h){i=-1;break}}return i*n+1-1}},{key:"cmp",value:function(r){return this.compare(r)}},{key:"eq",value:function(r){return 0===this.cmp(r)}},{key:"neq",value:function(r){return 0!==this.cmp(r)}},{key:"lt",value:function(r){return-1===this.cmp(r)}},{key:"lte",value:function(r){return this.cmp(r)<=0}},{key:"gt",value:function(r){return 1==this.cmp(r)}},{key:"gte",value:function(r){var e=this.cmp(r);return 0==e||1==e}},{key:"isNaN",value:function(r){function e(){return r.apply(this,arguments)}return e.toString=function(){return r.toString()},e}((function(){return isNaN(this.getOperator(0))}))},{key:"isZero",value:function(){return Boolean(this.small&&!isFinite(this.getOperator(0)))}},{key:"isFinite",value:function(r){function e(){return r.apply(this,arguments)}return e.toString=function(){return r.toString()},e}((function(){return Boolean(this.small||isFinite(this.getOperator(0)))&&!this.isNaN()}))},{key:"isInfinite",value:function(){return Boolean(!this.small&&!isFinite(this.getOperator(0)))||this.isNaN()}},{key:"isInt",value:function(){return!!this.isZero()||(!(this.small||!Number.isInteger(this.getOperator(0)))||!!this.abs().gte(t/2))}},{key:"ispos",value:function(){return this.sign>0}},{key:"isneg",value:function(){return this.sign<0}},{key:"normalize",value:function(){for(var r=!0,a=this,i=0;i<this.array.length;i++)if(this.array[i].repeat==1/0)return this.array=[{arrow:0,expans:1,megota:1,repeat:1/0}],this.layer=0,this;for(var l=1;l<a.array.length;++l){var u=a.array[l];if(null!==u.arrow&&void 0!==u.arrow||(u.arrow=0),null!==u.expans&&void 0!==u.expans||(u.expans=1),null!==u.megota&&void 0!==u.megota||(u.megota=1),isNaN(u.arrow)||isNaN(u.repeat)||isNaN(u.expans)||isNaN(u.megota))return a.array=[o(NaN,0,1,1)],a;if(!isFinite(u.repeat)||!isFinite(u.megota))return a.array=[o(1/0,0,1,1)],a;Number.isInteger(u.arrow)||(u.arrow=Math.floor(u.arrow)),Number.isInteger(u.repeat)||(u.repeat=Math.floor(u.repeat)),Number.isInteger(u.expans)||(u.expans=Math.floor(u.expans)),Number.isInteger(u.megota)||(u.megota=Math.floor(u.megota))}do{for(r=!1,this.array.sort((function(r,e){return s([r.megota,r.expans,r.arrow],[e.megota,e.expans,e.arrow])})),l=1;l<a.array.length;++l)0===a.array[l].arrow||0!==a.array[l].repeat&&null!==a.array[l].repeat&&void 0!==a.array[l].repeat?0==a.array[l].arrow&&a.array[l].expans>=2&&(a.array[l].arrow=1/0,a.array[l].valuereplaced=0,a.array[l].expans=a.array[l].expans-1):(a.array.splice(l,1),--l);for(var h=1;h<this.array.length;h++)0==this.array[h].repeat&&(this.array.splice(h,1),h--);for(a.array.length||(a.small=!a.small,a.array=[o(1/0)]),a.array.length>e.maxOps&&a.array.splice(1,a.array.length-e.maxOps),this.getOperator(1)>=1&&this.getOperator(0)<n&&(this.setOperator(this.getOperator(1)-1,1),this.setOperator(Math.pow(10,this.getOperator(0)),0),r=!0),this.getOperator(0)>t&&(this.setOperator(this.getOperator(1)+1,1),this.setOperator(Math.log10(this.getOperator(0)),0),r=!0),1==this.array.length&&this.array[0].repeat<1&&(this.array[0].repeat=1/this.array[0].repeat,this.small=!this.small,r=!0);a.array.length>=2&&1==a.array[0].repeat&&a.array[1].repeat;)a.array[1].repeat>1?a.array[1].repeat--:a.array.splice(1,1),a.array[0].repeat=10,r=!0;for(a.array.length>=2&&a.array[0].repeat<t&&a.array[1].arrow>=2&&1==a.array[1].repeat&&(a.array.splice(1,1,o(a.array[0].repeat,a.array[1].arrow-1,a.array[1].expans,a.array[1].megota)),a.array[0].repeat=10,r=!0),l=1;l<a.array.length-1;++l)a.array[l].arrow==a.array[l+1].arrow&&a.array[l].expans==a.array[l+1].expans&&a.array[l].megota==a.array[l+1].megota&&(a.array[l].repeat+=a.array[l+1].repeat,a.array.splice(l+1,1),--l,r=!0)}while(r);return this}},{key:"getOperatorIndex",value:function(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(1==this.array.length&&0==r)return 0;if(1==this.array.length&&1==r)return.5;if(2==this.array.length&&1==r)return 1;if(2==this.array.length&&0==r)return 0;for(var t=0;t<this.array.length;t++){var n=s([this.array[t].megota,this.array[t].expans,this.array[t].arrow],[a,e,r]);if(0==n)return t;if(1==n)return t-.5}return this.array.length-.5}},{key:"getOperator",value:function(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=this.getOperatorIndex(r,e,a);return this.array[t]?this.array[t].repeat:0}},{key:"setOperator",value:function(r,e){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,n=this.getOperatorIndex(e,a,t);return this.array[n]?(this.array[n].repeat=r,!1):(this.array.splice(Math.ceil(n),0,{arrow:e,expans:a,megota:t,valuereplaced:a===1/0?1:e==1/0?0:-1,repeat:r}),!0)}},{key:"clone",value:function(){var r=new e;return r.resetFromObject(this),r}},{key:"resetFromObject",value:function(r){this.array=[];for(var e=0;e<r.array.length;e++)this.array[e]={arrow:r.array[e].arrow,expans:r.array[e].expans,megota:r.array[e].megota,repeat:r.array[e].repeat,valuereplaced:r.array[e].valuereplaced};return this.small=r.small,this.sign=r.sign,this.layer=r.layer,this}},{key:"toNumber",value:function(){return-1==this.sign?-this.neg().toNumber():this.small?1/this.rec().toNumber():this.array.length>2?1/0:1==this.array.length?this.array[0].repeat:2==this.array.length&&1==this.array[1].arrow&&1==this.array[1].expans&&1==this.array[1].megota&&1==this.array[1].repeat?Math.pow(10,this.getOperator(0)):NaN}},{key:"toString",value:function(){if(this.isNaN())return"NaN";if(-1==this.sign)return"-".concat(this.neg().toString());if(this.small)return this.eq(e.ZERO)?"0":"/".concat(this.rec().toString());if(this.isInfinite())return"Infinity";for(var r="",a=this.array.length-1;a>=0;a--){var t=this.array[a],n="10{".concat(t.arrow===1/0?"!":t.arrow).concat(t.expans>1||t.megota>1?",".concat(t.expans===1/0?"!":t.expans):"").concat(t.megota>1?",".concat(t.megota):"","}");n=1==t.arrow&&1==t.expans&&1==t.megota&&t.repeat<5?"e".repeat(t.repeat):0==t.arrow&&1==t.expans&&1==t.megota?t.repeat.toString():t.repeat>1?"(".concat(n,")^").concat(t.repeat," "):"".concat(n," "),r+="".concat(n)}return r}},{key:"arr01",get:function(){for(var r=[0],e=0;e<this.array.length;e++)0==e?r[0]=this.array[e].repeat:(r[e]=[0,0,0,0],r[e][0]=this.array[e].arrow==1/0?"x":this.array[e].arrow,r[e][1]=this.array[e].repeat,r[e][2]=this.array[e].expans==1/0?"x":this.array[e].expans,r[e][3]=this.array[e].megota);return r}}],[{key:"add",value:function(r,a){return new e(r).add(a)}},{key:"sub",value:function(r,a){return new e(r).sub(a)}},{key:"mul",value:function(r,a){return new e(r).mul(a)}},{key:"div",value:function(r,a){return new e(r).div(a)}},{key:"pow",value:function(r,a){return new e(r).pow(a)}},{key:"root",value:function(r,a){return new e(r).root(a)}},{key:"sqrt",value:function(r){return new e(r).sqrt()}},{key:"cbrt",value:function(r){return new e(r).cbrt()}},{key:"log10",value:function(r){return new e(r).log10()}},{key:"log",value:function(r){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.E;return new e(r).log(a)}},{key:"exp",value:function(r){return new e(r).pow_base(Math.E)}},{key:"factorial",value:function(r){return new e(r).factorial()}},{key:"gamma",value:function(r){return new e(r).gamma()}},{key:"lambertw",value:function(r){var a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new e(r).lambertw(a)}},{key:"isNaN",value:function(r){return new e(r).isNaN()}},{key:"fromNumber",value:function(r){var a=new e;r<0?a.sign=-1:0==r?a.sign=0:r>0&&(a.sign=1);var n=Math.abs(r);return n>=11102230246251568e-32&&n<1?(a.small=!0,a.array=[o(1/n,0)]):n<11102230246251568e-32?(a.small=!0,a.array=[o(-Math.log10(n),0),o(1,1)]):n<=t?a.array=[o(n,0)]:(a.setOperator(Math.log10(n),0),a.array=[o(Math.log10(n),0),o(1,1)]),a}},{key:"fromString",value:function(r){var a,s,u,h,g,y,p=new e;if(!isNaN(Number(r))&&isFinite(Number(r)))return p.resetFromObject(e.fromNumber(Number(r))),p;if(!i.test(r))throw"[PowiainaNum 0.2 error]malformed input: "+r;var f=!1,c=!1;if("-"==r[0]||"+"==r[0]){var m=r.search(/[^-\+]/);f=(null!==(s=null===(a=r.substring(0,m).match(/-/g))||void 0===a?void 0:a.length)&&void 0!==s?s:0)%2==1,r=r.substring(m)}if("/"==r[0]){m=r.search(/[^\/]/);c=(null!==(h=null===(u=r.substring(0,m).match(/\//g))||void 0===u?void 0:u.length)&&void 0!==h?h:0)%2==1,r=r.substring(m)}if("NaN"==r)p.array=[o(NaN)];else if("Infinity"==r)p.array=[o(1/0)];else{var v,N,w,b;for(p.sign=1,p.array=[o(0)];r&&/^(\(?10[\^\{])/.test(r);){var d,I,E;if("("==r[0]&&(r=r.substring(1)),"^"==r[2])d=v=r.substring(2).search(/[^\^]/),N=v+2;else{v=r.indexOf("}");var M=r.substring(3,v).split(",");d=Number("!"==M[0]?1/0:M[0]),I=Number(null!==(g="!"==M[1]?1/0:M[1])&&void 0!==g?g:1),E=Number(null!==(y=M[2])&&void 0!==y?y:1),N=v+1}")"==(r=r.substring(N))[0]?(v=r.indexOf(" "),w=Number(r.substring(2,v)),r=r.substring(v+1)):w=1,1==d&&1==I&&1==E?p.array.length>=2&&1==p.array[1].arrow?p.array[1].repeat+=w:p.array.splice(1,0,o(w,1,I,E)):2==d&&1==I&&1==E?(v=p.array.length>=2&&1==p.array[1].arrow?p.array[1].repeat:0,(N=p.array[0].repeat)>=1e10&&++v,N>=10&&++v,p.array[0].repeat=v,p.array.length>=2&&1==p.array[1].arrow&&p.array.splice(1,1),b=p.getOperatorIndex(2),Number.isInteger(b)?p.array[b].repeat+=w:p.array.splice(Math.ceil(b),0,o(w,2,I,E))):isFinite(d)?(v=p.getOperator(d-1),(N=p.getOperator(d-2))>=10&&++v,b=p.getOperatorIndex(d),p.array.splice(1,Math.ceil(b)-1),p.array[0].repeat=v,Number.isInteger(b)?p.array[1].repeat+=w:p.array.splice(1,0,o(w,d,I,E))):p.array.splice(1,0,o(w,d,I,E))}v=r.split(/[Ee]/),N=[p.array[0].repeat,0],w=1;for(var O=v.length-1;O>=0;--O){N[0]<n&&0===N[1]?N[0]=Math.pow(10,w*N[0]):-1==w?(0===N[1]?N[0]=Math.pow(10,w*N[0]):1==N[1]&&N[0]<=Math.log10(Number.MAX_VALUE)?N[0]=Math.pow(10,w*Math.pow(10,N[0])):N[0]=0,N[1]=0):N[1]++;var k=v[O].indexOf("."),x=-1==k?v[O].length:k;0===N[1]?x>=17?(N[0]=Math.log10(N[0])+l(v[O].substring(0,x)),N[1]=1):v[O]&&(N[0]*=Number(v[O])):(b=x>=17?l(v[O].substring(0,x)):v[O]?Math.log10(Number(v[O])):0,1==N[1]?N[0]+=b:2==N[1]&&N[0]<n+Math.log10(b)&&(N[0]+=Math.log10(1+Math.pow(10,Math.log10(b)-N[0])))),N[0]<n&&N[1]?(N[0]=Math.pow(10,N[0]),N[1]--):N[0]>t&&(N[0]=Math.log10(N[0]),N[1]++)}p.array[0].repeat=N[0],N[1]&&(p.array.length>=2&&1==p.array[1].arrow?p.array[1].repeat+=N[1]:p.array.splice(1,0,o(N[1],1,1,1)))}return f&&(p.sign*=-1),c&&(p.small=!p.small),p.normalize(),p.normalize(),p}},{key:"fromObject",value:function(r){var a=new e;a.array=[];for(var t=0;t<r.array.length;t++)a.array[t]={arrow:r.array[t].arrow,expans:r.array[t].expans,megota:r.array[t].megota,repeat:r.array[t].repeat,valuereplaced:r.array[t].valuereplaced};return a.small=r.small,a.sign=r.sign,a.layer=r.layer,a}}])}();return p.ZERO=new p({array:[{arrow:0,expans:1,megota:1,repeat:1/0}],small:!0,layer:0,sign:0}),p.ONE=new p({array:[{arrow:0,expans:1,megota:1,repeat:1}],small:!1,layer:0,sign:1}),p.MSI=new p(t),p.MSI_REC=((y=new p(t)).small=!0,y),p.E_MSI=new p({array:[{arrow:0,expans:1,megota:1,repeat:t},{arrow:1,expans:1,megota:1,repeat:1}],small:!1,layer:0,sign:1}),p.E_MSI_REC=new p({array:[{arrow:0,expans:1,megota:1,repeat:t},{arrow:1,expans:1,megota:1,repeat:1}],small:!0,layer:0,sign:1}),p.TETRATED_MSI=new p({array:[{arrow:0,expans:1,megota:1,repeat:t},{arrow:1,expans:1,megota:1,repeat:t}],small:!1,layer:0,sign:1}),p.TRITRI=new p({small:!1,layer:0,sign:1,array:[o(3638334640023.7783,0,1,1),o(7625587484984,1,1,1)]}),p.GRAHAMS_NUMBER=new p("(10{!})^63 10^^^(10^)^7625597484984 3638334640023.7783"),p.POSITIVE_INFINITY=new p(1/0),p.NEGATIVE_INFINITY=new p(-1/0),p.NaN=new p({array:[{arrow:0,expans:1,megota:1,repeat:NaN}],small:!1,layer:0,sign:0}),p.maxOps=100,p}));
|
|
1
|
+
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).PowiainaNum=e()}(this,(function(){"use strict";function r(r,a){for(var t=0;t<a.length;t++){var n=a[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,e(n.key),n)}}function e(r){var e=function(r,e){if("object"!=typeof r||!r)return r;var a=r[Symbol.toPrimitive];if(void 0!==a){var t=a.call(r,e||"default");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(r)}(r,"string");return"symbol"==typeof e?e:e+""}function a(r){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r})(r)}var t=9007199254740991,n=15.954589770191003,i=/^[-\+]*(Infinity|NaN|(10(\^+|\{([1-9]\d*|!)(,([1-9]\d*|!))?(,[1-9]\d*)?\})|\(10(\^+|\{([1-9]\d*|!)(,([1-9]\d*|!))?(,[1-9]\d*)?\})\)\^[1-9]\d* )*((\d+(\.\d*)?|\d*\.\d+)?([Ee][-\+]*))*(0|\d+(\.\d*)?|\d*\.\d+))$/;function o(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{repeat:r,arrow:e,expans:a,megota:t,valuereplaced:e==1/0?0:a==1/0?1:-1}}function s(){for(var r=arguments.length,e=new Array(r),a=0;a<r;a++)e[a]=arguments[a];for(var t=0;t<Math.min(e[0].length,e[1].length);t++){var n=e[0][t],i=e[1][t];if(n<i)return-1;if(n>i)return 1}return 0}function l(r){return Math.log10(Number(r.substring(0,17)))+(r.length-17)}var u=.5671432904097838;function h(r){var e,a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!Number.isFinite(r))return r;if(n){if(0===r)return r;if(1===r)return u;e=r<10?0:Math.log(r)-Math.log(Math.log(r))}else{if(0===r)return-1/0;e=r<=-.1?-2:Math.log(-r)-Math.log(-Math.log(-r))}for(var i=0;i<100;++i){if(a=(r*Math.exp(-e)+e*e)/(e+1),Math.abs(a-e)<t*Math.abs(a))return a;e=a}throw Error("Iteration failed to converge: ".concat(r.toString()))}function g(r){var e,a,t,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-10,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(r.isInfinite())return r;if(o){if(r.eq(p.ZERO))return p.ZERO.clone();if(r.eq(p.ONE))return p.fromNumber(u);e=r.log()}else{if(r.eq(p.ZERO))return p.NEGATIVE_INFINITY.clone();e=r.neg().log()}for(var s=0;s<100;++s){if(a=e.neg().exp(),t=e.sub(r.mul(a)),(n=e.sub(t.div(e.add(1).sub(e.add(2).mul(t).div(e.mul(2).add(2)))))).sub(e).abs().lt(n.abs().mul(i)))return n;e=n}throw Error("Iteration failed to converge: ".concat(r.toString()))}var y,p=function(){function e(r){if(function(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.array=[{arrow:0,expans:1,megota:1,repeat:NaN}],this.small=!1,this.sign=0,this.layer=0,void 0===r);else if("number"==typeof r){var t=e.fromNumber(r);this.resetFromObject(t)}else if("object"==a(r)){var n=e.fromObject(r);this.resetFromObject(n)}else if("string"==typeof r){var i=e.fromString(r);this.resetFromObject(i)}}return function(e,a,t){return a&&r(e.prototype,a),t&&r(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}(e,[{key:"add",value:function(r){var a,t,i,s,l,u,h=this.clone(),g=new e(r);if(h.eq(e.POSITIVE_INFINITY)&&g.eq(e.NEGATIVE_INFINITY)||h.eq(e.NEGATIVE_INFINITY)&&g.eq(e.POSITIVE_INFINITY))return e.NaN.clone();if(!h.isFinite())return h.clone();if(!g.isFinite())return g.clone();if(h.isZero())return g.clone();if(g.isZero())return h.clone();if(h.sign==-g.sign&&function(){var r=h.abs(),e=g.abs();return r.eq(e)}())return e.ZERO.clone();if(h.abs().lt(e.E_MSI_REC)||h.abs().gt(e.E_MSI)||g.abs().lt(e.E_MSI_REC)||g.abs().gt(e.E_MSI))return h.maxabs(g);if(-1==h.sign)return h.neg().add(g.neg()).neg();h.cmpabs(g)>0?(l=h,u=g):(u=h,l=g);var y=1;if(!(l.small||u.small||(null===(a=l.array[1])||void 0===a?void 0:a.repeat)||(null===(t=u.array[1])||void 0===t?void 0:t.repeat)||l.sign!=u.sign))return new e((l.array[0].repeat+u.array[0].repeat)*l.sign);var p=(l.small?-1:1)*((null===(i=l.array[1])||void 0===i?void 0:i.repeat)?l.array[0].repeat:Math.log10(l.array[0].repeat)),f=(u.small?-1:1)*((null===(s=u.array[1])||void 0===s?void 0:s.repeat)?u.array[0].repeat:Math.log10(u.array[0].repeat));if(p-f>n)return l;var c,m,v=-Math.floor(p),w=0;if((m=l.sign*Math.pow(10,p+v)+u.sign*Math.pow(10,f+v))>0&&(w=Math.log10(m)-v),m<0&&(w=Math.log10(-m)-v,y*=-1),0==m)throw Error("Encounter a calculate error");return(c=new e).sign=1,c.array=w>n||w<-n?[o(w,0),o(1,1)]:[o(Math.pow(10,Math.abs(w)),0)],c.small=w<0,c.sign*=y,c}},{key:"sub",value:function(r){return this.add(new e(r).neg())}},{key:"mul",value:function(r){var a,t=this.clone(),n=new e(r);return t.eq(e.POSITIVE_INFINITY)&&n.eq(e.NEGATIVE_INFINITY)||n.eq(e.POSITIVE_INFINITY)&&t.eq(e.NEGATIVE_INFINITY)?e.NEGATIVE_INFINITY.clone():t.isInfinite()&&n.eq(e.ZERO)&&n.isInfinite()&&t.eq(e.ZERO)?e.NaN.clone():t.eq(e.NEGATIVE_INFINITY)&&n.eq(e.NEGATIVE_INFINITY)?e.POSITIVE_INFINITY.clone():t.isFinite()?n.isFinite()?t.isZero()||n.isZero()?e.ZERO.clone():((a=t.abs().log10().add(n.abs().log10()).pow10()).sign=t.sign*n.sign,a):n.clone():t.clone()}},{key:"div",value:function(r){var a=new e(r).rec();return this.mul(a)}},{key:"pow10",value:function(){var r,a,t=this.clone();return this.isFinite()?t.isneg()?(t.sign*=-1,t.pow10().rec()):t.lte(308.25471555991675)?e.fromNumber(Math.pow(10,t.toNumber())):t.small?t.lt(e.MSI_REC)?e.ONE:new e(Math.pow(10,Math.pow(t.array[0].repeat,-1))):(t.setOperator((null!==(a=null===(r=t.array[1])||void 0===r?void 0:r.repeat)&&void 0!==a?a:0)+1,1),t.normalize(),t):this.clone()}},{key:"pow",value:function(r){var a=new e(r);if(!a.isFinite())return a.clone();if(!this.isFinite())return this.clone();if(this.eq(10))return a.pow10();if(this.isneg()){if(!a.isInt())return e.NaN.clone();var t=this.abs().pow(a);return t.sign=function(){var r=a.mod(2).round();return r.eq(0)||r.eq(2)?1:-1}(),t}var n=this.toNumber(),i=a.toNumber(),o=Math.pow(n,i);return isFinite(o)?e.fromNumber(o):this.log10().mul(a).pow10()}},{key:"pow_base",value:function(r){return new e(r).pow(this)}},{key:"root",value:function(r){var a=new e(r);return this.pow(a.rec())}},{key:"sqrt",value:function(){return this.pow(.5)}},{key:"cbrt",value:function(){return this.root(3)}},{key:"abs",value:function(){var r=this.clone();return r.sign<0&&(r.sign*=-1),r}},{key:"log10",value:function(){if(this.isneg())return e.NaN.clone();if(this.isZero())return e.NEGATIVE_INFINITY.clone();if(this.small){var r=this.clone();return r.small=!r.small,r.log10().neg()}if(1==this.array.length)return new e(Math.log10(this.array[0].repeat));var a=this.clone();return a.array[1].repeat=a.array[1].repeat-1,a.normalize(),a}},{key:"log",value:function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Math.E,a=new e(r);return this.log10().div(a.log10())}},{key:"exp",value:function(){return this.pow_base(Math.E)}},{key:"mod",value:function(r){var a=new e(r),t=this.div(a);return t.sub(t.floor()).mul(a)}},{key:"factorial",value:function(){return this.abs().lt(t)?this.add(1).gamma():this.abs().lt(e.E_MSI)?e.exp(this.mul(this.log10().sub(1))):e.exp(this)}},{key:"gamma",value:function(){if(this.small)return this.rec();if(this.lte(t)){if(this.lt(24))return e.fromNumber(function(r){if(!isFinite(r))return r;if(r<-50)return r===Math.trunc(r)?Number.NEGATIVE_INFINITY:0;for(var e=1;r<10;)e*=r,++r;var a=.9189385332046727;a+=((r-=1)+.5)*Math.log(r),a-=r;var t=r*r,n=r;return a+=1/(12*n),a-=1/(360*(n*=t)),a+=1/(1260*(n*=t)),a-=1/(1680*(n*=t)),a+=1/(1188*(n*=t)),a-=691/(360360*(n*=t)),a+=7/(1092*(n*=t)),a-=3617/(122400*(n*=t)),Math.exp(a)/e}(this.sign*this.getOperator(0)));var r=this.getOperator(0)-1,a=.9189385332046727;a+=(r+.5)*Math.log(r);var n=r*r,i=r,o=12*i,s=1/o,l=(a-=r)+s;if(l===a)return e.exp(a);if((l=(a=l)-(s=1/(o=360*(i*=n))))===a)return e.exp(a);a=l;var u=1/(o=1260*(i*=n));return a+=u,a-=u=1/(o=1680*(i*=n)),e.exp(a)}return this.gt(t)?e.exp(this.mul(this.log().sub(1))):e.exp(this)}},{key:"lambertw",value:function(){var r=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.lt(-.3678794411710499)?e.NaN.clone():r?this.abs().lt("1e-300")?new e(this):this.small?e.fromNumber(h(this.toNumber())):0===this.layer?e.fromNumber(h(this.sign*this.getOperator(0))):this.lt("eee15")?g(this):this.log():1===this.sign?e.NaN.clone():0===this.layer?e.fromNumber(h(this.sign*this.array[0].repeat,1e-10,!1)):1==this.layer?g(this,1e-10,!1):this.neg().rec().lambertw().neg()}},{key:"max",value:function(r){var a=new e(r);return this.lt(a)?a.clone():this.clone()}},{key:"min",value:function(r){var a=new e(r);return this.gte(a)?a.clone():this.clone()}},{key:"maxabs",value:function(r){var a=new e(r).abs();return this.abs().lt(a)?a.clone():this.clone()}},{key:"minabs",value:function(r){var a=new e(r).abs();return this.abs().gt(a)?a.clone():this.clone()}},{key:"cmpabs",value:function(r){var a=new e(r).abs();return this.abs().cmp(a)}},{key:"neg",value:function(){var r=this.clone();return r.sign*=-1,r.normalize(),r}},{key:"rec",value:function(){var r=this.clone();return r.small=!r.small,r}},{key:"floor",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?e.ZERO.clone():e.ONE.neg().clone();var r=this.abs();return r.array[0].repeat=Math[1==this.sign?"floor":"ceil"](r.getOperator(0)),r}},{key:"ceil",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?e.ONE.clone():e.ZERO.clone();var r=this.abs();return r.array[0].repeat=Math[1==this.sign?"ceil":"floor"](r.getOperator(0)),r.sign=this.sign,r}},{key:"round",value:function(){if(this.isInt())return this.clone();if(this.small)return 1==this.sign?this.rec().lte(2)?e.ONE.clone():e.ZERO.clone():this.abs().rec().lte(2)?e.ZERO.clone():e.ONE.neg().clone();var r=this.abs();return r.array[0].repeat=Math.round(r.array[0].repeat),r.sign=this.sign,r}},{key:"trunc",value:function(){var r=this.clone();return r.gte(0)?r.floor():r.ceil()}},{key:"compare",value:function(r){var a=new e(r);if(this.isNaN()||a.isNaN())return 2;if(this.sign<a.sign)return-1;if(this.sign>a.sign)return 1;var t=-1==this.sign&&-1==a.sign;if(this.small&&!a.small)return-1*(t?-1:1);if(a.small&&!this.small)return 1*(t?-1:1);var n=1;this.small&&a.small&&(n*=-1),t&&(n*=-1);for(var i=0,o=0;this.array.length-1-o>=0&&a.array.length-1-o>=0;o++){var l=this.array[this.array.length-1-o],u=a.array[a.array.length-1-o],h=s([l.megota,l.expans,l.arrow,l.repeat],[u.megota,u.expans,u.arrow,u.repeat]);if(1==h){i=1;break}if(-1==h){i=-1;break}}return i*n+1-1}},{key:"cmp",value:function(r){return this.compare(r)}},{key:"eq",value:function(r){return 0===this.cmp(r)}},{key:"neq",value:function(r){return 0!==this.cmp(r)}},{key:"lt",value:function(r){return-1===this.cmp(r)}},{key:"lte",value:function(r){return this.cmp(r)<=0}},{key:"gt",value:function(r){return 1==this.cmp(r)}},{key:"gte",value:function(r){var e=this.cmp(r);return 0==e||1==e}},{key:"isNaN",value:function(r){function e(){return r.apply(this,arguments)}return e.toString=function(){return r.toString()},e}((function(){return isNaN(this.getOperator(0))}))},{key:"isZero",value:function(){return Boolean(this.small&&!isFinite(this.getOperator(0)))}},{key:"isFinite",value:function(r){function e(){return r.apply(this,arguments)}return e.toString=function(){return r.toString()},e}((function(){return Boolean(this.small||isFinite(this.getOperator(0)))&&!this.isNaN()}))},{key:"isInfinite",value:function(){return Boolean(!this.small&&!isFinite(this.getOperator(0)))||this.isNaN()}},{key:"isInt",value:function(){return!!this.isZero()||(!(this.small||!Number.isInteger(this.getOperator(0)))||!!this.abs().gte(t/2))}},{key:"ispos",value:function(){return this.sign>0}},{key:"isneg",value:function(){return this.sign<0}},{key:"normalize",value:function(){for(var r=!0,a=this,i=0;i<this.array.length;i++)if(this.array[i].repeat==1/0)return this.array=[{arrow:0,expans:1,megota:1,repeat:1/0}],this.layer=0,this;for(var l=1;l<a.array.length;++l){var u=a.array[l];if(null!==u.arrow&&void 0!==u.arrow||(u.arrow=0),null!==u.expans&&void 0!==u.expans||(u.expans=1),null!==u.megota&&void 0!==u.megota||(u.megota=1),isNaN(u.arrow)||isNaN(u.repeat)||isNaN(u.expans)||isNaN(u.megota))return a.array=[o(NaN,0,1,1)],a;if(!isFinite(u.repeat)||!isFinite(u.megota))return a.array=[o(1/0,0,1,1)],a;Number.isInteger(u.arrow)||(u.arrow=Math.floor(u.arrow)),Number.isInteger(u.repeat)||(u.repeat=Math.floor(u.repeat)),Number.isInteger(u.expans)||(u.expans=Math.floor(u.expans)),Number.isInteger(u.megota)||(u.megota=Math.floor(u.megota))}do{for(r=!1,this.array.sort((function(r,e){return s([r.megota,r.expans,r.arrow],[e.megota,e.expans,e.arrow])})),l=1;l<a.array.length;++l)0===a.array[l].arrow||0!==a.array[l].repeat&&null!==a.array[l].repeat&&void 0!==a.array[l].repeat?0==a.array[l].arrow&&a.array[l].expans>=2&&(a.array[l].arrow=1/0,a.array[l].valuereplaced=0,a.array[l].expans=a.array[l].expans-1):(a.array.splice(l,1),--l);for(var h=1;h<this.array.length;h++)0==this.array[h].repeat&&(this.array.splice(h,1),h--);for(a.array.length||(a.small=!a.small,a.array=[o(1/0)]),a.array.length>e.maxOps&&a.array.splice(1,a.array.length-e.maxOps),this.getOperator(1)>=1&&this.getOperator(0)<n&&(this.setOperator(this.getOperator(1)-1,1),this.setOperator(Math.pow(10,this.getOperator(0)),0),r=!0),this.getOperator(0)>t&&(this.setOperator(this.getOperator(1)+1,1),this.setOperator(Math.log10(this.getOperator(0)),0),r=!0),1==this.array.length&&this.array[0].repeat<1&&(this.array[0].repeat=1/this.array[0].repeat,this.small=!this.small,r=!0);a.array.length>=2&&1==a.array[0].repeat&&a.array[1].repeat;)a.array[1].repeat>1?a.array[1].repeat--:a.array.splice(1,1),a.array[0].repeat=10,r=!0;for(a.array.length>=2&&a.array[0].repeat<t&&a.array[1].arrow>=2&&1==a.array[1].repeat&&(a.array.splice(1,1,o(a.array[0].repeat,a.array[1].arrow-1,a.array[1].expans,a.array[1].megota)),a.array[0].repeat=10,r=!0),l=1;l<a.array.length-1;++l)a.array[l].arrow==a.array[l+1].arrow&&a.array[l].expans==a.array[l+1].expans&&a.array[l].megota==a.array[l+1].megota&&(a.array[l].repeat+=a.array[l+1].repeat,a.array.splice(l+1,1),--l,r=!0)}while(r);return this}},{key:"getOperatorIndex",value:function(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(1==this.array.length&&0==r)return 0;if(1==this.array.length&&1==r)return.5;if(2==this.array.length&&1==r)return 1;if(2==this.array.length&&0==r)return 0;for(var t=0;t<this.array.length;t++){var n=s([this.array[t].megota,this.array[t].expans,this.array[t].arrow],[a,e,r]);if(0==n)return t;if(1==n)return t-.5}return this.array.length-.5}},{key:"getOperator",value:function(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=this.getOperatorIndex(r,e,a);return this.array[t]?this.array[t].repeat:0}},{key:"setOperator",value:function(r,e){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,n=this.getOperatorIndex(e,a,t);return this.array[n]?(this.array[n].repeat=r,!1):(this.array.splice(Math.ceil(n),0,{arrow:e,expans:a,megota:t,valuereplaced:a===1/0?1:e==1/0?0:-1,repeat:r}),!0)}},{key:"clone",value:function(){var r=new e;return r.resetFromObject(this),r}},{key:"resetFromObject",value:function(r){this.array=[];for(var e=0;e<r.array.length;e++)this.array[e]={arrow:r.array[e].arrow,expans:r.array[e].expans,megota:r.array[e].megota,repeat:r.array[e].repeat,valuereplaced:r.array[e].valuereplaced};return this.small=r.small,this.sign=r.sign,this.layer=r.layer,this}},{key:"toNumber",value:function(){return-1==this.sign?-this.neg().toNumber():this.small?1/this.rec().toNumber():this.array.length>2?1/0:1==this.array.length?this.array[0].repeat:2==this.array.length&&1==this.array[1].arrow&&1==this.array[1].expans&&1==this.array[1].megota&&1==this.array[1].repeat?Math.pow(10,this.getOperator(0)):NaN}},{key:"toString",value:function(){if(this.isNaN())return"NaN";if(-1==this.sign)return"-".concat(this.neg().toString());if(this.small)return this.eq(e.ZERO)?"0":"/".concat(this.rec().toString());if(this.isInfinite())return"Infinity";for(var r="",a=this.array.length-1;a>=0;a--){var t=this.array[a],n="10{".concat(t.arrow===1/0?"!":t.arrow).concat(t.expans>1||t.megota>1?",".concat(t.expans===1/0?"!":t.expans):"").concat(t.megota>1?",".concat(t.megota):"","}");n=1==t.arrow&&1==t.expans&&1==t.megota&&t.repeat<5?"e".repeat(t.repeat):0==t.arrow&&1==t.expans&&1==t.megota?t.repeat.toString():t.repeat>1?"(".concat(n,")^").concat(t.repeat," "):"".concat(n," "),r+="".concat(n)}return r}},{key:"arr01",get:function(){for(var r=[0],e=0;e<this.array.length;e++)0==e?r[0]=this.array[e].repeat:(r[e]=[0,0,0,0],r[e][0]=this.array[e].arrow==1/0?"x":this.array[e].arrow,r[e][1]=this.array[e].repeat,r[e][2]=this.array[e].expans==1/0?"x":this.array[e].expans,r[e][3]=this.array[e].megota);return r}}],[{key:"add",value:function(r,a){return new e(r).add(a)}},{key:"sub",value:function(r,a){return new e(r).sub(a)}},{key:"mul",value:function(r,a){return new e(r).mul(a)}},{key:"div",value:function(r,a){return new e(r).div(a)}},{key:"pow",value:function(r,a){return new e(r).pow(a)}},{key:"root",value:function(r,a){return new e(r).root(a)}},{key:"sqrt",value:function(r){return new e(r).sqrt()}},{key:"cbrt",value:function(r){return new e(r).cbrt()}},{key:"log10",value:function(r){return new e(r).log10()}},{key:"log",value:function(r){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.E;return new e(r).log(a)}},{key:"exp",value:function(r){return new e(r).pow_base(Math.E)}},{key:"factorial",value:function(r){return new e(r).factorial()}},{key:"gamma",value:function(r){return new e(r).gamma()}},{key:"lambertw",value:function(r){var a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new e(r).lambertw(a)}},{key:"tetrate_10",value:function(r){var a=new e(r),t=a.trunc().toNumber(),n=a.sub(t).toNumber();if(a.gt(e.PENTATED_MSI))return a.clone();if(!a.gt(e.MSI)){if(a.lt(-2))return e.NaN.clone();if(a.lt(-1))return a.add(2).log10();if(a.lt(0))return a.add(1);if(a.lt(1))return a.pow10();if(1==t)return e.pow(10,e.pow(10,n));if(2==t)return e.pow(10,e.pow(10,e.pow(10,n)));var i=t-2,o=e.pow(10,e.pow(10,e.pow(10,n)));return o.setOperator(o.getOperator(1)+i,1),o}return a.setOperator(a.getOperator(2)+1,2),e.NaN.clone()}},{key:"isNaN",value:function(r){return new e(r).isNaN()}},{key:"fromNumber",value:function(r){var a=new e;if(r<0)a.sign=-1;else{if(0==r)return a.sign=0,a.small=!0,a.array=[o(1/0,0)],a;r>0&&(a.sign=1)}var n=Math.abs(r);return n>=11102230246251568e-32&&n<1?(a.small=!0,a.array=[o(1/n,0)]):n<11102230246251568e-32?(a.small=!0,a.array=[o(-Math.log10(n),0),o(1,1)]):n<=t?a.array=[o(n,0)]:(a.setOperator(Math.log10(n),0),a.array=[o(Math.log10(n),0),o(1,1)]),a}},{key:"fromString",value:function(r){var a,s,u,h,g,y,p=new e;if(!isNaN(Number(r))&&isFinite(Number(r)))return p.resetFromObject(e.fromNumber(Number(r))),p;if(!i.test(r))throw"[PowiainaNum 0.2 error]malformed input: "+r;var f=!1,c=!1;if("-"==r[0]||"+"==r[0]){var m=r.search(/[^-\+]/);f=(null!==(s=null===(a=r.substring(0,m).match(/-/g))||void 0===a?void 0:a.length)&&void 0!==s?s:0)%2==1,r=r.substring(m)}if("/"==r[0]){m=r.search(/[^\/]/);c=(null!==(h=null===(u=r.substring(0,m).match(/\//g))||void 0===u?void 0:u.length)&&void 0!==h?h:0)%2==1,r=r.substring(m)}if("NaN"==r)p.array=[o(NaN)];else if("Infinity"==r)p.array=[o(1/0)];else{var v,w,N,b;for(p.sign=1,p.array=[o(0)];r&&/^(\(?10[\^\{])/.test(r);){var d,I,E;if("("==r[0]&&(r=r.substring(1)),"^"==r[2])d=v=r.substring(2).search(/[^\^]/),w=v+2;else{v=r.indexOf("}");var M=r.substring(3,v).split(",");d=Number("!"==M[0]?1/0:M[0]),I=Number(null!==(g="!"==M[1]?1/0:M[1])&&void 0!==g?g:1),E=Number(null!==(y=M[2])&&void 0!==y?y:1),w=v+1}")"==(r=r.substring(w))[0]?(v=r.indexOf(" "),N=Number(r.substring(2,v)),r=r.substring(v+1)):N=1,1==d&&1==I&&1==E?p.array.length>=2&&1==p.array[1].arrow?p.array[1].repeat+=N:p.array.splice(1,0,o(N,1,I,E)):2==d&&1==I&&1==E?(v=p.array.length>=2&&1==p.array[1].arrow?p.array[1].repeat:0,(w=p.array[0].repeat)>=1e10&&++v,w>=10&&++v,p.array[0].repeat=v,p.array.length>=2&&1==p.array[1].arrow&&p.array.splice(1,1),b=p.getOperatorIndex(2),Number.isInteger(b)?p.array[b].repeat+=N:p.array.splice(Math.ceil(b),0,o(N,2,I,E))):isFinite(d)?(v=p.getOperator(d-1),(w=p.getOperator(d-2))>=10&&++v,b=p.getOperatorIndex(d),p.array.splice(1,Math.ceil(b)-1),p.array[0].repeat=v,Number.isInteger(b)?p.array[1].repeat+=N:p.array.splice(1,0,o(N,d,I,E))):p.array.splice(1,0,o(N,d,I,E))}v=r.split(/[Ee]/),w=[p.array[0].repeat,0],N=1;for(var O=v.length-1;O>=0;--O){w[0]<n&&0===w[1]?w[0]=Math.pow(10,N*w[0]):-1==N?(0===w[1]?w[0]=Math.pow(10,N*w[0]):1==w[1]&&w[0]<=Math.log10(Number.MAX_VALUE)?w[0]=Math.pow(10,N*Math.pow(10,w[0])):w[0]=0,w[1]=0):w[1]++;var x=v[O].indexOf("."),k=-1==x?v[O].length:x;0===w[1]?k>=17?(w[0]=Math.log10(w[0])+l(v[O].substring(0,k)),w[1]=1):v[O]&&(w[0]*=Number(v[O])):(b=k>=17?l(v[O].substring(0,k)):v[O]?Math.log10(Number(v[O])):0,1==w[1]?w[0]+=b:2==w[1]&&w[0]<n+Math.log10(b)&&(w[0]+=Math.log10(1+Math.pow(10,Math.log10(b)-w[0])))),w[0]<n&&w[1]?(w[0]=Math.pow(10,w[0]),w[1]--):w[0]>t&&(w[0]=Math.log10(w[0]),w[1]++)}p.array[0].repeat=w[0],w[1]&&(p.array.length>=2&&1==p.array[1].arrow?p.array[1].repeat+=w[1]:p.array.splice(1,0,o(w[1],1,1,1)))}return f&&(p.sign*=-1),c&&(p.small=!p.small),p.normalize(),p.normalize(),p}},{key:"fromObject",value:function(r){var a=new e;a.array=[];for(var t=0;t<r.array.length;t++)a.array[t]={arrow:r.array[t].arrow,expans:r.array[t].expans,megota:r.array[t].megota,repeat:r.array[t].repeat,valuereplaced:r.array[t].valuereplaced};return a.small=r.small,a.sign=r.sign,a.layer=r.layer,a}}])}();return p.ZERO=new p({array:[{arrow:0,expans:1,megota:1,repeat:1/0}],small:!0,layer:0,sign:0}),p.ONE=new p({array:[{arrow:0,expans:1,megota:1,repeat:1}],small:!1,layer:0,sign:1}),p.MSI=new p(t),p.MSI_REC=((y=new p(t)).small=!0,y),p.E_MSI=new p({array:[{arrow:0,expans:1,megota:1,repeat:t},{arrow:1,expans:1,megota:1,repeat:1}],small:!1,layer:0,sign:1}),p.E_MSI_REC=new p({array:[{arrow:0,expans:1,megota:1,repeat:t},{arrow:1,expans:1,megota:1,repeat:1}],small:!0,layer:0,sign:1}),p.TETRATED_MSI=new p({array:[{arrow:0,expans:1,megota:1,repeat:t},{arrow:1,expans:1,megota:1,repeat:t}],small:!1,layer:0,sign:1}),p.PENTATED_MSI=new p({array:[{arrow:0,expans:1,megota:1,repeat:t},{arrow:1,expans:1,megota:1,repeat:t},{arrow:2,expans:1,megota:1,repeat:t}],small:!1,layer:0,sign:1}),p.TRITRI=new p({small:!1,layer:0,sign:1,array:[o(3638334640023.7783,0,1,1),o(7625587484984,1,1,1)]}),p.GRAHAMS_NUMBER=new p("(10{!})^63 10^^^(10^)^7625597484984 3638334640023.7783"),p.POSITIVE_INFINITY=new p(1/0),p.NEGATIVE_INFINITY=new p(-1/0),p.NaN=new p({array:[{arrow:0,expans:1,megota:1,repeat:NaN}],small:!1,layer:0,sign:0}),p.maxOps=100,p}));
|
package/dist/index.d.ts
CHANGED
|
@@ -71,6 +71,7 @@ export default class PowiainaNum implements IPowiainaNum {
|
|
|
71
71
|
*/
|
|
72
72
|
lambertw(princ?: boolean): PowiainaNum;
|
|
73
73
|
static lambertw(x: PowiainaNumSource, principal?: boolean): PowiainaNum;
|
|
74
|
+
static tetrate_10(other2: PowiainaNumSource): PowiainaNum;
|
|
74
75
|
max(x: PowiainaNumSource): PowiainaNum;
|
|
75
76
|
min(x: PowiainaNumSource): PowiainaNum;
|
|
76
77
|
maxabs(x: PowiainaNumSource): PowiainaNum;
|
|
@@ -81,6 +82,7 @@ export default class PowiainaNum implements IPowiainaNum {
|
|
|
81
82
|
floor(): PowiainaNum;
|
|
82
83
|
ceil(): PowiainaNum;
|
|
83
84
|
round(): PowiainaNum;
|
|
85
|
+
trunc(): PowiainaNum;
|
|
84
86
|
/**
|
|
85
87
|
* @returns if this<other, return -1, if this=other, return 0, if this>other, return 1, if this!<=>, return 2
|
|
86
88
|
*/
|
|
@@ -140,6 +142,7 @@ export default class PowiainaNum implements IPowiainaNum {
|
|
|
140
142
|
static readonly E_MSI: PowiainaNum;
|
|
141
143
|
static readonly E_MSI_REC: PowiainaNum;
|
|
142
144
|
static readonly TETRATED_MSI: PowiainaNum;
|
|
145
|
+
static readonly PENTATED_MSI: PowiainaNum;
|
|
143
146
|
static readonly TRITRI: PowiainaNum;
|
|
144
147
|
static readonly GRAHAMS_NUMBER: PowiainaNum;
|
|
145
148
|
static readonly POSITIVE_INFINITY: PowiainaNum;
|
package/package.json
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "powiaina_num.js",
|
|
3
|
-
"version": "0.2.0-alpha.2.
|
|
4
|
-
"description": "A JavaScript library that handles arithmetic for numbers as large as {10,9e15,1,1,1,2}.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "dist/PowiainaNum.js",
|
|
7
|
-
"module": "dist/PowiainaNum.esm.js",
|
|
8
|
-
"exports": {
|
|
9
|
-
"import": "./dist/PowiainaNum.esm.js",
|
|
10
|
-
"require": "./dist/PowiainaNum.js",
|
|
11
|
-
"types": "./dist/index.d.ts"
|
|
12
|
-
},
|
|
13
|
-
"unpkg": "dist/PowiainaNum.min.js",
|
|
14
|
-
"types": "dist/index.d.ts",
|
|
15
|
-
"scripts": {
|
|
16
|
-
"build": "bili",
|
|
17
|
-
"prepublishOnly": "npm run build",
|
|
18
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
19
|
-
"fix": "prettier --write ."
|
|
20
|
-
},
|
|
21
|
-
"repository": {
|
|
22
|
-
"type": "git",
|
|
23
|
-
"url": "git+https://github.com/VeryrrDefine/PowiainaNum.js.git"
|
|
24
|
-
},
|
|
25
|
-
"keywords": [
|
|
26
|
-
"bignum",
|
|
27
|
-
"bignumber",
|
|
28
|
-
"bigdecimal",
|
|
29
|
-
"number",
|
|
30
|
-
"decimal"
|
|
31
|
-
],
|
|
32
|
-
"files": [
|
|
33
|
-
"dist"
|
|
34
|
-
],
|
|
35
|
-
"author": "VeryrrDefine",
|
|
36
|
-
"license": "MIT",
|
|
37
|
-
"bugs": {
|
|
38
|
-
"url": "https://github.com/VeryrrDefine/PowiainaNum.js/issues"
|
|
39
|
-
},
|
|
40
|
-
"homepage": "https://github.com/VeryrrDefine/PowiainaNum.js#readme",
|
|
41
|
-
"devDependencies": {
|
|
42
|
-
"prettier": "^3.6.2",
|
|
43
|
-
"rollup-plugin-typescript2": "^0.36.0",
|
|
44
|
-
"typescript": "^5.8.3",
|
|
45
|
-
"bili": "^5.0.5"
|
|
46
|
-
}
|
|
47
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "powiaina_num.js",
|
|
3
|
+
"version": "0.2.0-alpha.2.7",
|
|
4
|
+
"description": "A JavaScript library that handles arithmetic for numbers as large as {10,9e15,1,1,1,2}.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/PowiainaNum.js",
|
|
7
|
+
"module": "dist/PowiainaNum.esm.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
"import": "./dist/PowiainaNum.esm.js",
|
|
10
|
+
"require": "./dist/PowiainaNum.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"unpkg": "dist/PowiainaNum.min.js",
|
|
14
|
+
"types": "dist/index.d.ts",
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "bili",
|
|
17
|
+
"prepublishOnly": "npm run build",
|
|
18
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
19
|
+
"fix": "prettier --write ."
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/VeryrrDefine/PowiainaNum.js.git"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"bignum",
|
|
27
|
+
"bignumber",
|
|
28
|
+
"bigdecimal",
|
|
29
|
+
"number",
|
|
30
|
+
"decimal"
|
|
31
|
+
],
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"author": "VeryrrDefine",
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/VeryrrDefine/PowiainaNum.js/issues"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/VeryrrDefine/PowiainaNum.js#readme",
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"prettier": "^3.6.2",
|
|
43
|
+
"rollup-plugin-typescript2": "^0.36.0",
|
|
44
|
+
"typescript": "^5.8.3",
|
|
45
|
+
"bili": "^5.0.5"
|
|
46
|
+
}
|
|
47
|
+
}
|