metanum 1.4.0 → 2.0.1

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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![NPM](https://img.shields.io/npm/v/metanum.svg)](https://www.npmjs.com/package/metanum)
4
4
 
5
- - MetaNum v1.4 by dlsdl
5
+ - MetaNum v2.0 by dlsdl
6
6
 
7
7
  A huge number library holding up to X↑↑X&9e15.
8
8
 
@@ -32,15 +32,15 @@ const a = new MetaNum(428571);
32
32
  const b = MetaNum.fromNumber(-2.71828);
33
33
 
34
34
  // From a string (supports scientific notation, hyper-operations, letter notation, brackets, etc.)
35
- const c = new MetaNum("1.5e308");
36
- const d = MetaNum.fromString("F5"); // tetration: 10^^5
35
+ const c = new MetaNum("1.797e308");
36
+ const d = MetaNum.fromString("1F5"); // tetration: 10^^5
37
37
  const e = MetaNum.fromString("E100#2"); // Hyper-E: 10^10^100 (googolplex)
38
38
  const f = MetaNum.fromString("GF^2 E^3 123"); // letter notation
39
39
  const g = MetaNum.fromString("Aa100"); // letter notation
40
40
  const h = MetaNum.fromString("[[10], [1, 3]]"); // bracket notation
41
41
 
42
42
  // From an array
43
- const i = MetaNum.fromArray([2.71828, 1, 2]); // [[3.14, 1, 2]]
43
+ const i = MetaNum.fromArray([2.71828, 1, 2]); // array=[[2.71828, 1, 2]], =10^^10^^10^2.71828
44
44
  const j = MetaNum.fromArray([10], 1, 1); // layer 1
45
45
 
46
46
  // From an object / JSON
@@ -171,6 +171,14 @@ new MetaNum(100).linear_sroot(3); // ³ss̅r̅t̅(100)
171
171
  // Layer arithmetic
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
+
175
+ // General hyperoperation inverses: if a{b}c = d then
176
+ // d.hyper_log(a)(b) = c and d.hyper_root(c)(b) = a
177
+ MetaNum(14).hyper_log(2)(0); // 2*7 = 14 → 7
178
+ MetaNum(100000).hyper_log(10)(1); // 10^5 → 5
179
+ MetaNum(65536).hyper_log(2)(2); // 2↑↑4 → 4 (slog)
180
+ MetaNum(65536).hyper_root(4)(2); // 2↑↑4 → 2 (base recovery)
181
+ MetaNum(10).arrow(3)(3).hyper_root(3)(3); // 10↑↑↑3 → 10
174
182
  ```
175
183
 
176
184
  ## Hyper-Operations up to ε₀
@@ -283,6 +291,26 @@ x.aperixxate(3); // apix(3) = hwpw
283
291
  x.epsilonate(3); // epsl(3) = hepsl
284
292
  ```
285
293
 
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
+
286
314
  ## Inverse Operations
287
315
 
288
316
  Each expansion operation has a corresponding inverse for decrementing ordinal structure:
@@ -324,35 +352,107 @@ x.i_apix(z) // iwpw = inverse of aperixxate
324
352
  x.i_epsl(z) // iepsl = inverse of epsilonate
325
353
  ```
326
354
 
355
+ ### Fractional hyperoperation levels
356
+
357
+ Levels interpolate geometrically (README rule (i)); `x{n+f}y = x{n+1}(θf)`
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)`:
360
+
361
+ ```javascript
362
+ MetaNum(10).arrow(3.5)(10); // 10{3.5}10 = 10{4}(2·5^0.5)
363
+ MetaNum(10).arrow(3.2)(10); // monotone between 10{3}10 and 10{4}10
364
+ ```
365
+
366
+ ### Non-integer arguments at ordinal levels
367
+
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:
371
+
372
+ ```javascript
373
+ MetaNum(10).expande(2.1); // 10{ω+1}2.1 = 10{ω}10{ω}(10^0.1)
374
+ MetaNum(10).expande(2); // 10{ω}10 (continuous at the integers)
375
+ MetaNum(10).multiexpande(2.1); // (10{ω+1})²(10^0.1)
376
+ ```
377
+
378
+ **Limit levels take the fundamental sequence at the full (fractional) `y`**, so
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:
382
+
383
+ - ω^(k)·(c+f) = ω^(k)·c + ω^(k-1)·(x·f), applied top-down (ω^0.1 = x^0.1), so
384
+ only the constant term can still be fractional;
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.
387
+
388
+ **Successor levels** keep `x{α}(m+f) = x{α-1}` applied m times to `x^f`, and they
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:
393
+
394
+ ```javascript
395
+ MetaNum(10).h21(2.0001); // Ba2.218Ab9 f → 0: cascade bottoming at ω
396
+ MetaNum(10).h21(2.5); // Ba1.772Ad9 the cascade deepens with f
397
+ MetaNum(10).h21(2.99); // Ba2.447Aj9 → converges to h21(10,3) = Ba1.000Ak9
398
+ ```
399
+
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:
405
+
406
+ 10{ω\*2}2.1=10{ω+2.1}10=10{ω+3}2\*5^0.1 (because 10{ω+2}10=10{ω+3}2)
407
+
408
+ 3{ω\*2}2.1=3{ω+2.1}3=3{ω+3}2\*1.5^0.1
409
+
410
+ 10{ω^2}2.1=10{ω\*2.1}10=10{ω\*2+10\*0.1}10=10{ω\*2+1}10
411
+
412
+ 3{ω^2}2.1=3{ω\*2.1}3=3{ω\*2+3\*0.1}10=3{ω\*2+0.3}3=3{ω\*2+1}2\*1.5^0.3
413
+
414
+ 10{ω^ω}2.1=10{ω^2.1}10=10{ω^2\*10^0.1}10=10{ω^2\*1.258925}10=10{ω^2\*1+ω\*2+5.8925}10=10{ω^2\*1+ω\*2+6}2*5^0.8925
415
+
416
+ 3{ω^ω}2.1=3{ω^2.1}3=3{ω^2\*3^0.1}3=3{ω^2\*1.116123}3=3{ω^2\*1+1.045107}3=3{ω^2\*1+2}2*1.5^0.045107
417
+
327
418
  ## BEAF Operations
328
419
 
329
420
  Bowers' Exploding Array Function (BEAF) is supported via ordinal arithmetic for 3+ arguments:
330
421
 
331
422
  ```javascript
332
- // BEAF(a,b,c,d,e,f,...) = a{...+ω^3*(f-1)+ω^2*(e-1)+ω*(d-1)+(c-1)}b
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)
333
425
 
334
426
  // 3-entry: {a,b,c} = a↑^c b (standard up-arrow notation)
335
427
  MetaNum.BEAF(3, 3, 2); // 3↑↑3 = 7625597484987
336
428
  MetaNum.BEAF(3, 3, 3); // 3↑↑↑3 = tritri
337
429
 
338
- // 4-entry: {a,b,c,d} = a(ω*d+c level operation)b
430
+ // 4-entry: {a,b,c,d} = a(ω*(d-1)+c level operation)b
339
431
  MetaNum.BEAF(2, 2, 1, 2); // 2{ω}2
340
- MetaNum.BEAF(3, 3, 3, 3); // 3{ω*2+2}3
432
+ MetaNum.BEAF(3, 3, 3, 3); // 3{ω*2+3}3
341
433
 
342
434
  // 5+ entry: ordinal arithmetic
343
435
  MetaNum.BEAF(10, 2, 1, 1, 2); // 10{ω^2}2
344
- MetaNum.BEAF(3, 3, 3, 3, 2); // 3{ω^2+ω+1}3
345
- MetaNum.BEAF(4, 5, 6, 7, 8, 9); // 4{ω^3*8+ω^2*7+ω*6+5}5
436
+ MetaNum.BEAF(3, 3, 3, 3, 2); // 3{ω^2+ω*2+3}3
437
+ MetaNum.BEAF(4, 5, 6, 7, 8, 9); // 4{ω^3*8+ω^2*7+ω*6+6}5
438
+
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]].
346
446
 
347
447
  // nested BEAF: {a,{b,c,d,e},f,g,h}
348
448
  // An argument exceeding MSI supremum-collapses (use fundamental sequences rules):
349
449
  // ω*i+HUGE ≈ ω*(i+1), ω^i*HUGE ≈ ω^(i+1), etc.
350
450
  // (lower coefficients are swallowed), and the result anchors at that argument's value.
351
- MetaNum.BEAF(4, MetaNum.BEAF(4, 2, 3, 5), 3, 5); // 4{ω*4+2}4{ω*4+2}2
451
+ MetaNum.BEAF(4, MetaNum.BEAF(4, 2, 3, 5), 3, 5); // 4{ω*4+3}4{ω*4+3}2
352
452
 
353
453
  // Parse BEAF string notation
354
454
  MetaNum.fromBeaf("{3,3,3}"); // 3↑↑↑3
355
- MetaNum.fromBeaf("{3,3,3,3}"); // 3{ω*2+2}3
455
+ MetaNum.fromBeaf("{3,3,3,3}"); // 3{ω*2+3}3
356
456
  MetaNum.fromBeaf("{10,2,1,1,2}"); // 10{ω^2}2
357
457
 
358
458
  // Convert to BEAF string
@@ -360,6 +460,66 @@ new MetaNum(7625597484987).toBeaf(); // "{7625597484987}"
360
460
  MetaNum.BEAF(3,3,3).toBeaf(); // "{3638334640023.7783}"
361
461
  ```
362
462
 
463
+ ## Hardy Hierarchy
464
+
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)`):
467
+
468
+ ```javascript
469
+ MetaNum.hardy(10); // H_ω(10) = 20
470
+ MetaNum.hardy(11); // H_{ω+1}(10) = 22
471
+ MetaNum.hardy(100); // H_{ω²}(10) = 10240
472
+ MetaNum.hardy(1234); // H_{ω³+ω²·2+ω·3+4}(10), exact for small levels and
473
+ // engine-collapsed (F_j = H^{ω^j}) for deep segments
474
+ ```
475
+
476
+ Recursion rules: `H_0(n) = n`, `H_{α+1}(n) = H_α(n+1)` (only +1, never
477
+ iterated), `H_λ(n) = H_{λ[n]}(n)` with the CNF fundamental sequences.
478
+
479
+ ### Hardy beyond ω^ω
480
+
481
+ For n ≥ 1e10 the leading exponent k ≥ 10 is itself converted to a base-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:
486
+
487
+ ```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
490
+ MetaNum.hardy(1e11); // = H_{ω^(ω+1)}(10) — below 10{ω+1}10 (expande(10,10))
491
+ ```
492
+
493
+ More generally, with n = dk·10^kExp + rest: α = ω^ord(kExp)·dk + ord(rest) is
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)`.
498
+
499
+ hardy(1e20) = H_{ω^(ω*2)}(10), hardy(1e100)=H_{ω^(ω^2)}(10), hardy(e1e10)=H_{ω^(ω^ω)}(10), and so on.
500
+
501
+ ### hardy input extensions
502
+
503
+ ```javascript
504
+ MetaNum.hardy(1e21); // >1e20 scientific strings expand to exact
505
+ // digits — the reading stays monotone:
506
+ // hardy(1e20) < hardy(1e21) < hardy(1e22)
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)
513
+ MetaNum.hardy(MetaNum("G600")) // MetaNum-object > 10^^MSI should return Infinity
514
+ MetaNum.hardy(MetaNum.arrow(3, 9, 3)) // = Infinity (3{9}3 is far above 10^^MSI)
515
+ ```
516
+
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
+
363
523
  ## Layer & Serialization
364
524
 
365
525
  ```javascript
@@ -378,6 +538,9 @@ new MetaNum(100).toPrecision(3); // "100"
378
538
  new MetaNum(100).toHyperE(); // "100"
379
539
  new MetaNum(100).toStringWithDecimalPlaces(4); // "100.0000"
380
540
  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)
381
544
  ```
382
545
 
383
546
  ## Utility Functions
@@ -428,6 +591,50 @@ where α\[b] denotes the b-th element of the fundamental sequence assign to the
428
591
  - (ω^(α_1)+ω^(α_2)+...+ω^(α_k))\[n]=ω^(α_1)+ω^(α_2)+...+ω^(α_k)\[n], where α_1>=α_2>=...>=α_k
429
592
  - ε₀\[0]=1 and ε₀\[n+1]=ω^ε₀\[n]
430
593
 
594
+ ### The application count of each ordinal row
595
+
596
+ Expanding rules 2-3 all the way down shows that **only the top row depends on
597
+ the argument b** — every row below it is produced by decomposing with the base
598
+ n as the operand:
599
+
600
+ - successor α: n{α}b = n{α-1}^(b-2) (n{α-1}n), so the α-1 row carries **b-2**
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**.
605
+
606
+ ```javascript
607
+ MetaNum(10).h13(20); // 10{ω+3}20 = 10{ω+2}^18 10{ω+1}^8 10{ω}^8 10{ω}10
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
+ MetaNum(10).h12(20); // 10{ω+2}20 → [8,0,1] [18,1,1]
611
+ 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
+ MetaNum(10).h21(20); // 10{ω*2+1}20 = 10{ω*2}^18 (10{ω*2}10)
626
+ // 10{ω*2}10 = 10{ω+10}10 → the ω..ω+9 cascade, every count x-2 = 8
627
+ // array → [[…,8,…], [8,0,1] … [8,9,1], [18,0,2]]
628
+ MetaNum(10).h22(20); // … + [8,0,2] + [18,1,2] (ω*2 row = 8, ω*2+1 row = 18)
629
+ MetaNum(3).h21(20); // 3{ω*2+1}20 → [1,0,1] [1,1,1] [1,2,1] [18,0,2] (x-2 = 1)
630
+ ```
631
+
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
+
431
638
  ## Examples
432
639
 
433
640
  642663{0}178187=642663×178187=114514191981
@@ -438,7 +645,7 @@ where α\[b] denotes the b-th element of the fundamental sequence assign to the
438
645
 
439
646
  10{3}3=10{2}10{2}10=10{2} 9(10{1})'s 10=10↑↑(10^10^10^10^10^10^10^10^10000000000)
440
647
 
441
- 3{ω}5=3{5}5=3{4}3{4}3{4}3{4}3=3{4}3{4}3{4}3{3}3{3}3=3{4}3{4}3{4}3{3}3{2}3{2}3=3{4}3{4}3{4}3{3}3{2}3{1}3{1}3=3↑↑↑↑3↑↑↑↑3↑↑↑↑3↑↑↑3↑↑7625597484987
648
+ 3{ω}5=3{5}3=3{4}3{5}2=3{4}3{4}3=3{4}3{3}3{3}3=3{4}3{3}3{2}3{2}3=3{4}3{3}3{2}3{1}3{1}3=3↑↑↑↑3↑↑↑3↑↑7625597484987
442
649
 
443
650
  5{ω+1}4=5{ω}5{ω+1}3=5{ω}5{ω}5{ω+1}2=5{ω}5{ω}5{ω}5{ω+1}1=5{ω}5{ω}5{ω}5=5{ω}5{ω}5{5}5=5{ω}5{5{5}5}5=5{5{5{5}5}5}5
444
651
 
@@ -446,13 +653,13 @@ where α\[b] denotes the b-th element of the fundamental sequence assign to the
446
653
 
447
654
  10{ω×2}10=10{ω+10}10=9(10{ω+9})'s 10=8(10{ω+9})'s 9(10{ω+8})'s 10=8(10{ω+9})'s 8(10{ω+8})'s ... 8(10{ω+1})'s 8(10{ω})'s 8(10{9})'s ... 8(10{1})'s 10000000000
448
655
 
449
- 10{ω^2}4=10{ω×4}4=10{ω×3+4}4=10{ω×3+3}10{ω×3+3}10{ω×3+3}10=10{ω×3+3}10{ω×3+3} 8(10{ω×3+2})'s 8(10{ω×3+1})'s 8(10{ω×3})'s 8(10{ω×2+9})'s ... 8(10{ω×2})'s ... 8(10{ω})'s ... 8(10{1})'s 10000000000
656
+ 10{ω^2}4=10{(ω^2)[4]}10=10{ω×4}10=10{(ω×4)[10]}10=10{ω×3+10}10=10{ω×3+9}10{ω×3+10}9=...=10{ω×3+9} 8(10{ω×3+8})'s ... 8(10{ω×3+1})'s 8(10{ω×3})'s 8(10{ω×2+9})'s ... 8(10{ω})'s ... 8(10{1})'s 10000000000
450
657
 
451
- 10{ω^ω}4=10{ω^4}4=10{ω^3×4}4=10{ω^3×3+ω^3}4=10{ω^3×3+ω^2×4}4=...=10{ω^3×3+ω^2×3+ω×3+4}4=3(10{ω^3×3+ω^2×3+ω×3+3})'s 10=2(10{ω^3×3+ω^2×3+ω×3+3})'s 8(10{ω^3×3+ω^2×3+ω×3+2})'s 8(10{ω^3×3+ω^2×3+ω×3+1})'s ... 8(10{1})'s 10000000000
658
+ 10{ω^ω}4=10{(ω^ω)[4]}10=10{ω^4}10=10{(ω^4)[10]}10=10{ω^3×10}10=... (every limit step ends on the base 10; successor steps iterate) ... 8(10{1})'s 10000000000
452
659
 
453
- 10{ω^(ω^2)}4=10{ω^(ω×ω)}4=10{ω^(ω×4)}4=10{ω^(ω×3+4)}4=10{ω^(ω×3+3)×ω}4=10{ω^(ω×3+3)×4}4=10{ω^(ω×3+3)×3+ω^(ω×3+2)×3+ω^(ω×3+1)×3+...+ω^2×3+ω×3+4}4
660
+ 10{ω^(ω^2)}4=10{(ω^(ω^2))[4]}10=10{ω^(ω×ω)}10=10{ω^(ω×4)}10=10{ω^(ω×3+10)}10=... (rule 3: each FS step ends on the base 10)
454
661
 
455
- 10{ε₀}4=10{ω^(ω^(ω^ω))}4=10{ω^(ω^(ω^4))}4=10{ω^(ω^(ω^3×3+ω^2×3+ω×3+4))}4=10{ω^(ω^(ω^3×3+ω^2×3+ω×3+3)×3+ω^(ω^3×3+ω^2×3+ω×3+2)×3+...++ω^2×3+ω×3+4)}4
662
+ 10{ε₀}4=10{ε₀[4]}10=10{ω^(ω^(ω^ω))}10=10{ω^(ω^(ω^10))}10=... (ε₀[n+1]=ω^(ε₀[n]), final operand 10)
456
663
 
457
664
  # dlsdl's Letter Notation
458
665
 
@@ -480,7 +687,7 @@ and \[number] can be any positive real number (nonintegers included).
480
687
 
481
688
  ### The First Levels: A Continuous version of Knuth Arrows
482
689
 
483
- We'll define:
690
+ Let α be a positive real number, β be a positive integer, we'll define (use extended arrow operation):
484
691
 
485
692
  Eα = 10^α = 10{1}α
486
693
 
@@ -504,7 +711,7 @@ So the above definitions are indeed an extention of Knuth arrows to nonintegers.
504
711
 
505
712
  ### Letter-Canonical Forms
506
713
 
507
- If α is a number greater than 1 and Γ is a one of the letters E,F,G,H,...,ζ then there is a unique number β such that:
714
+ If α is a number greater than 1 and Γ is a one of the letters E,F,G,H,...,Z then there is a unique number β such that:
508
715
 
509
716
  α = Γβ.
510
717
 
@@ -522,7 +729,7 @@ F1.47712 = E(10^0.47712) ≈ E3 = 10^3 = 1000.
522
729
 
523
730
  To recreate ordinary scientific notation, we'll define a binary version of the letter functions like this:
524
731
 
525
- Let Γ be one of the letters E,F,G,H,...,ζ Let β be a nonnegative integer and α be a real number between 1 and 10. Then:
732
+ Let Γ be one of the letters E,F,G,H,...,Z, β be a nonnegative integer and α be a real number between 1 and 10. Then:
526
733
 
527
734
  αΓβ = Γ(β+log(α))
528
735
 
@@ -536,190 +743,343 @@ So αEβ is nothing more than ordinary scientific notation.
536
743
 
537
744
  And αFβ is a power tower of β 10's topped by an α.
538
745
 
539
- And again, given any specific letter (E,F,G,H,...,ζ), ANY number greater than 1 has a unique representation as αΓβ (with 1≤α<β). So we can call this the Binary-Γ-Canonical Form of α.
746
+ And again, given any specific letter (E,F,G,H,...,Z), ANY number greater than 1 has a unique representation as αΓβ (with 1≤α<10). So we can call this the Binary-Γ-Canonical Form of α.
540
747
 
541
748
  ## Multi letter notation
542
749
 
543
750
  ### Defining Aa - The First Diagonalization
544
751
 
545
- In the previous section we've defined an infinite sequence of functions, so we can diagonalize over them:
546
-
547
- let 1|α = Eα, 2|α = Fα, 3|α = Gα, ..., 22|α = Zα.
548
-
549
- we had: Aaα = α|10 = 10{α}10.
550
-
551
- So Aa is comparable to f\_ω\_(n) in the FGH.
752
+ In the previous section we've defined a finite sequence of functions, so we can diagonalize over them:
552
753
 
553
- But there are a couple of problems here:
754
+ let 10{1}α = Eα, 10{2}α = Fα, 10{3}α = Gα, ..., 10{22}α = Zα.
554
755
 
555
- (1) α|10 isn't yet defined for noninteger α.
756
+ we had: Aaα = 10{α}10.
556
757
 
557
- (2) Aa1 would be 1|10 = 10^10 rather than 10 = E1 = F1 = G1 =...= Z1. This would have caused trouble later on, when we define the higher levels.To solve these two problems, we'll give a definition for α|10 and amend the definition of Aa:
758
+ So Aa has ω hyper-operation level, comparable to f\_ω\_(n) in FGH.
558
759
 
559
- (i) α|10 = (int(α)+1)|2\*5^frac(α)
760
+ Then, we'll give a definition for non-integer 10{α}10 and amend the definition of Aa:
560
761
 
561
- (ii) For α<2: Aaα = Gα
762
+ - Aaα = 10{α}10 = 10{int(α)+1}2\*5^frac(α)
562
763
 
563
- (iii) For α≥2: Aaα = α|10
764
+ 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.
564
765
 
565
- The seemingly complex expression in rule (i) 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.
766
+ For example, Aa10 = 2Aa10 = 10{10}2 = 2Aa10, Aa10.5 = 10{10}2\*5^0.5 = 10{10}4.472 = 4.472Aa10
566
767
 
567
- ### Ab,Ac,Ad,...,Az and their Universal Canonical Forms
768
+ ### Ab,Ac,Ad,...,Az and their Universal Binary-Letter-Canonical Forms
568
769
 
569
770
  The definitions of Ab,Ac,Ad,...,Az are simple enough:
570
771
 
571
- Abα = AaAa...AaAa(10^frac(α)) with int(α) Aa's
772
+ Abα = AaAa...AaAa(10^frac(α)) with int(α) Aa's = 10{ω+1}α
572
773
 
573
- Acα = AbAb...AbAb(10^frac(α)) with int(α) Ab's
774
+ Acα = AbAb...AbAb(10^frac(α)) with int(α) Ab's = 10{ω+2}α
574
775
 
575
776
  then we have Ad,Ae,...,Az, each with the same definition as Ab and Ac.
576
777
 
577
- And that's it. So A(the β+1-th letter) is comparable to f\_ω+β\_(n) in the FGH.
778
+ And that's it. So A(the β+1-th lowercase letter)α is 10{ω+β}α, comparable to f\_ω+β\_(n) in the FGH.
578
779
 
579
- Again we have Ab0=Ac0=Ad0=...=Az0=1, Ab1=Ac1=Ad1=...=Az1=10, and Ab,Ac,Ad,...,Az are all continuous. So any number greater than 1 has a unique Ab to Az Canonical Form.
780
+ 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.
580
781
 
581
- Moreover, since Aa10=Ab2 and Ab10=Ac2, we can extend our definition of the "Universal Canonical Form" up to Az10:
782
+ Moreover, since Aa10=Ab2, we can extend our definition of the "Universal Binary-Letter-Canonical Form" up to Az:
582
783
 
583
- (1) if α<100 (that's E2) then we write down the E-Canonical Form of α.
784
+ (1) Set a threshold number θ (such as 100, that's 1E2)
584
785
 
585
- (2) Otherwise, we write α as Γβ for some letter combinations Γ and 2≤β<10. If there is more than one possible choice, we choose the letter combination which comes first in order.
786
+ (2) if the number <θ then we write down the scientific notation of this number.
586
787
 
587
- ### Defining from Ba to Bz
588
-
589
- We already know how to do recursion (F,G,H,I,...,ζ) and simple diagonalization (Aa) in our continuous system, so we can easily extend our system up to ω×2-level in the FGH. In order to track our progress, we'll use the format (1,β)|α and define:
788
+ (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.
590
789
 
591
- (1,0)|α = Aaα
790
+ Examples:
592
791
 
593
- (1,β+1)|α = (1,β)|(1,β)|...|(1,β)|10^frac(α) with int(α) (1,β)'s
792
+ 10{20}10 = X10 = Y2 = Aa20, so we write it as 1X10.
594
793
 
595
- And define Baα in a way similar to Aaα:
794
+ 10{30}10 = Aa30, so we write it as 2Aa30.
596
795
 
597
- (i) (1,α)|10 = (1,int(α)+1)|2\*5^frac(α)
796
+ 10{ω+1}10 = Ab10 = Ac2, so we write it as 1Ab10.
598
797
 
599
- (ii) For α<2: Baα = (1,3)|α
798
+ ### Defining from Ba to Bz
600
799
 
601
- (iii) For α≥2: Baα = (1,α)|10
800
+ We already know how to do recursion (F,G,H,I,...,Z) and simple diagonalization (Aa) in our continuous system, so we can easily extend our system up to ω\*2 level. In order to track our progress, we'll define:
602
801
 
603
- This gives rise to writing numbers in Ba-Canonical form and extend the Universal Canonical Form up to Ba10 ,which is about f\_ω×2\_(10) in the FGH.
802
+ - 10{α}10 = Aaα, 10{ω+β+1}α = 10{ω+β}10{ω+β}...10^frac(α) with int(α) 10{ω+β}'s
604
803
 
605
- Then we can define Bb,Bc, Bd,...,Bz with recursions in a similar way. Bbα = BaBa...BaBa(10^frac(α)) with int(α) Ba's, and Bcα = BbBb...BbBb(10^frac(α)) with int(α) Bb's, etc. B(the β+1-th letter) is comparable to f\_ω\*2+β\_(n) in the FGH.
804
+ And define Baα in a way similar to Aaα:
606
805
 
607
- ### A Supporting Array Notation and Aaa
806
+ Baα = 10{ω+α}10 = 10{ω+int(α)+1}2\*5^frac(α)
608
807
 
609
- We can, of-course, repeat what we did in the previous section as many times as we wish and get the following ω^2-level notation (β,γ ≥ 0 are integers, and α≥0 is real):
808
+ This gives rise to writing numbers in Ba Canonical form and extend the Universal Binary-Letter-Canonical Form up to Ba10, which have ω\*2 level.
610
809
 
611
- (i) (0,1)|α = 10^α
810
+ 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+β}α.
612
811
 
613
- (ii) (β,γ+1)|α = (β,γ)|(β,γ)|...|(β,γ)|10^frac(α) with int(α) (β,γ)'s
812
+ ### A Supporting Extended Arrow Operation and Aaa
614
813
 
615
- (iii) (β,α)|10 = (β,int(α)+1)|2\*5^frac(α)
616
-
617
- (iv) For α<2: (β+1,0)|α = (β,3)|α
814
+ We can, of-course, repeat what we did in the previous section as many times as we wish and get the following ω^2-level notation (β,γ ≥ 0 are integers, and α≥0 is real):
618
815
 
619
- (v) For α≥2: (β+1,0)|α = (β,α)|10
816
+ (i) 10{1}α = 10^α
620
817
 
621
- Note that (β,γ) is comparable to f\_ω\*β+γ\_(α) in the FGH. Also, if we read (0,γ)|α as γ|α, this notation is a direct extension of everything we did before this section. Also, in this new notation we can write Baα = (2,0)|α, Bbα = (2,1)|α,... Bzα = (2,25)|α.
818
+ (ii) 10{ω\*β+γ+1}α = 10{ω\*β+γ}10{ω\*β+γ}...10^frac(α) with int(α) 10{ω\*β+γ}'s
622
819
 
623
- So QqQe308=10{ω17+16}10{ω17+4}308 is about f\_ω17+16\_(f\_ω17+4\_(308)).
820
+ (iii) 10{ω\*β+α}10 = 10{ω\*β+int(α)+1}2\*5^frac(α)
624
821
 
625
- And with this new supporting notation we can now to define Aaaα:
822
+ (iv) 10{ω\*(β+1)}α = 10{ω\*β+α}10
626
823
 
627
- (i) For α<2: Aaaα = (2,1)|α
824
+ Note that {ω\*β+γ} is a valid extended arrow operation. Also, in this new notation we can write Baα = 10{ω+α}10, Bbα = 10{ω\*2+1}α,... Bzα = 10{ω\*2+25}α.
628
825
 
629
- (ii) For α≥2: Aaaα = (int(α),10\*frac(α))|10
826
+ We can extend to more uppercase letters: Caα = 10{ω\*2+α}10, Cbα = 10{ω\*3+1}α, ..., Zaα = 10{ω\*25+α}10, ..., and finally Zzα = 10{ω\*26+25}α.
630
827
 
631
- With rule (ii) containing a very neat trick that allows us to do the double-diagonalization with a single number: Aaa1.5 = (2,1)|1.5, Aaa2.5 = (2,5)|10
828
+ So we have Qq1.000Qe308 = 10{ω17+16}10{ω17+4}308
632
829
 
633
- 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. And since Aaa2=Ba10, Aaa3=Ca10,..., Aaa26=Za10, this also enables us to write the Unversal Canonical Form of any number about f\_ω^2\_(10) in the FGH.
830
+ And with this new supporting notation we can now to define:
634
831
 
635
- ## Symbol and letter notation
832
+ - Aaaα = 10{ω\*int(α)+10\*frac(α)}10
636
833
 
637
- ### Arrays with more than two variable, and !Aa
834
+ 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
638
835
 
639
- Array notations can be easily extended to a multivariable array notation, like so:
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. And since Aaa1=Aa10, Aaa2=Ba10, ..., Aaa26=Za10, this also enables us to write the Unversal Binary-Letter-Canonical Form of any number below 10{ω^2}10.
640
837
 
641
- (i) For α≤1: (anything)|α = 10^α
838
+ ## Symbol and letter notation
642
839
 
643
- (ii) (β,γ,δ,...,ν+1)|α = (β,γ,δ,...,ν)|(β,γ,δ,...,ν)|...|(β,γ,δ,...,ν)|10^frac(α) with int(α) (β,γ,δ,...,ν)'s
840
+ ### Arrays with more than two variables, and !Aa
644
841
 
645
- (iii) (β,γ,δ,...,ν,α)|10 = (β,γ,δ,...,ν,int(α+1))|2\*5^frac(α)
842
+ Extended arrow operations can be easily extended, like so:
646
843
 
647
- (iv) For 1<α<2: (β,γ,δ,...,μ+1,<κ zeros>)|α = (β,γ,δ,...,μ,2,<κ-1 zeros>)|10^(α-1)
844
+ (i) 10{1}α = 10^α
648
845
 
649
- (v) For α≥2: (β,γ,δ,...,μ+1,<κ zeros>)|α = (β,γ,δ,...,μ,α,<κ-1 zeros>)|10
846
+ (ii) 10{...+ω^3\*β+ω^2\*γ+ω\*δ+ν+1}α = 10{...+ω^3\*β+ω^2\*γ+ω\*δ+ν}10{...+ω^3\*β+ω^2\*γ+ω\*δ+ν}...10^frac(α) with int(α) 10{...+ω^3\*β+ω^2\*γ+ω\*δ+ν}'s
650
847
 
651
- (vi) (β,γ,δ,...,α,<κ zeros>)|10 = (β,γ,δ,...,int(α),frac(α)\*10,<κ-1 zeros>)|10
848
+ (iii) 10{...+ω^3\*β+ω^2\*γ+ω\*δ+α}10 = 10{...+ω^3\*β+ω^2\*γ+ω\*δ+int(α+1)}2\*5^frac(α)
652
849
 
653
- (vii) (0,...,0,β,γ,δ,...,μ)|α = (β,γ,δ,...,μ)|α
850
+ (iv) 10{(...+ω^3\*β+ω^2\*γ+ω\*δ+μ+1)\*ω^κ}α = 10{(...+ω^4\*β+ω^3\*γ+ω^2\*δ+ω\*μ+α)\*ω^(κ-1)}10
654
851
 
655
- The first 5 rules are a simple and direct extention of the 2-variable arrays notation, and Rule vii simply states that leading zeros can be ommitted.
852
+ (v) 10{(...+ω^3\*β+ω^2\*γ+ω\*δ+α)\*ω^κ}10 = 10{(...+ω^4\*β+ω^3\*γ+ω^2\*δ+ω\*int(α)+frac(α)\*10)\*ω^κ}10
656
853
 
657
- Rule vi is an interesting one, though. It basically tells us that if we have an array which ends with (...,α,0,0,...,0) then the digits of the fractional part of α are to be distributed among the zeros. For example:
854
+ The first 4 rules are a simple and direct extention of the {ω\*β+γ} notation.
658
855
 
659
- - (114,514,1.9198,0,0,0,0)|10 = (114,514,1,9,1,9,8)|10.
856
+ Rule (v) is an interesting one, though. It basically tells us that if we have an ordinal which ends with ω^n\*0 terms, then the digits of the fractional part of α are to be distributed among the terms. For example:
660
857
 
661
- Now, all that is left to do is to define !Aa, which is about f\_ω^ω\_(10) in the FGH.
858
+ - 10{ω^6\*114+ω^5\*514+ω^4\*1.9198}10 = 10{ω^6\*114+ω^5\*514+ω^4+ω^3\*9+ω^2+ω\*9+8}10.
662
859
 
663
- For α<2: !Aaα = (1,0,1)|α
860
+ Now, all that is left to do is to define !Aa, which has ω^ω level.
664
861
 
665
- For α≥2: !Aaα = (10^frac(α),0,...,0)|10 with int(α) zeros.
862
+ - !Aaα = 10{ω^int(α)\*frac(α)}10
666
863
 
667
- 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 for β≥2:
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:
668
865
 
669
- In terms of the array notation, β+1 tells us how many numbers are in the array and the digits of α tell us the what those numbers are. For example: 1.2345!Aa4 = (1,2,3,4,5)|10
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, !1.2345Aa4 = 10{ω^4+ω^3\*2+ω^2\*3+ω\*4+5}10 and 10{4}10 < 1.2345Aa4 < 10{4}10{4}10
670
867
 
671
- And in terms of FGH ordinals, β gives us the maximum power of ω and the digits of α give us the coefficents of the various powers of ω: 1.2345!Aa4 \~ f\_ω^4+ω^3\*2+ω^2\*3+ω\*4+5\_(10). Actually, these neat relations are also true for β=1 and α≥2, so 2.5!Aa1 = (2,5)|10.
868
+ 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.
672
869
 
673
870
  ### Higher dimensional arrays and @Aa
674
871
 
675
- With the definition of the array notation and the symbol !, one can easily define palanar array notation function. In this notation, the comma is short for \[0], and the dimensional seperator is \[1], ζ's represent 0's and dimensional seperators (or can be empty) and κ zeroes. κ+1 zerores means a group of zeroes and dimensional seperators starting with at least 1 zero. κ zeroes is that but it doesn't need to start with a zero.
676
-
677
- (i) Other rules are the same from linear array notation
872
+ With the definition of the extended arrow operation and the symbol !, one can easily define new operations up to ω^ω^ω level.
678
873
 
679
- (ii) (β,γ,δ,...,μ+1\[1]0,ζ)|α = (β,γ,δ,...,μ\[1]1,0,0,ζ)|10^(x-1) for 1\<x<2
874
+ By adding ! before a letter notation, it adds a ω^ layer (likes the same ordinal but changes from HH to FGH). Aa represents ω level, so !Aa represents ω^ω level. Then we can define !Ab (ω^(ω+1)), !Ac, !Ad, ..., !Az with the same meaning as !Aa, and !Ba (ω^(ω\*2)), !Bb, !Bc, ..., !Bz, !Aaa, etc. Comparing these with the previous letters, we can see that notations with ! symbol have a more ω^ than those without ! symbol. Fractional number of rows, columns, etc.. are defined in the same way.
680
875
 
681
- (iii) (β,γ,δ,...,μ+1\[1]0,ζ)|α = (β,γ,δ,...,μ\[1]10^frac(x),0,...,0,ζ)|10 with int(x) 0's for x=>2
876
+ Now, all that is left to do is to define @Aa, which has ω^ω^ω level.
682
877
 
683
- (iv) (β,γ,δ,...,α\[1]0,ζ)|10, κ = frac(α)\*10
878
+ - @Aaα = 10{ω^(ω^int(α)\*frac(α))}10
684
879
 
685
- It equals to (β,γ,δ,...,int(α)\[1]10^frac(κ),0,...,0,ζ)|10 with int(κ) 0's where κ >=1 or there is only 1 \[1] and there is a 1 before it, or (β,γ,δ,...,int(α)\[1]frac(κ),ζ)|10 otherwise
686
-
687
- (v) (...\[1]0,...,0,β,γ...)|α = (...\[1]β,γ...)|α
880
+ ### Nested arrays and more symbols
688
881
 
689
- Rule 2 and 3 are the case where the last nonzero entry is at the end of a plane and is an integer. Rule 4 is when the last nonzero entry is at the end of a plane, you use the fractional part of the last entry, and put it in the next row.
882
+ The Definiton of more symbols is similar to the definition of @Aa.
690
883
 
691
- By adding ! before a letter notation, it changes from HH to FGH. Aa represents H\_ω, so !Aa represents f\_ω which equals to H\_ω^ω. Then we can define !Ab (f\_ω^(ω+1)_(10) in FGH), !Ac, !Ad,..., !Az with the same meaning as !Aa, and !Ba(f\_ω^(ω2)_(10) in FGH), !Bb, !Bc, ..., !Bz, !Aaa, etc. Comparing these with the previous letters, we can see that notations with ! symbol have a more ω^ in FGH than those without ! symbol.
884
+ - \#Aaα \~ 10{ω^ω^(ω^int(α)\*frac(α))}10
692
885
 
693
- Fractional number of rows, columns, etc.. are defined in the same way as in the linear array notation, \[0] is the comma. ζ is an array of 0's and dimensional seperators.
886
+ - \$Aaα \~ 10{ω^ω^ω^(ω^int(α)\*frac(α))}10
694
887
 
695
- For level comparison, first compare the levels of the highest-leveled seperators. If they are equal, then compare the number of highest-leveled subseperators. If there are the same number, compare everything in the seperator after the last occurance of the highest-leveled seperator in a seperator. If they are equal, do that with the string before the last ocurrence of the highest-leveled seperator. If they are the same, the seperators have the same level.
888
+ Then we can define (the β-th symbol or symbol combination)Aaα = 10{ω^ω^...^(ω^int(α)\*frac(α))(β ω's)}10
696
889
 
697
- Now, all that is left to do is to define @Aa, which is about f\_ω^ω^ω\_(10) in the FGH.
890
+ ### Definition of the final letter: ε
698
891
 
699
- For α<2: @Aaα = (1\[1,0,0]0)|α
892
+ ε represents exponent tower layers of ω.
700
893
 
701
- For α≥2: @Aaα = (1\[10^frac(α),0,...,0]0)|10 with int(α) zeros.
894
+ - αεβ \~ 10{ω^ω^...^(ω^int(α)\*frac(α))(β ω's)}10
702
895
 
703
- ### Nested arrays and more symbols
896
+ ### Using dlsdl's letter notation, the biggest number we can define in Metanum is about ε9.007E15
704
897
 
705
- The Definiton of more symbols is similar to the definition of @Aa.
898
+ # format-metanum
706
899
 
707
- \#Aa \~ f\_ω^ω^ω^ω\_(10)
900
+ ## Description
708
901
 
709
- \$Aa \~ f\_ω^ω^ω^ω^ω\_(10)
902
+ Implementation of dlsdl's letter notation for large number library, currently metanum.js
710
903
 
711
- Then we can define (the β-th symbol or symbol combination)Aa = f\_ω^ω^...^ω(β+1 ω's)\_(10)
904
+ ## format options
712
905
 
713
- ### Definition of the final letter: ε
714
-
715
- ε represents exponent tower layers of ω, and it is comparable to f\_ε0\_(10) in the FGH.
716
-
717
- αεβ \~ f\_ω^ω^...^ω(β ω's)\_(α)
906
+ ```javascript
907
+ smallNotationUseE // 1. for small value notations, true then use αE-β,false then use number⁻¹
908
+ smallNotationThreshold // 2. =n then value < 10^-n uses small notation
909
+ 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 do not show decimal part
911
+ useCommas // 5. whether to show commas in normal numbers (true/false)
912
+ sciThreshold // 6. =n then value >= 10^n use scientific notation, same for β in αEβ
913
+ sciSignificantDigits // 7. =n then α has n decimal places in αEβ
914
+ sciDecimalThreshold // 8. =n then β >= 10^n in αEβ only show integer part of α
915
+ singleLetterDigits // 9. α's decimal places in αFβ,αGβ...αZβ
916
+ repeatLetterThreshold // 10. =n then n repeated single letters use next letter notation, n<2 then use 2
917
+ multiLetterDigits // 11. α's decimal places in αAaβ,αAbβ...αAzβ and above
918
+ multiLetterRepeatThreshold// 12. =n then n repeated multi letter combinations use next letter notation, n<2 then use 2
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...), n<2 then use 2
920
+ epsilonSignificantDigits // 14. α's decimal places in αεβ
921
+ ```
718
922
 
719
- #### Using dlsdl's letter notation, the biggest number we can define in Metanum is about ε9.007E15
923
+ ## Cases
924
+
925
+ - 0 ~ 10^-smallNotationThreshold: E- format(αE-β=α×10^-β; E-αEβ=10^-(α×10^β); E-……=10^-……)(smallNotationUseE true) or ……⁻¹(reciprocal)
926
+ - 10^-smallNotationThreshold ~ 10^decimalThreshold: decimal format (decimalPlaces digits)
927
+ - 10^decimalThreshold ~ 10^sciThreshold: comma format(useCommas true) or integer format
928
+ - 10^sciThreshold ~ 10^(10^sciThreshold): exponential as well as αEβ format
929
+ - 10^(10^sciThreshold) ~ 10^^(repeatLetterThreshold+1): n E's αEβformat(EαEβ, EEαEβ, EEEαEβ……)
930
+ - 10^^(repeatLetterThreshold+1) ~ 10^^(10^sciThreshold): αFβ format
931
+ - 10^^(10^sciThreshold) ~ 10^^(10^^(repeatLetterThreshold+1)): FαEβ, FEαEβ, FEEαEβ…… format
932
+ - 10^^(10^^(repeatLetterThreshold+1)) ~ 10^^^(repeatLetterThreshold+1): FαFβ, FFαFβ, FFFαFβ…… format
933
+ - 10^^^(repeatLetterThreshold+1) ~ 10^^^(10^sciThreshold): αGβ format
934
+ - 10^^^(10^sciThreshold) ~ 10^^^(10^^(repeatLetterThreshold+1)): GαEβ, GEαEβ,…… format
935
+ - 10^^^(10^^(repeatLetterThreshold+1)) ~ 10{4}(repeatLetterThreshold+1): GαGβ, GGαGβ,…… format
936
+ - 10{4}(repeatLetterThreshold+1) ~ 10{5}(repeatLetterThreshold+1): αHβ, HαEβ, HEαEβ, HαFβ, HFαFβ, HαGβ, HGαGβ, HαHβ, HHαHβ,…… format
937
+
938
+ …………
939
+
940
+ - 10{22}(repeatLetterThreshold+1) ~ 10{23}(repeatLetterThreshold+1): αZβ format; ZαEβ, ZEαEβ, ……, ZαZβ, ZZαZβ,…… format
941
+ - 10{23}(repeatLetterThreshold+1) ~ 10{10^sciThreshold}10(=10{ω}(10^sciThreshold)): αAaβ format
942
+ - 10{ω}(10^sciThreshold) ~ 10{ω+1}(multiLetterRepeatThreshold+1): AaαEβ, ……, AaαAaβ, AaAaαAaβ…… format
943
+ - 10{ω+1}(multiLetterRepeatThreshold+1) ~ 10{ω+1}(10^sciThreshold): αAbβ format
944
+ - 10{ω+1}(10^sciThreshold) ~ 10{ω+2}(multiLetterRepeatThreshold+1): AbαEβ, ……, AbαAbβ, AbAbαAbβ…… format
945
+ - 10{ω+2}(multiLetterRepeatThreshold+1) ~ 10{ω+2}(10^sciThreshold): αAcβ format
946
+
947
+ …………
948
+
949
+ - 10{ω+25}(multiLetterRepeatThreshold+1) ~ 10{ω+25}(10^sciThreshold): αAzβ format
950
+ - 10{ω+25}(10^sciThreshold) ~ 10{ω+26}(multiLetterRepeatThreshold+1): AzαEβ to AzαAzβ, AzAzαAzβ…… format
951
+ - 10{ω+26}(multiLetterRepeatThreshold+1) ~ 10{ω+10^sciThreshold}10(=10{ω×2}(10^sciThreshold)): αBaβ format
952
+ - 10{ω×2}(10^sciThreshold) ~ 10{ω×2}(multiLetterRepeatThreshold+1): BaαEβ to BaαBaβ, BaBaαBaβ…… format
953
+
954
+ …………
955
+
956
+ - 10{ω×2+26}(multiLetterRepeatThreshold+1) ~ 10{ω×2+10^sciThreshold}10(=10{ω×3}(10^sciThreshold)): αCaβ format
957
+ - 10{ω×3}(10^sciThreshold) ~ 10{ω×3}(multiLetterRepeatThreshold+1): CaαEβ to CaαCaβ, CaCaαCaβ…… format
958
+
959
+ …………
960
+
961
+ - 10{ω×26+25}(multiLetterRepeatThreshold+1) ~ 10{ω×26+25}(10^sciThreshold): αZzβ format
962
+ - 10{ω×26+25}(10^sciThreshold) ~ 10{ω×26+26}(multiLetterRepeatThreshold+1): ZzαEβ to ZzαZzβ, ZzZzαZzβ…… format
963
+ - 10{ω×26+26}(multiLetterRepeatThreshold+1) ~ 10{ω×(10^sciThreshold)}10(=10{ω^2}(10^sciThreshold)): αAaaβ format
964
+ - 10{ω^2}(10^sciThreshold) ~ 10{ω^2}(multiLetterRepeatThreshold+1): AaaαEβ to AaaαAaaβ, AaaAaaαAaaβ…… format
965
+
966
+ …………
967
+
968
+ - 10{……+ω^3×26+ω^2×26+ω×26+26}10 ~ 10{ω^ω}(10^sciThreshold): !αAaβ format
969
+ - 10{ω^ω}(10^sciThreshold) ~ 10{ω^(……ω^3×26+ω^2×26+ω×26+26)}10: !AaαEβ, !αAbβ, !αAaaβ…… format
970
+ - 10{ω^(……+ω^3×26+ω^2×26+ω×26+26)}10 ~ 10{ω^ω^ω}(10^sciThreshold): @αAaβ format
971
+ - 10{ω^ω^ω}(10^sciThreshold) ~ 10{ω^ω^(……ω^3×26+ω^2×26+ω×26+26)}10: @AaαEβ, @αAbβ, @αAaaβ…… format
972
+ - 10{ω^ω^(……+ω^3×26+ω^2×26+ω×26+26)}10 ~ 10{ω^ω^ω^ω}(10^sciThreshold): #αAaβ format
973
+ - 10{ω^ω^ω^ω}(10^sciThreshold) ~ 10{ω^ω^ω^(……ω^3×26+ω^2×26+ω×26+26)}10: #AaαEβ, #αAbβ, #αAaaβ…… format
974
+
975
+ …………
976
+
977
+ - 10{ω^ω^……^ω}10 ~ 10{ω^ω^…(10^sciThreshold ω^'s)…^ω}10: αεβformat
978
+ - 10{ω^ω^…(10^sciThreshold ω^'s)…^ω}10 ~ limit of metanum.js: εαEβformat
979
+
980
+ ### format-metanum rules (v2.0)
981
+
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):
985
+ `format(arrow(3,4.1,3))` → `G1.161G897`,
986
+ `format(arrow(3,4.3,3))` → `1.285H8`,
987
+ `format(hardy(4166))` → `2.397G5`.
988
+ - **+count collapse**: n operations of level L applied to a Γ^{L+1}-structured
989
+ value collapse to ONE Γ^{L+1} with arg + n (F⁴(G(1.3796)) = G(5.3796)),
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.
1053
+
1054
+ ### Precision budget (maxRows / maxCols)
1055
+
1056
+ Every hyperoperation is stored EXACTLY while it fits the array budget and
1057
+ approximately once it does not:
1058
+
1059
+ - exact capacity = maxRows+maxCols−2 finite hyperoperation levels:
1060
+ `arrow(x,L,z)` holds `r0 = [a0, a1, …, a(maxCols-1)]` (levels 0…maxCols−1)
1061
+ plus the ordinal rows `[a(level+1), level]` for levels
1062
+ maxCols … maxRows+maxCols−2 (maxRows−1 rows), so
1063
+ `arrow(10,39,10)` is exact at maxRows=maxCols=20 (r0 of 20 entries, 19 rows,
1064
+ top level 38) and `arrow(10,40,10)` is the first truncated value.
1065
+ - beyond the budget the expansion follows the truncation rule: keep the
1066
+ LARGEST maxRows−1 ordinal rows in array[1]…array[maxRows−1] sorted ascending,
1067
+ increment array[1][0] by 1 (the dropped lower chain collapses into one extra
1068
+ operation there) and default array[0] to [10]. This applies to arrow, BEAF
1069
+ and the rule-1…4 ordinal cascades alike
1070
+ (`iter(3,5)` → `[[10],[2,2,2,0,2,2],…,[1,2,2,2,2,2]]`).
1071
+ - layer ≥ 1 results are stored in STANDARD form: an ordinal row [count, k]
1072
+ whose level is the finite k merges into r0 (r0[k] += count) and the layer
1073
+ drops as far as it can, since a layer-L bracket β that is a finite
1074
+ ω-polynomial equals the layer-(L−1) value with the single row [1|β]:
1075
+ `cube(10,3)` `[[10],[1,3],[1,0,1]]` → `[[10,0,0,1],[1,0,1]]`;
1076
+ layer2 `[[5],[3,1]]` → `[[5,3]]` → layer1 `[[10],[1,5,3]]` = 10{ω^(ω*3+5)}10;
1077
+ layer3 `[[3]]` → layer2 `[[0,0,0,1]]` → layer1 `[[10],[1,0,0,0,1]]`
1078
+ = 10{ω^ω^3}10.
720
1079
 
721
1080
  # Changelog
722
1081
 
1082
+ - 2026-9-15 v2.0: Add hyper-root & hyper-log, hardy function, fractional hyperoperation inputs, fix BEAF operation level and format
723
1083
  - 2026-8-18 v1.4 Support hyper operation >MSI and fix format-metanum bugs
724
1084
  - 2026-7-31 v1.3 Add format-metanum.js, fix basic operations, hyper operations and BEAF bugs
725
1085
  - 2026-7-9 v1.2 Add more hyper operations up to ε₀, add BEAF operation and fix bugs