metanum 2.0.1 → 2.0.3
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 +149 -228
- package/format-metanum.js +269 -79
- package/metanum.js +632 -91
- package/package.json +1 -1
- package/test-interface.html +1 -0
- package/test_mixed.js +739 -42
package/README.md
CHANGED
|
@@ -172,8 +172,7 @@ new MetaNum(100).linear_sroot(3); // ³ss̅r̅t̅(100)
|
|
|
172
172
|
new MetaNum(10).layeradd(3); // add 3 layers of exponentiation
|
|
173
173
|
new MetaNum(10).layeradd10(3); // 10^^3 (explicit base 10)
|
|
174
174
|
|
|
175
|
-
// General hyperoperation inverses: if a{b}c = d then
|
|
176
|
-
// d.hyper_log(a)(b) = c and d.hyper_root(c)(b) = a
|
|
175
|
+
// General hyperoperation inverses: if a{b}c = d then d.hyper_log(a)(b) = c and d.hyper_root(c)(b) = a
|
|
177
176
|
MetaNum(14).hyper_log(2)(0); // 2*7 = 14 → 7
|
|
178
177
|
MetaNum(100000).hyper_log(10)(1); // 10^5 → 5
|
|
179
178
|
MetaNum(65536).hyper_log(2)(2); // 2↑↑4 → 4 (slog)
|
|
@@ -281,36 +280,16 @@ x.expoiter(3); // expo(3) = hwa1
|
|
|
281
280
|
// Level ω^(ω*2): ω^(ω*2) = ω^(ω+base)
|
|
282
281
|
x.trioterate(3); // tria(3) = hwm2
|
|
283
282
|
|
|
284
|
-
// Level ω^(ω^2): diagonalize ω^(ω*y)
|
|
283
|
+
// Level ω^(ω^2): diagonalize ω^(ω*y)
|
|
285
284
|
x.trixxate(3); // trix(3) = hwp2
|
|
286
285
|
|
|
287
|
-
// Level ω^(ω^ω): diagonalize ω^(ω^y) (layer
|
|
286
|
+
// Level ω^(ω^ω): diagonalize ω^(ω^y) (layer 2)
|
|
288
287
|
x.aperixxate(3); // apix(3) = hwpw
|
|
289
288
|
|
|
290
|
-
// Level ε₀ = ω↑↑ω: diagonalize ω↑↑y (layer
|
|
289
|
+
// Level ε₀ = ω↑↑ω: diagonalize ω↑↑y (layer 3+)
|
|
291
290
|
x.epsilonate(3); // epsl(3) = hepsl
|
|
292
291
|
```
|
|
293
292
|
|
|
294
|
-
### The ω^ω … ε₀ operations follow rule 3 exactly
|
|
295
|
-
|
|
296
|
-
Every operation above is evaluated with the unified limit rule
|
|
297
|
-
`n{λ}b = n{λ[b]}n` — the final operand is the **base** n, never b. Whenever the
|
|
298
|
-
reduced level λ[y] still fits a Cantor-normal-form coefficient row the whole
|
|
299
|
-
fundamental-sequence cascade is evaluated:
|
|
300
|
-
|
|
301
|
-
```javascript
|
|
302
|
-
MetaNum(3).iterate(5); // 3{ω^ω}5 = 3{ω^5}3 = 3{ω^4*3}3 = …
|
|
303
|
-
// … = 3{ω^4*2+ω^3*2+ω^2*2+ω*2+2}3 → top row [1,2,2,2,2,2]
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
Levels ≥ ω^ω have no finite coefficient row, so the result is stored as the
|
|
307
|
-
compact **layer marker** of λ[y] (see the representation rule above: layer L ⇒
|
|
308
|
-
`10{ω^ω^…((L-1) ω^'s)…^(bracket)}10`):
|
|
309
|
-
|
|
310
|
-
so the encoded ordinals grow with the operation
|
|
311
|
-
(`iter < itmu < cube < expo < tria < trix < apix < epsl`) and with y, and
|
|
312
|
-
`epsilonate(MSI)` is exactly the library's ε-tower cap.
|
|
313
|
-
|
|
314
293
|
## Inverse Operations
|
|
315
294
|
|
|
316
295
|
Each expansion operation has a corresponding inverse for decrementing ordinal structure:
|
|
@@ -352,11 +331,22 @@ x.i_apix(z) // iwpw = inverse of aperixxate
|
|
|
352
331
|
x.i_epsl(z) // iepsl = inverse of epsilonate
|
|
353
332
|
```
|
|
354
333
|
|
|
334
|
+
### The operations follow n{λ}b = n{λ[b]}n exactly
|
|
335
|
+
|
|
336
|
+
Every operation above is evaluated with the unified limit rule `n{λ}b = n{λ[b]}n` — the final operand is the **base** n, never b. Whenever the reduced level λ[y] still fits a Cantor-normal-form coefficient row the whole fundamental-sequence cascade is evaluated:
|
|
337
|
+
|
|
338
|
+
```javascript
|
|
339
|
+
MetaNum(3).iterate(5); // 3{ω^ω}5 = 3{ω^5}3 = 3{ω^4*3}3 = …
|
|
340
|
+
// … = 3{ω^4*2+ω^3*2+ω^2*2+ω*2+2}3 → layer=0, top row [1,2,2,2,2,2]
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
Levels ≥ ω^ω have no finite coefficient row, so the result is stored as the compact **layer marker** of λ[y] (see the representation rule above: layer L ⇒ `10{ω^ω^…(L ω^'s)…^(ω^'s polynomial)}10`):
|
|
344
|
+
|
|
345
|
+
so the encoded ordinals grow with the operation (`iter < itmu < cube < expo < tria < trix < apix < epsl`) and with y, and `epsilonate(MSI)` is exactly the library's ε-tower cap.
|
|
346
|
+
|
|
355
347
|
### Fractional hyperoperation levels
|
|
356
348
|
|
|
357
|
-
Levels interpolate geometrically (
|
|
358
|
-
with `θf` continuous between `x{n}y` (f=0) and `x{n+1}y` (f=1). For the
|
|
359
|
-
canonical diagonal this is exactly `10{n+f}10 = 10{n+1}(2·5^f)`:
|
|
349
|
+
Levels interpolate geometrically; `x{n+f}y = x{n+1}(θf)` with `θf` continuous between `x{n}y` (f=0) and `x{n+1}y` (f=1). For the canonical diagonal this is exactly `10{n+f}10 = 10{n+1}(2·5^f)`:
|
|
360
350
|
|
|
361
351
|
```javascript
|
|
362
352
|
MetaNum(10).arrow(3.5)(10); // 10{3.5}10 = 10{4}(2·5^0.5)
|
|
@@ -365,9 +355,7 @@ MetaNum(10).arrow(3.2)(10); // monotone between 10{3}10 and 10{4}10
|
|
|
365
355
|
|
|
366
356
|
### Non-integer arguments at ordinal levels
|
|
367
357
|
|
|
368
|
-
The same continuity applies to the ω-and-above operations. Successor levels
|
|
369
|
-
follow `x{α}(m+f) = x{α-1}` applied m times to `x^f`; the ω level matches
|
|
370
|
-
`aperiote` exactly, so composition identity holds verbatim:
|
|
358
|
+
The same continuity applies to the ω-and-above operations. Successor levels follow `x{α}(m+f) = x{α-1}` applied m times to `x^f`; the ω level matches `aperiote` exactly, so composition identity holds verbatim:
|
|
371
359
|
|
|
372
360
|
```javascript
|
|
373
361
|
MetaNum(10).expande(2.1); // 10{ω+1}2.1 = 10{ω}10{ω}(10^0.1)
|
|
@@ -375,21 +363,12 @@ MetaNum(10).expande(2); // 10{ω}10 (continuous at the integers)
|
|
|
375
363
|
MetaNum(10).multiexpande(2.1); // (10{ω+1})²(10^0.1)
|
|
376
364
|
```
|
|
377
365
|
|
|
378
|
-
**Limit levels take the fundamental sequence at the full (fractional) `y
|
|
379
|
-
the fraction is never dropped (`h20(10,2.1)` ≠ `h20(10,2)`). The sequence can
|
|
380
|
-
then carry fractional coefficients, which resolve against the base x because on
|
|
381
|
-
the diagonal ω reads as x:
|
|
366
|
+
**Limit levels** take the fundamental sequence at the full (fractional) `y`. The sequence can then carry fractional coefficients, which resolve against the base x because on the diagonal ω reads as x:
|
|
382
367
|
|
|
383
|
-
- ω^(k)·(c+f) = ω^(k)·c + ω^(k-1)·(x·f), applied top-down (ω^0.1 = x^0.1), so
|
|
384
|
-
|
|
385
|
-
- a leftover fractional constant γ+f is one level of interpolation:
|
|
386
|
-
**x{γ+f}x = x{γ+1}(2·(x/2)^f)** — continuous at f=0 because x{γ+1}2 = x{γ}x.
|
|
368
|
+
- ω^(k)·(c+f) = ω^(k)·c + ω^(k-1)·(x·f), applied top-down (ω^0.1 = x^0.1), so only the constant term can still be fractional;
|
|
369
|
+
- a leftover fractional constant γ+f is one level of interpolation: x{γ+f}x = x{γ+1}(2·(x/2)^f) — continuous at f=0 because x{γ+1}2 = x{γ}x.
|
|
387
370
|
|
|
388
|
-
**Successor levels** keep `x{α}(m+f) = x{α-1}` applied m times to `x^f`, and
|
|
389
|
-
are stored in the same **expanded** form as the integer arguments: the α-1 row
|
|
390
|
-
carries the m applications (`ceil(y)-2 = m-1`) and the cascade below it is
|
|
391
|
-
generated at the fundamental-sequence index `x^f`, so the value grows with f
|
|
392
|
-
inside the interval and converges to the next integer as f → 1:
|
|
371
|
+
**Successor levels** keep `x{α}(m+f) = x{α-1}` applied m times to `x^f`, so the value grows with f inside the interval and converges to the next integer as f → 1:
|
|
393
372
|
|
|
394
373
|
```javascript
|
|
395
374
|
MetaNum(10).h21(2.0001); // Ba2.218Ab9 f → 0: cascade bottoming at ω
|
|
@@ -397,11 +376,7 @@ MetaNum(10).h21(2.5); // Ba1.772Ad9 the cascade deepens with f
|
|
|
397
376
|
MetaNum(10).h21(2.99); // Ba2.447Aj9 → converges to h21(10,3) = Ba1.000Ak9
|
|
398
377
|
```
|
|
399
378
|
|
|
400
|
-
For the ω+1 / ω+2 / ω+3 levels the applications after the first still have an
|
|
401
|
-
operand inside MSI, so those are evaluated directly by the rule (that is the
|
|
402
|
-
`10{ω}10{ω}(10^0.1)` composition above) — which is also the exact identity.
|
|
403
|
-
An iteration count beyond direct evaluation diagonalizes through the engine's
|
|
404
|
-
huge-argument convention (y plus one α-level marker row). Then we have:
|
|
379
|
+
For the ω+1 / ω+2 / ω+3 levels the applications after the first still have an operand inside MSI, so those are evaluated directly by the rule (that is the `10{ω}10{ω}(10^0.1)` composition above) — which is also the exact identity. An iteration count beyond direct evaluation diagonalizes through the engine's huge-argument convention (y plus one α-level marker row). Then we have:
|
|
405
380
|
|
|
406
381
|
10{ω\*2}2.1=10{ω+2.1}10=10{ω+3}2\*5^0.1 (because 10{ω+2}10=10{ω+3}2)
|
|
407
382
|
|
|
@@ -420,8 +395,7 @@ huge-argument convention (y plus one α-level marker row). Then we have:
|
|
|
420
395
|
Bowers' Exploding Array Function (BEAF) is supported via ordinal arithmetic for 3+ arguments:
|
|
421
396
|
|
|
422
397
|
```javascript
|
|
423
|
-
// BEAF(a,b,c,d,e,f,...) = a{...+ω^3*(f-1)+ω^2*(e-1)+ω*(d-1)+c}b
|
|
424
|
-
// (the constant term keeps its value; ω-and-above coefficients decrement by 1)
|
|
398
|
+
// BEAF(a,b,c,d,e,f,...) = a{...+ω^3*(f-1)+ω^2*(e-1)+ω*(d-1)+c}b (the constant term keeps its value; ω-and-above coefficients decrement by 1)
|
|
425
399
|
|
|
426
400
|
// 3-entry: {a,b,c} = a↑^c b (standard up-arrow notation)
|
|
427
401
|
MetaNum.BEAF(3, 3, 2); // 3↑↑3 = 7625597484987
|
|
@@ -436,20 +410,6 @@ MetaNum.BEAF(10, 2, 1, 1, 2); // 10{ω^2}2
|
|
|
436
410
|
MetaNum.BEAF(3, 3, 3, 3, 2); // 3{ω^2+ω*2+3}3
|
|
437
411
|
MetaNum.BEAF(4, 5, 6, 7, 8, 9); // 4{ω^3*8+ω^2*7+ω*6+6}5
|
|
438
412
|
|
|
439
|
-
// Ordinal expansion order and truncation (maxRows = 100 by default):
|
|
440
|
-
// the expansion evaluates from the largest ordinal down and keeps the largest
|
|
441
|
-
// maxRows-1 ordinal rows. Without truncation the expansion is exact, e.g.
|
|
442
|
-
// BEAF(3,3,5,5,5) = 3{ω^2*4+ω*4+5}3 enumerates all 50 sub-ordinals.
|
|
443
|
-
// When the expansion exceeds the row budget the base defaults to [10] and the
|
|
444
|
-
// first kept row's count is incremented by 1 as a truncation marker, e.g.
|
|
445
|
-
// BEAF(5,5,1,1,1,2) = 5{ω^3+1}5 → [[10],[4,2,0,1],...,[3,0,0,0,1]].
|
|
446
|
-
|
|
447
|
-
// nested BEAF: {a,{b,c,d,e},f,g,h}
|
|
448
|
-
// An argument exceeding MSI supremum-collapses (use fundamental sequences rules):
|
|
449
|
-
// ω*i+HUGE ≈ ω*(i+1), ω^i*HUGE ≈ ω^(i+1), etc.
|
|
450
|
-
// (lower coefficients are swallowed), and the result anchors at that argument's value.
|
|
451
|
-
MetaNum.BEAF(4, MetaNum.BEAF(4, 2, 3, 5), 3, 5); // 4{ω*4+3}4{ω*4+3}2
|
|
452
|
-
|
|
453
413
|
// Parse BEAF string notation
|
|
454
414
|
MetaNum.fromBeaf("{3,3,3}"); // 3↑↑↑3
|
|
455
415
|
MetaNum.fromBeaf("{3,3,3,3}"); // 3{ω*2+3}3
|
|
@@ -460,66 +420,112 @@ new MetaNum(7625597484987).toBeaf(); // "{7625597484987}"
|
|
|
460
420
|
MetaNum.BEAF(3,3,3).toBeaf(); // "{3638334640023.7783}"
|
|
461
421
|
```
|
|
462
422
|
|
|
423
|
+
### nested BEAF
|
|
424
|
+
|
|
425
|
+
nested BEAF: {a,{b,c,d,e},f,g,h}
|
|
426
|
+
|
|
427
|
+
An argument exceeding MSI supremum-collapses (use fundamental sequences rules):
|
|
428
|
+
|
|
429
|
+
ω*i+HUGE ≈ ω*(i+1), ω^i*HUGE ≈ ω^(i+1), etc.
|
|
430
|
+
|
|
431
|
+
lower coefficients are swallowed, and the result anchors at that argument's value.
|
|
432
|
+
|
|
433
|
+
```javascript
|
|
434
|
+
MetaNum.BEAF(4, MetaNum.BEAF(4, 2, 3, 5), 3, 5); // 4{ω*4+3}4{ω*4+3}2
|
|
435
|
+
|
|
436
|
+
```
|
|
437
|
+
|
|
463
438
|
## Hardy Hierarchy
|
|
464
439
|
|
|
465
|
-
`MetaNum.hardy(n)` evaluates the Hardy hierarchy `H_α(10)` where the ordinal α
|
|
466
|
-
is built from the decimal digits of n (base 10, `hardy(1234) = H_{ω³+ω²·2+ω·3+4}(10)`):
|
|
440
|
+
`MetaNum.hardy(n)` evaluates the Hardy hierarchy `H_α(10)` where the ordinal α is built from the decimal digits of n (base 10, `hardy(1234) = H_{ω³+ω²·2+ω·3+4}(10)`):
|
|
467
441
|
|
|
468
442
|
```javascript
|
|
469
443
|
MetaNum.hardy(10); // H_ω(10) = 20
|
|
444
|
+
MetaNum.hardy(10.5); // H_ω(10+0.5) = 21
|
|
470
445
|
MetaNum.hardy(11); // H_{ω+1}(10) = 22
|
|
471
446
|
MetaNum.hardy(100); // H_{ω²}(10) = 10240
|
|
472
|
-
MetaNum.hardy(
|
|
473
|
-
|
|
447
|
+
MetaNum.hardy(100.5); // H_{ω²}(10+0.5) ≈ 11085
|
|
448
|
+
MetaNum.hardy(1234); // H_{ω³+ω²·2+ω·3+4}(10), exact for small levels and engine-collapsed (F_j = H^{ω^j}) for deep segments
|
|
474
449
|
```
|
|
475
450
|
|
|
476
|
-
Recursion rules:
|
|
477
|
-
|
|
451
|
+
Recursion rules:
|
|
452
|
+
-`H_0(n) = n`, `H_{α+1}(n) = H_α(n+1)` (only +1, never iterated),
|
|
453
|
+
-For fractional 0<f<1 we have `H_{α+f}(n) = H_α(n+f)`,
|
|
454
|
+
-`H_λ(n) = H_{λ[n]}(n)` with the CNF fundamental sequences.
|
|
478
455
|
|
|
479
456
|
### Hardy beyond ω^ω
|
|
480
457
|
|
|
481
|
-
For n ≥ 1e10 the leading exponent k ≥ 10
|
|
482
|
-
ordinal, so `hardy(1e11) = H_{ω^(ω+1)}(10)` sits at the `10{ω+1}10` scale
|
|
483
|
-
(via `H_{ω^β}(n) = F_β(n)`), not the flat `10{11}10` scale. The value is
|
|
484
|
-
evaluated per the definition (from below), so it is strictly BELOW the
|
|
485
|
-
matching engine hyper-op:
|
|
458
|
+
For n ≥ 1e10 the leading exponent k ≥ 10 itself converted to a base-10 ordinal, so `hardy(1e11) = H_{ω^(ω+1)}(10)` sits at the `10{ω+1}10` scale (via `H_{ω^β}(n) = F_β(n)`), The value is evaluated per the definition (from below),so it is strictly below the matching engine hyper-op:
|
|
486
459
|
|
|
487
460
|
```javascript
|
|
488
|
-
MetaNum.hardy(1e10); // = H_{ω^ω}(10) = H_{ω^10}(10), array exactly
|
|
489
|
-
// [3086.036065328153, 9,9,9,9,9,9,9,9] — below 10{10}10
|
|
461
|
+
MetaNum.hardy(1e10); // = H_{ω^ω}(10) = H_{ω^10}(10), array exactly [3086.036065328153, 9,9,9,9,9,9,9,9] — below 10{10}10
|
|
490
462
|
MetaNum.hardy(1e11); // = H_{ω^(ω+1)}(10) — below 10{ω+1}10 (expande(10,10))
|
|
463
|
+
MetaNum.hardy("1e10+11"); // H_{ω^ω+ω+1}(10) = H_{ω^ω}(22) → the truncated exact tower [3086.036…, 21×19] — the single row [非整数, 21, 21, …, 21], format "X23"
|
|
464
|
+
MetaNum.hardy("1e10+22"); // H_{ω^ω+ω*2+2}(10) → [3086.036…, 47×19], format "X49"
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
Once the definitional from-below tower `[c0, (n1−1)×(n1−2)]` (n1 = hardy(rest)) no longer fits `maxCols`, hardy keeps the TRUNCATED cascade `[3086.036…, (n1−1)×(maxCols−1)]` — the tower level n1−1 over the definitional base — instead of the engine value.
|
|
468
|
+
|
|
469
|
+
Fractional inputs collapse into ONE plain row (the fractional hyper-operation result) and hardy stays continuous across the integers:
|
|
470
|
+
|
|
471
|
+
```javascript
|
|
472
|
+
MetaNum.hardy(1e10) < MetaNum.hardy("1e10+0.5") < MetaNum.hardy(1e10+1); // single rows throughout
|
|
473
|
+
MetaNum.hardy("1e10+0.5"); // [4581.009607833985, 10,10,10,10,10,10,10,10,10]
|
|
474
|
+
MetaNum.hardy("1e10+1.5"); // [10030.57513899962, 11×10]
|
|
491
475
|
```
|
|
492
476
|
|
|
493
|
-
|
|
494
|
-
built recursively (n1 = H_ord(rest)(10), base = H_{ω^n1}(n1) when n1 is a
|
|
495
|
-
small finite), and the rows of 10{ω+c}(9+dk) are mirrored onto that base for
|
|
496
|
-
kExp ≥ 11. hardy is monotone across this range:
|
|
497
|
-
`hardy(9999999999) < hardy(1e10) < hardy(10000000001)`.
|
|
477
|
+
Strings of the form `"AeB+C"` (`"1e10+0.5"`, `"1e16+1e13"`, …) parse to the exact decimal sum, so the digit path never reads 0.
|
|
498
478
|
|
|
499
|
-
|
|
479
|
+
More generally, with n = dk·10^kExp + rest: α = ω^ord(kExp)·dk + ord(rest) is built recursively (n1 = H_ord(rest)(10)), and the leading term ω^β·dk (β = ord(kExp)) is **dk applications of H_{ω^β}, one after the other on the running value** — an application is one row `[1, β]`:
|
|
480
|
+
|
|
481
|
+
```javascript
|
|
482
|
+
MetaNum.hardy(1.1e11); // H_{ω^(ω+1)+ω^ω}(10) = H_{ω^(ω+1)}(H_{ω^ω}(10)) (one row per application)
|
|
483
|
+
MetaNum.hardy(2e11); // H_{ω^(ω+1)·2}(10) = H_{ω^(ω+1)}(H_{ω^(ω+1)}(10))
|
|
484
|
+
MetaNum.hardy(3e11); // → … [8,0,1], [2,1,1] (one more row per application)
|
|
485
|
+
MetaNum.hardy(1e16 + 1e13); // H_{ω^(ω+6)}(H_{ω^(ω+3)}(10)) → … [1,6,1]
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
So hardy is monotone across this range: `hardy(9999999999) < hardy(1e10) < hardy(10000000001)`, and `hardy(1e11) < hardy(1.1e11) < hardy(2e11)`.
|
|
489
|
+
|
|
490
|
+
### Hardy of power towers: one layer per 10^ level
|
|
491
|
+
|
|
492
|
+
For a clean tower the ordinal is ω^ord(W) — exactly one ω above hardy(W) — so **every extra 10^ level in the input raises hardy's layer by ONE, and the array rows stay those of the innermost readable expansion**:
|
|
493
|
+
|
|
494
|
+
```javascript
|
|
495
|
+
MetaNum.hardy("1e308"); // layer 0 — the digit-path cascade, last rows [8,6,0,3], [8,7,0,3]
|
|
496
|
+
MetaNum.hardy("e1e308"); // layer 1 — the SAME array rows
|
|
497
|
+
MetaNum.hardy("ee1e308"); // layer 2 — the SAME array rows, and so on
|
|
498
|
+
MetaNum.hardy("e1e10"); // = layerUp(hardy(1e10)) = [[3086.036…, 9×8]] at layer 1
|
|
499
|
+
MetaNum.hardy("eee10"); // layer 2, hardy(10^^100) → layer 98, hardy(10^^MSI) → layer MSI-2
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
The layer therefore equals `floor(tower height) − 2`; towers whose bracket is a finite ω-polynomial keep the definitional base rows instead of being folded down by the standard de-layer rule.
|
|
503
|
+
|
|
504
|
+
More generally, with n = dk·10^kExp + rest: α = ω^ord(kExp)·dk + ord(rest) is built recursively (n1 = H_ord(rest)(10)), and the leading term ω^β·dk (β = ord(kExp)) is **dk applications of H_{ω^β}, one after the other on the running value** — an application is one row `[1, β]`:
|
|
505
|
+
|
|
506
|
+
```javascript
|
|
507
|
+
MetaNum.hardy(1.1e11); // H_{ω^(ω+1)+ω^ω}(10) = H_{ω^(ω+1)}(H_{ω^ω}(10)) → [3086.036065328153, 9×8], [1,1,1] (H_{ω^ω} once, then H_{ω^(ω+1)} once)
|
|
508
|
+
MetaNum.hardy(2e11); // H_{ω^(ω+1)·2}(10) = H_{ω^(ω+1)}(H_{ω^(ω+1)}(10)) → [3086.036065328153, 9×8], [8,0,1] [1,1,1]
|
|
509
|
+
MetaNum.hardy(3e11); // → … [8,0,1], [2,1,1] (one more row per application)
|
|
510
|
+
MetaNum.hardy(1e16 + 1e13); // H_{ω^(ω+6)}(H_{ω^(ω+3)}(10)) → … [8,2,1], [1,6,1]
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
So hardy is monotone across this range: `hardy(9999999999) < hardy(1e10) < hardy(10000000001)`, and `hardy(1e11) < hardy(1.1e11) < hardy(2e11)`.
|
|
500
514
|
|
|
501
515
|
### hardy input extensions
|
|
502
516
|
|
|
517
|
+
And we have hardy(1e20) = H_{ω^(ω*2)}(10), hardy(1e100)=H_{ω^(ω^2)}(10), hardy("e1e10")=H_{ω^(ω^ω)}(10), hardy("1F10")=H_{ω^^10}(10), and so on.
|
|
518
|
+
|
|
519
|
+
`MetaNum.infinity` (alias of `MetaNum.POSITIVE_INFINITY`) is the value returned once the input passes the ε₀ ceiling: any MetaNum beyond `10^^MSI` — e.g. `G600` (= 10{3}600), `3{9}3`, or a power tower taller than `10^^MSI` — has no Hardy level inside the library, so `hardy` yields Infinity.
|
|
520
|
+
|
|
503
521
|
```javascript
|
|
504
|
-
MetaNum.hardy(1e21);
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
MetaNum.hardy(MetaNum(10).tetr(100));
|
|
508
|
-
// power towers shadow to ω^ω^…^ω (k ω's):
|
|
509
|
-
// hardy(10^^k) = 10.epsilonate(k)
|
|
510
|
-
MetaNum.hardy(MetaNum(10).tetr(Number.MAX_SAFE_INTEGER));
|
|
511
|
-
// hardy(10^^MSI) = the MetaNum limit exactly:
|
|
512
|
-
// 10{ω^ω^…^ω(MSI ω's)}10 (the ε-tower cap)
|
|
522
|
+
MetaNum.hardy(1e21); // hardy(1e20) < hardy(1e21) < hardy(1e22), >1e20 scientific strings expand to exact digits — the reading stays monotone
|
|
523
|
+
MetaNum.hardy(MetaNum(10).tetr(100)); // power towers shadow to ω^ω^…^ω (k ω's): hardy(10^^k) = H_ω^ω^…^ω (k ω's)(10) — the ordinal is read off the value itself (10^W → ω^ord(W))
|
|
524
|
+
MetaNum.hardy(MetaNum(10).tetr(Number.MAX_SAFE_INTEGER)); // hardy(10^^MSI) = the MetaNum limit: layer MSI-3 (the ε-tower cap)
|
|
513
525
|
MetaNum.hardy(MetaNum("G600")) // MetaNum-object > 10^^MSI should return Infinity
|
|
514
526
|
MetaNum.hardy(MetaNum.arrow(3, 9, 3)) // = Infinity (3{9}3 is far above 10^^MSI)
|
|
515
527
|
```
|
|
516
528
|
|
|
517
|
-
`MetaNum.infinity` (alias of `MetaNum.POSITIVE_INFINITY`) is the value returned
|
|
518
|
-
once the input passes the ε₀ ceiling: any MetaNum beyond `10^^MSI` — e.g. `G600`
|
|
519
|
-
(= 10{3}600), `3{9}3`, or a power tower taller than `10^^MSI` — has no Hardy
|
|
520
|
-
level inside the library, so `hardy` yields Infinity. Below the ceiling the
|
|
521
|
-
tower height still reads exactly: `hardy(10^^(MSI-1)) = 10.epsilonate(MSI-1)`.
|
|
522
|
-
|
|
523
529
|
## Layer & Serialization
|
|
524
530
|
|
|
525
531
|
```javascript
|
|
@@ -538,9 +544,7 @@ new MetaNum(100).toPrecision(3); // "100"
|
|
|
538
544
|
new MetaNum(100).toHyperE(); // "100"
|
|
539
545
|
new MetaNum(100).toStringWithDecimalPlaces(4); // "100.0000"
|
|
540
546
|
new MetaNum(100).toJSON(); // {sign:1, array:[[100]], layer:0}
|
|
541
|
-
new MetaNum(100).format(); // letter notation (format-metanum.js),
|
|
542
|
-
// e.g. MetaNum.hardy(4166).format() → "2.397G5"
|
|
543
|
-
// optional args: format(precision, small)
|
|
547
|
+
new MetaNum(100).format(); // letter notation (format-metanum.js), e.g. MetaNum.hardy(4166).format() → "2.397G5", optional args: format(precision, small)
|
|
544
548
|
```
|
|
545
549
|
|
|
546
550
|
## Utility Functions
|
|
@@ -561,7 +565,7 @@ MetaNum.sumArithmeticSeries(5, 1, 2); // 1+3+5+7+9 = 25
|
|
|
561
565
|
MetaNum.affordArithmeticSeries(100, 1, 2, 0);
|
|
562
566
|
|
|
563
567
|
// Configuration
|
|
564
|
-
MetaNum.config({ maxRows: 50, maxCols: 50,
|
|
568
|
+
MetaNum.config({ maxRows: 50, maxCols: 50, serializeMode: 1, debug: 1 });
|
|
565
569
|
```
|
|
566
570
|
|
|
567
571
|
# Mathematical Background
|
|
@@ -593,48 +597,26 @@ where α\[b] denotes the b-th element of the fundamental sequence assign to the
|
|
|
593
597
|
|
|
594
598
|
### The application count of each ordinal row
|
|
595
599
|
|
|
596
|
-
Expanding rules 2-3 all the way down shows that **only the top row depends on
|
|
597
|
-
|
|
598
|
-
n
|
|
599
|
-
|
|
600
|
-
-
|
|
601
|
-
applications and every lower row (which comes from n{α-1}n, n{α-2}n, …
|
|
602
|
-
whose operand is n) carries **n-2**;
|
|
603
|
-
- limit α: rule 3 first rewrites n{α}b = n{α\[b]}n, so the operand is n at
|
|
604
|
-
every level and **all** rows carry **n-2**.
|
|
600
|
+
Expanding rules 2-3 all the way down shows that **only the top row depends on the argument b**
|
|
601
|
+
— every row below it is produced by decomposing with the base n as the operand:
|
|
602
|
+
- successor α: n{α}b = n{α-1}^(b-2) (n{α-1}n), so the α-1 row carries **b-2** applications and every lower row (which comes from n{α-1}n, n{α-2}n, … whose operand is n) carries **n-2**;
|
|
603
|
+
- limit α: rule 3 first rewrites n{α}b = n{α\[b]}n, so the operand is n at every level and **all** rows carry **n-2**.
|
|
604
|
+
- when expanded ordinal rows >= maxRows, it is truncated, and array[0] is default [10] and the first ordinal row count add 1.(to get precise value)
|
|
605
605
|
|
|
606
606
|
```javascript
|
|
607
607
|
MetaNum(10).h13(20); // 10{ω+3}20 = 10{ω+2}^18 10{ω+1}^8 10{ω}^8 10{ω}10
|
|
608
608
|
// array → [[1e10,8,8,8,8,8,8,8,8], [8,0,1], [8,1,1], [18,2,1]]
|
|
609
|
-
// ω+2 row = 18 = y-2, ω+1 and ω rows = 8 = x-2
|
|
610
609
|
MetaNum(10).h12(20); // 10{ω+2}20 → [8,0,1] [18,1,1]
|
|
611
610
|
MetaNum(3).h13(20); // 3{ω+3}20 → [1,0,1] [1,1,1] [18,2,1] (x-2 = 1)
|
|
612
|
-
```
|
|
613
|
-
|
|
614
|
-
The same n-2 count is what the finite r0 coefficients carry (10{10}10 → all-8s),
|
|
615
|
-
so a row below the top one never moves when b changes.
|
|
616
|
-
|
|
617
|
-
The law is uniform for **every** level from ω+1 to ω^4:
|
|
618
|
-
|
|
619
|
-
| kind | rows | top row count | lower rows |
|
|
620
|
-
|---|---|---|---|
|
|
621
|
-
| successor α = β+1 | rows of n{β}n, then one β-row | **b-2** | **n-2** |
|
|
622
|
-
| limit α | rows of n{α\[b]}n | **n-2** | **n-2** |
|
|
623
|
-
|
|
624
|
-
```javascript
|
|
625
611
|
MetaNum(10).h21(20); // 10{ω*2+1}20 = 10{ω*2}^18 (10{ω*2}10)
|
|
626
612
|
// 10{ω*2}10 = 10{ω+10}10 → the ω..ω+9 cascade, every count x-2 = 8
|
|
627
613
|
// array → [[…,8,…], [8,0,1] … [8,9,1], [18,0,2]]
|
|
628
614
|
MetaNum(10).h22(20); // … + [8,0,2] + [18,1,2] (ω*2 row = 8, ω*2+1 row = 18)
|
|
629
615
|
MetaNum(3).h21(20); // 3{ω*2+1}20 → [1,0,1] [1,1,1] [1,2,1] [18,0,2] (x-2 = 1)
|
|
616
|
+
MetaNum(10).h100(20); //10{ω^2}20=10{ω*20}10=10{ω*19+9}^8 10{ω*19+8}^8 ... 10{ω*18+1}^9 10
|
|
617
|
+
// array → [[10], [9,1,18], [8,2,18] … [8,8,19], [8,9,19]] (maxrows=20)
|
|
630
618
|
```
|
|
631
619
|
|
|
632
|
-
A limit operation stays **expanded** for every argument up to MSI: rule 3 turns
|
|
633
|
-
b into a fundamental-sequence index, so 100 < b ≤ MSI still yields the largest
|
|
634
|
-
`maxRows-1` fundamental-sequence rows (with the standard truncation marker)
|
|
635
|
-
instead of collapsing to a one-row marker — `h20(10,1000)` keeps 19 rows whose
|
|
636
|
-
top one is ω+999, and `h20(10,MSI)` keeps rows up to ω+(MSI-1).
|
|
637
|
-
|
|
638
620
|
## Examples
|
|
639
621
|
|
|
640
622
|
642663{0}178187=642663×178187=114514191981
|
|
@@ -753,9 +735,7 @@ In the previous section we've defined a finite sequence of functions, so we can
|
|
|
753
735
|
|
|
754
736
|
let 10{1}α = Eα, 10{2}α = Fα, 10{3}α = Gα, ..., 10{22}α = Zα.
|
|
755
737
|
|
|
756
|
-
we had: Aaα = 10{α}10.
|
|
757
|
-
|
|
758
|
-
So Aa has ω hyper-operation level, comparable to f\_ω\_(n) in FGH.
|
|
738
|
+
we had: Aaα = 10{α}10, so Aa has ω hyper-operation level.
|
|
759
739
|
|
|
760
740
|
Then, we'll give a definition for non-integer 10{α}10 and amend the definition of Aa:
|
|
761
741
|
|
|
@@ -763,7 +743,9 @@ Then, we'll give a definition for non-integer 10{α}10 and amend the definition
|
|
|
763
743
|
|
|
764
744
|
The seemingly complex expression simply gives us a smooth geometric curve between 2 and 10. This ensures that Aa would be continuous, given the identity 10{β}10 = 10{β+1}2.
|
|
765
745
|
|
|
766
|
-
|
|
746
|
+
Then we can define Binary-Letter-Canonical form of Aa: αAaβ = 10{β+1}α = 10{β}10{β}10...{β}10^frac(α) with int(α)10's
|
|
747
|
+
|
|
748
|
+
For example, 1Aa10=10, 2Aa10 = 10{10}10, 2.5Aa10 = 10{10}2.5 = 10{10}10{10}3.162, 3Aa10 = 10{10}10{10}10, Aa10.5 = 10{11}2\*5^0.5 = 10{11}4.472 = 4.472Aa10, 10Aa10 = 10{10}^9 10 = 10{11}10 = 2Aa11
|
|
767
749
|
|
|
768
750
|
### Ab,Ac,Ad,...,Az and their Universal Binary-Letter-Canonical Forms
|
|
769
751
|
|
|
@@ -773,27 +755,25 @@ Abα = AaAa...AaAa(10^frac(α)) with int(α) Aa's = 10{ω+1}α
|
|
|
773
755
|
|
|
774
756
|
Acα = AbAb...AbAb(10^frac(α)) with int(α) Ab's = 10{ω+2}α
|
|
775
757
|
|
|
776
|
-
then we have Ad,Ae,...,Az, each with the same definition as Ab and Ac.
|
|
777
|
-
|
|
778
|
-
And that's it. So A(the β+1-th lowercase letter)α is 10{ω+β}α, comparable to f\_ω+β\_(n) in the FGH.
|
|
758
|
+
then we have Ad,Ae,...,Az, each with the same definition as Ab and Ac, and that's it. So A(the β+1-th lowercase letter)α is 10{ω+β}α.
|
|
779
759
|
|
|
780
760
|
Again we have Ab0=Ac0=Ad0=...=Az0=1, Ab1=Ac1=Ad1=...=Az1=10, Aa10=Ab2, Ab10=Ac2, ... and Ab,Ac,Ad,...,Az are all continuous. So any number greater than 1 has a unique Ab to Az Canonical Form.
|
|
781
761
|
|
|
782
|
-
Moreover, since Aa10=Ab2, we can extend our definition of the
|
|
762
|
+
Moreover, since 10{10}10=Aa10=Ab2(2Aa10=1Ab2), we can extend our definition of the Binary-Letter-Canonical form up to Az:
|
|
783
763
|
|
|
784
|
-
(1) Set a threshold number θ (such as
|
|
764
|
+
(1) Set a threshold number θ (such as 1000, that's 1E3)
|
|
785
765
|
|
|
786
|
-
(2) if the number <θ then we write down the scientific notation of this number.
|
|
766
|
+
(2) if the number <θ then we write down the scientific notation (...E...) of this number.
|
|
787
767
|
|
|
788
|
-
(3) Otherwise, we write Γα
|
|
768
|
+
(3) Otherwise, we write Γα → 10^frac(α)Γint(α) for letter combinations (E~Z, Ab~Az) or → 2*5^frac(α)Γint(α) for Aa, and 2≤α<θ. If there is more than one possible choice, we choose the letter combination which comes first in order.
|
|
789
769
|
|
|
790
770
|
Examples:
|
|
791
771
|
|
|
792
|
-
10{20}10 =
|
|
772
|
+
10{20}10 = 1X10 = 1Y2 = 2Aa20, so we write it as 1.000X10.
|
|
793
773
|
|
|
794
|
-
10{30}10 =
|
|
774
|
+
10{30}10 = 2Aa30, so we write it as 2.000Aa30.
|
|
795
775
|
|
|
796
|
-
10{ω+1}10 =
|
|
776
|
+
10{ω+1}10 = 1Ab10 = 1Ac2, so we write it as 1.000Ab10.
|
|
797
777
|
|
|
798
778
|
### Defining from Ba to Bz
|
|
799
779
|
|
|
@@ -805,9 +785,9 @@ And define Baα in a way similar to Aaα:
|
|
|
805
785
|
|
|
806
786
|
Baα = 10{ω+α}10 = 10{ω+int(α)+1}2\*5^frac(α)
|
|
807
787
|
|
|
808
|
-
This gives rise to writing numbers in Ba Canonical form and extend the
|
|
788
|
+
This gives rise to writing numbers in Ba Canonical form and extend the universal Binary-Letter-Canonical form of Ba: αBaβ = 10{ω+β+1}α = 10{ω+β}10{ω+β}10...{ω+β}10^frac(α) with int(α)10's. Because of 10{ω+β}10 = 10{ω+β+1}2, α in αBaβ has a range of [2,10).
|
|
809
789
|
|
|
810
|
-
Then we can define Bb,Bc,
|
|
790
|
+
Then we can define Bb,Bc,Bd,...,Bz with recursions in a similar way. Bbα = BaBa...BaBa(10^frac(α)) with int(α) Ba's = 10{ω\*2+1}α, and Bcα = BbBb...BbBb(10^frac(α)) with int(α) Bb's = 10{ω\*2+2}α, etc. So B(the β+1-th lowercase letter)α is 10{ω\*2+β}α.
|
|
811
791
|
|
|
812
792
|
### A Supporting Extended Arrow Operation and Aaa
|
|
813
793
|
|
|
@@ -833,11 +813,13 @@ And with this new supporting notation we can now to define:
|
|
|
833
813
|
|
|
834
814
|
Containing a very neat trick that allows us to do the double-diagonalization with a single number: Aaa1.5 = 10{ω+5}10, Aaa2.5 = 10{ω\*2+5}10
|
|
835
815
|
|
|
836
|
-
At any rate, it isn't too difficult to see that Aaa behaves "nicely" and allows us to speak of Aaa Canonical Forms of any number.
|
|
816
|
+
At any rate, it isn't too difficult to see that Aaa behaves "nicely" and allows us to speak of Aaa Canonical Forms of any number. Aaa1=Aa10, Aaa2=Ba10, ..., Aaa26=Za10 take the foundamental sequences.
|
|
817
|
+
|
|
818
|
+
This also enables us to write the unversal Binary-Letter-Canonical form of any number up to Aaa: αAaaβ = 10{ω^2}(log5(α/2)+β). Since 10{ω^2}1=10{ω}10, 10{ω^2}2=10{ω\*2}10, α in αAaaβ has a range of [2,10).
|
|
837
819
|
|
|
838
820
|
## Symbol and letter notation
|
|
839
821
|
|
|
840
|
-
###
|
|
822
|
+
### Notations with more than three letters, and !Aa
|
|
841
823
|
|
|
842
824
|
Extended arrow operations can be easily extended, like so:
|
|
843
825
|
|
|
@@ -861,9 +843,9 @@ Now, all that is left to do is to define !Aa, which has ω^ω level.
|
|
|
861
843
|
|
|
862
844
|
- !Aaα = 10{ω^int(α)\*frac(α)}10
|
|
863
845
|
|
|
864
|
-
Then we have !Aa2 = Aaa10, !Aa3 = Aaaa10,... Just like the previous letters, any number can be written as !Aaα. Here, it is actually the binary form of !αAaβ = !Aa(β+logα) which has the most intuitive meaning:
|
|
846
|
+
Then we have !Aa1 = Aa10, !Aa2 = Aaa10, !Aa3 = Aaaa10,... Just like the previous letters, any number can be written as !Aaα. Here, it is actually the binary form of !αAaβ = !Aa(β+logα) which has the most intuitive meaning:
|
|
865
847
|
|
|
866
|
-
In terms of the extended arrow operation, β tells us ω^β is in the ordinal and the digits of α tell us its coefficient and what residue ordinals are. Actually, !αAaβ has a more ω^ layer compare to αAaβ in ordinal level. For example, !
|
|
848
|
+
In terms of the extended arrow operation, β tells us ω^β is in the ordinal and the digits of α tell us its coefficient and what residue ordinals are. Actually, !αAaβ has a more ω^ layer compare to αAaβ in ordinal level. For example, !2.0000Aa4 = 10{ω^4}10 and 2.0000Aa4 = 10{4}10
|
|
867
849
|
|
|
868
850
|
And in terms of ordinals, β gives us the maximum power of ω and the digits of α give us the coefficents of the various powers of ω, these neat relations are also true for β=1 and α≥2.
|
|
869
851
|
|
|
@@ -901,22 +883,24 @@ Then we can define (the β-th symbol or symbol combination)Aaα = 10{ω^ω^...^(
|
|
|
901
883
|
|
|
902
884
|
Implementation of dlsdl's letter notation for large number library, currently metanum.js
|
|
903
885
|
|
|
886
|
+
the letter notations follow **diagonal letters**: names ending in `a` (`Aa` = ω, `Ba` = ω·2, `Aaa` = ω², …) carry the mantissa `α = 2·5^f ∈ [2,10)`: `10{ω*3}100=10{ω*2+100}10` → `2.000Ca100`, `10{ω^2}100=10{ω*100}10` → `2.000Aaa100`. And mantissa `α∈[1,10)` for the other letters: `10{ω*3+1}100=10{ω*3}^99 10` → `1.000Cb100`
|
|
887
|
+
|
|
904
888
|
## format options
|
|
905
889
|
|
|
906
890
|
```javascript
|
|
907
891
|
smallNotationUseE // 1. for small value notations, true then use αE-β,false then use number⁻¹
|
|
908
892
|
smallNotationThreshold // 2. =n then value < 10^-n uses small notation
|
|
909
893
|
decimalPlaces // 3. for normal notations, =0 is 1,=1 is 1.0,=2 is 1.00 etc.
|
|
910
|
-
decimalThreshold // 4. =n then value >= 10^n
|
|
894
|
+
decimalThreshold // 4. =n then value >= 10^n only show integer part
|
|
911
895
|
useCommas // 5. whether to show commas in normal numbers (true/false)
|
|
912
896
|
sciThreshold // 6. =n then value >= 10^n use scientific notation, same for β in αEβ
|
|
913
897
|
sciSignificantDigits // 7. =n then α has n decimal places in αEβ
|
|
914
898
|
sciDecimalThreshold // 8. =n then β >= 10^n in αEβ only show integer part of α
|
|
915
899
|
singleLetterDigits // 9. α's decimal places in αFβ,αGβ...αZβ
|
|
916
|
-
repeatLetterThreshold // 10. =n then n repeated single letters use next letter notation
|
|
917
|
-
multiLetterDigits // 11. α's decimal places in αAaβ,αAbβ...α
|
|
918
|
-
multiLetterRepeatThreshold// 12. =n then n repeated multi letter combinations use next letter notation
|
|
919
|
-
multiLetterLimit // 13. =n then length of multi letter combinations does not exceed n, exceed then switch to next notation (length of Aa is 2, Aaa is 3, Aaaa is 4...)
|
|
900
|
+
repeatLetterThreshold // 10. =n then n repeated single letters use next letter notation
|
|
901
|
+
multiLetterDigits // 11. α's decimal places in αAaβ,αAbβ...αAaaβ and above
|
|
902
|
+
multiLetterRepeatThreshold// 12. =n then n repeated multi letter combinations use next letter notation
|
|
903
|
+
multiLetterLimit // 13. =n then length of multi letter combinations does not exceed n, exceed then switch to next notation (length of Aa~Zz is 2, Aaa~Zzz is 3, Aaaa~Zzzz is 4...)
|
|
920
904
|
epsilonSignificantDigits // 14. α's decimal places in αεβ
|
|
921
905
|
```
|
|
922
906
|
|
|
@@ -977,84 +961,18 @@ Implementation of dlsdl's letter notation for large number library, currently me
|
|
|
977
961
|
- 10{ω^ω^……^ω}10 ~ 10{ω^ω^…(10^sciThreshold ω^'s)…^ω}10: αεβformat
|
|
978
962
|
- 10{ω^ω^…(10^sciThreshold ω^'s)…^ω}10 ~ limit of metanum.js: εαEβformat
|
|
979
963
|
|
|
980
|
-
### format-metanum rules
|
|
964
|
+
### format-metanum rules
|
|
981
965
|
|
|
982
|
-
- **Γ-canonical α/β (bisect law)**: the true α and β of a value v at letter Γ
|
|
983
|
-
are recovered by bisecting 10{L}x = v on the engine's own smooth arrow curve
|
|
984
|
-
(Γ = E,F,G,... single letters, L = level). α = 10^frac(x), β = floor(x):
|
|
966
|
+
- **Γ-canonical α/β (bisect law)**: the true α and β of a value v at letter Γ are recovered by bisecting 10{L}x = v on the engine's own smooth arrow curve (Γ = E,F,G,... single letters, L = level). α = 10^frac(x), β = floor(x), n operations of level L applied to a Γ^{L+1}-structured value collapse to ONE Γ^{L+1} with arg + n (e.g. F⁴(G(1.3796)) = G(5.3796)):
|
|
985
967
|
`format(arrow(3,4.1,3))` → `G1.161G897`,
|
|
986
968
|
`format(arrow(3,4.3,3))` → `1.285H8`,
|
|
987
969
|
`format(hardy(4166))` → `2.397G5`.
|
|
988
|
-
-
|
|
989
|
-
|
|
990
|
-
which is why single-letter chains like `G1.161G897` appear.
|
|
991
|
-
- **α appears at most once**, attached to the innermost value:
|
|
992
|
-
`format(GE12)` → `G1.000E12`; hardy(1120) → `F4.398E13`. Once the innermost β reaches
|
|
993
|
-
10^sciThreshold the letter goes bare and β carries its own sci form.
|
|
994
|
-
- **At most 2 finite letter types** may appear in a display's hyper-op chain
|
|
995
|
-
(VαEβ → VαFβ → … → VαVβ, never another like VFαEβ)
|
|
996
|
-
(AaαEβ → AaαFβ → … → AaαZβ → AaαAaβ, never another like AaFαEβ)
|
|
997
|
-
A cascade that would spell more than two letter types spells only its top two levels
|
|
998
|
-
and compresses the rest into the second letter's binary form.
|
|
999
|
-
"bottom Γ repeation": 3{9}3 → `L2.376K2`, 3{10}3 → `M2.376L2`,
|
|
1000
|
-
4{9}4 → `LLK3.550K3`, 5{9}5 → `LLLKK4.669K4`; repeatLetterThreshold+1 top
|
|
1001
|
-
repeats carry to the next letter instead (6{9}6 → `5.760M5`), and levels
|
|
1002
|
-
22→21, 23→22 stay two-letter (`Y2.376X2`, `Z2.376Y2`), level ≥ 23 cascades
|
|
1003
|
-
display as the αΓβ polarize diagonal. Diagonal letter combinations
|
|
1004
|
-
(multi-letter tokens whose last lowercase letter is `a`: Aa, Ba, Ca, Aaa,
|
|
1005
|
-
Aaaa, …) use the **pure dlsdl α=2·5^f ∈[2,10) convention**; the other
|
|
1006
|
-
letters (Ab, Bb, …) keep the ordinary α∈[1,10) convention. The polarize
|
|
1007
|
-
triple t = log₁₀(bottom)+repeation maps as: t∈[2,10) smooth → α=t,
|
|
1008
|
-
β=arrows; discrete integer arguments (10{L}b with 2≤b≤100) all sit at the
|
|
1009
|
-
α=2 anchor of the next β; a structured argument climbs the geometric
|
|
1010
|
-
smooth-log steps f→1+log10(f) to its diagonal mantissa. Examples:
|
|
1011
|
-
3{24}3 → `2.376Aa23`, 3{100}3 → `2.376Aa99`,
|
|
1012
|
-
10{100}10 … 10{100}100 → `2.000Aa100`, 10{23}10 → `2.000Aa23`,
|
|
1013
|
-
10{100}(10{93}10) → `2.002Aa100`, 10{10000}10 → `2.000Aa10,000`;
|
|
1014
|
-
nested ordinals prefix the ω-row letter:
|
|
1015
|
-
3{3{100}3}3 → `Aa2.376Aa99`, 3{10{10000}10}3 → `Aa2.000Aa10,000`.
|
|
1016
|
-
Symbol de-layering follows the same convention: !Aa3 = 10{ω³}10 →
|
|
1017
|
-
`2.000Aaaa10` (layer 0), @Aa3 = 10{ω^(ω³)}10 → `!2.000Aaaa10`.
|
|
1018
|
-
- **multiLetterLimit symbol carry**: a multi-letter combination of k letters
|
|
1019
|
-
sits at level ω^(k-1). Once it would be longer than multiLetterLimit the
|
|
1020
|
-
notation switches to the next one instead of growing another letter: the
|
|
1021
|
-
symbol form !αAaβ, whose β is exactly that ω-exponent and whose α digits are
|
|
1022
|
-
the CNF coefficients per the !-form definition
|
|
1023
|
-
(!1.2345Aa4 = 10{ω^4+ω^3*2+ω^2*3+ω*4+5}10). With limit 4 the successor of
|
|
1024
|
-
Zzzz is `!…Aa4` — never Aaaaa — and a 10-letter level displays as a short
|
|
1025
|
-
`!2.222Aa9`: `format(iter(3,5))` → `!2.222Aa4`,
|
|
1026
|
-
`format(iter(3,10))` → `!2.222Aa9`.
|
|
1027
|
-
**Every symbol-prefixed format carries too** — the symbols stack
|
|
1028
|
-
(no-symbol → ! → @ → # …), so a layer-1 value whose diagonal letter would
|
|
1029
|
-
exceed the limit reads as one more symbol with the Aa argument taking the
|
|
1030
|
-
exponent: `format(apix(3,10))` → `@2.000Aa10`
|
|
1031
|
-
(= 10{ω^(ω^10)}10), `format(apix(3,5))` → `@2.000Aa5`; past the symbol
|
|
1032
|
-
table the ε form takes over (`format(epsilonate(3,15))` → `1.000Ak10ε14`).
|
|
1033
|
-
Diagonal combinations in symbol forms keep the pure dlsdl α = 2·5^f ∈ [2,10)
|
|
1034
|
-
mantissa (integer exponents anchor 2.000).
|
|
1035
|
-
- **Cascade compression**: the ordinal rows are a COMPOSITION, so the top row
|
|
1036
|
-
leads the display and the row below it (which collapses from its repeat count)
|
|
1037
|
-
keeps the single α and β — a 20-row cascade keeps its top two levels:
|
|
1038
|
-
`format(h10000(3,10))` → `Iccc1.000Iccb10`.
|
|
1039
|
-
- **Stacking the same function nests the letter** (issue #14): `n{α}(n{α}y)` is
|
|
1040
|
-
one more application of the same level on top of the inner value, so the
|
|
1041
|
-
letter appears twice. `poea(10,poea(10,100))` = Ad(Ad(99)) → `Ad1.000Ad99`
|
|
1042
|
-
(before: the rows were folded into one letter, `1.000Ad114`), and the same
|
|
1043
|
-
holds for ω+1, ω+2, ω*2+1, ω*2+2, ω²+1, ω²+2, ω³+1 —
|
|
1044
|
-
`Ab2.398Ab99`, `Ac1.000Ac99`, `Bb1.000Bb99`, `Bc1.000Bc99`,
|
|
1045
|
-
`Abb1.000Abb99`, `Aac1.000Aac99`, `Aaab1.000Aaab99`; with an operand above
|
|
1046
|
-
MSI, `apea(apea(1e16))` → `BaBa1.000E16`.
|
|
1047
|
-
- **A coefficient above 25 has no letter in the grid** (the letters hold
|
|
1048
|
-
ω·d+v with 0 ≤ v ≤ 25), so a ω*2 fundamental-sequence row (ω+81, ω+99, …)
|
|
1049
|
-
clamps down to the largest letter below it instead of wrapping into a higher,
|
|
1050
|
-
wrong letter: `format(apea(10,100))` → `1.000Ba154` (the ω*2 level), not the
|
|
1051
|
-
wrapped ω*4+3 letter.
|
|
1052
|
-
Formats are identical at maxRows=maxCols=10/20/50/100.
|
|
970
|
+
- **α appears at most once**, attached to the innermost value: `format(GE12)` → `G1.000E12`; hardy(1120) → `F4.398E13`. Once the innermost β reaches 10^sciThreshold the letter goes bare and β carries its own sci form.
|
|
971
|
+
- **At most 2 finite letter types** may appear in a display's hyper-op chain (VαEβ → VEαEβ → VαFβ → … → VαVβ, never another like VFαEβ), (AaαEβ → AaαFβ → … → AaαZβ → AaαAaβ, never another like AaFαEβ). A cascade that would spell more than two letter types spells only its top two levels and compresses the rest into the second letter's binary form. "bottom Γ repeation": 3{9}3 → `L2.376K2`, 3{10}3 → `M2.376L2`, 4{9}4 → `LLK3.550K3`, 5{9}5 → `LLLKK4.669K4`; repeatLetterThreshold+1 top repeats carry to the next letter instead (6{9}6 → `5.760M5`), and levels 22→21, 23→22 stay two-letter (`Y2.376X2`, `Z2.376Y2`), level ≥ 23 cascades display as the αΓβ polarize diagonal.
|
|
1053
972
|
|
|
1054
973
|
### Precision budget (maxRows / maxCols)
|
|
1055
974
|
|
|
1056
|
-
Every hyperoperation is stored EXACTLY while it fits the array budget and
|
|
1057
|
-
approximately once it does not:
|
|
975
|
+
Every hyperoperation is stored EXACTLY while it fits the array budget and approximately once it does not:
|
|
1058
976
|
|
|
1059
977
|
- exact capacity = maxRows+maxCols−2 finite hyperoperation levels:
|
|
1060
978
|
`arrow(x,L,z)` holds `r0 = [a0, a1, …, a(maxCols-1)]` (levels 0…maxCols−1)
|
|
@@ -1079,6 +997,9 @@ approximately once it does not:
|
|
|
1079
997
|
|
|
1080
998
|
# Changelog
|
|
1081
999
|
|
|
1000
|
+
|
|
1001
|
+
- 2026-9-30 v2.0.2: Fix a lot of bugs e.g. hardy(non integer > 1000) throwing, hardy beyond the 1.8e308 range fails, format of "ω^n\*large numbers" fails, some FORMAT_OPTIONS not take effect.
|
|
1002
|
+
- 2026-9-25 v2.0.1: Fix arrow(x,y,y) not being monotone in y and array except array[0][0] may be non-integer
|
|
1082
1003
|
- 2026-9-15 v2.0: Add hyper-root & hyper-log, hardy function, fractional hyperoperation inputs, fix BEAF operation level and format
|
|
1083
1004
|
- 2026-8-18 v1.4 Support hyper operation >MSI and fix format-metanum bugs
|
|
1084
1005
|
- 2026-7-31 v1.3 Add format-metanum.js, fix basic operations, hyper operations and BEAF bugs
|