eyeling 1.16.2 → 1.16.4

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.
Files changed (51) hide show
  1. package/HANDBOOK.md +4 -0
  2. package/README.md +0 -1
  3. package/examples/ershov-mixed-computation.n3 +106 -0
  4. package/examples/output/ershov-mixed-computation.n3 +15 -0
  5. package/eyeling.js +510 -263
  6. package/lib/cli.js +22 -12
  7. package/lib/engine.js +488 -251
  8. package/package.json +2 -3
  9. package/arctifacts/README.md +0 -59
  10. package/arctifacts/ackermann.html +0 -678
  11. package/arctifacts/auroracare.html +0 -1297
  12. package/arctifacts/bike-trip.html +0 -752
  13. package/arctifacts/binomial-theorem.html +0 -631
  14. package/arctifacts/bmi.html +0 -511
  15. package/arctifacts/building-performance.html +0 -750
  16. package/arctifacts/clinical-care.html +0 -726
  17. package/arctifacts/collatz.html +0 -403
  18. package/arctifacts/complex.html +0 -321
  19. package/arctifacts/control-system.html +0 -482
  20. package/arctifacts/delfour.html +0 -849
  21. package/arctifacts/earthquake-epicenter.html +0 -982
  22. package/arctifacts/eco-route.html +0 -662
  23. package/arctifacts/euclid-infinitude.html +0 -564
  24. package/arctifacts/euler-identity.html +0 -667
  25. package/arctifacts/exoplanet-transit.html +0 -1000
  26. package/arctifacts/faltings-theorem.html +0 -1046
  27. package/arctifacts/fibonacci.html +0 -299
  28. package/arctifacts/fundamental-theorem-arithmetic.html +0 -398
  29. package/arctifacts/godel-numbering.html +0 -743
  30. package/arctifacts/gps-bike.html +0 -759
  31. package/arctifacts/gps-clinical-bench.html +0 -792
  32. package/arctifacts/graph-french.html +0 -449
  33. package/arctifacts/grass-molecular.html +0 -592
  34. package/arctifacts/group-theory.html +0 -740
  35. package/arctifacts/health-info.html +0 -833
  36. package/arctifacts/kaprekar-constant.html +0 -576
  37. package/arctifacts/lee.html +0 -805
  38. package/arctifacts/linked-lists.html +0 -502
  39. package/arctifacts/lldm.html +0 -612
  40. package/arctifacts/matrix-multiplication.html +0 -502
  41. package/arctifacts/matrix.html +0 -651
  42. package/arctifacts/newton-raphson.html +0 -944
  43. package/arctifacts/peano-factorial.html +0 -456
  44. package/arctifacts/pi.html +0 -363
  45. package/arctifacts/polynomial.html +0 -646
  46. package/arctifacts/prime.html +0 -366
  47. package/arctifacts/pythagorean-theorem.html +0 -468
  48. package/arctifacts/rest-path.html +0 -469
  49. package/arctifacts/roots-of-unity.html +0 -363
  50. package/arctifacts/turing.html +0 -409
  51. package/arctifacts/wind-turbines.html +0 -726
@@ -1,321 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>Complex Identities — Explanatory Proofs</title>
7
- <style>
8
- :root {
9
- --fg: #111;
10
- --bg: #fff;
11
- --muted: #666;
12
- --accent: #2b6cb0;
13
- }
14
- @media (prefers-color-scheme: dark) {
15
- :root {
16
- --fg: #eee;
17
- --bg: #0b0b0b;
18
- --muted: #aaa;
19
- --accent: #63b3ed;
20
- }
21
- }
22
- html,
23
- body {
24
- margin: 0;
25
- padding: 0;
26
- color: var(--fg);
27
- background: var(--bg);
28
- font:
29
- 16px/1.6 system-ui,
30
- -apple-system,
31
- Segoe UI,
32
- Roboto,
33
- Helvetica,
34
- Arial,
35
- 'Apple Color Emoji',
36
- 'Segoe UI Emoji';
37
- }
38
- main {
39
- max-width: 940px;
40
- margin: 0 auto;
41
- padding: 2.5rem 1.25rem 4rem;
42
- }
43
- header h1 {
44
- font-size: clamp(1.6rem, 2.5vw + 1rem, 2.4rem);
45
- margin: 0 0 0.25rem;
46
- }
47
- header p {
48
- margin: 0;
49
- color: var(--muted);
50
- }
51
- section {
52
- background: color-mix(in srgb, var(--accent) 4%, transparent);
53
- border: 1px solid color-mix(in srgb, var(--accent) 15%, transparent);
54
- border-radius: 14px;
55
- padding: 1rem 1.1rem;
56
- margin: 1.1rem 0 1.4rem;
57
- }
58
- section h2 {
59
- margin: 0 0 0.25rem;
60
- font-size: 1.15rem;
61
- }
62
- hr {
63
- border: none;
64
- border-top: 1px dashed color-mix(in srgb, var(--fg) 25%, transparent);
65
- margin: 0.6rem 0 0.8rem;
66
- }
67
- p {
68
- margin: 0.35rem 0;
69
- }
70
- code,
71
- pre {
72
- font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;
73
- }
74
- footer {
75
- margin-top: 2.5rem;
76
- color: var(--muted);
77
- font-size: 0.9rem;
78
- }
79
- .tag {
80
- font-weight: 700;
81
- }
82
- </style>
83
- </head>
84
- <body>
85
- <main>
86
- <header>
87
- <h1>Complex identities — explanatory proofs</h1>
88
- </header>
89
-
90
- <section>
91
- <h2>What this is?</h2>
92
- <p>
93
- A single-page explainer of classic complex-number identities. Each card states the identity, gives a short
94
- reason, and then performs a numeric check right in the browser to confirm the result. No external libraries or
95
- servers are used.
96
- </p>
97
- <p class="muted">Numbers are shown to ~12 decimals.</p>
98
- </section>
99
-
100
- <section id="case1">
101
- <h2>sqrt(-1)</h2>
102
- <hr />
103
- <p><span class="tag">Answer</span>: √(-1) = i</p>
104
- <p>
105
- <span class="tag">Reason</span>: −1 = e<sup>iπ</sup> (principal). √(e<sup>iπ</sup>) = e<sup>iπ/2</sup> = i.
106
- </p>
107
- <p><span class="tag">Check</span>: i² = <span id="check1"></span></p>
108
- </section>
109
-
110
- <section id="case2">
111
- <h2>exp(i·π) + 1</h2>
112
- <hr />
113
- <p><span class="tag">Answer</span>: e<sup>iπ</sup> + 1 = 0</p>
114
- <p><span class="tag">Reason</span>: Euler: e<sup>iθ</sup> = cos θ + i sin θ ⇒ e<sup>iπ</sup> = −1.</p>
115
- <p><span class="tag">Check</span>: e<sup>iπ</sup> + 1 ≈ <span id="check2"></span></p>
116
- </section>
117
-
118
- <section id="case3">
119
- <h2>log(-1)</h2>
120
- <hr />
121
- <p><span class="tag">Answer</span>: log(−1) = iπ (principal)</p>
122
- <p><span class="tag">Reason</span>: log z = ln|z| + i Arg(z); |−1| = 1 ⇒ ln|z| = 0, Arg(−1) = π.</p>
123
- <p><span class="tag">Check</span>: exp(log(−1)) = <span id="check3"></span></p>
124
- </section>
125
-
126
- <section id="case4">
127
- <h2>log(-i)</h2>
128
- <hr />
129
- <p><span class="tag">Answer</span>: log(−i) = −iπ/2 (principal)</p>
130
- <p><span class="tag">Reason</span>: |−i| = 1, Arg(−i) = −π/2 ⇒ log(−i) = 0 + i(−π/2).</p>
131
- <p><span class="tag">Check</span>: exp(log(−i)) = <span id="check4"></span></p>
132
- </section>
133
-
134
- <section id="case5">
135
- <h2>log(i·x) with x = 0.73</h2>
136
- <hr />
137
- <p><span class="tag">Answer</span>: log(i·x) = ln x + iπ/2 (x&gt;0)</p>
138
- <p><span class="tag">Reason</span>: Arg(i x) = π/2 (principal), |i x| = x ⇒ ln|·| = ln x.</p>
139
- <p>
140
- <span class="tag">Check</span>: exp(log(i·x)) ≈ <span id="check5a"></span> &nbsp; and &nbsp; i·x =
141
- <span id="check5b"></span>
142
- </p>
143
- </section>
144
-
145
- <section id="case6">
146
- <h2>cos(i·x) with x = 0.73</h2>
147
- <hr />
148
- <p><span class="tag">Answer</span>: cos(i x) = cosh x</p>
149
- <p>
150
- <span class="tag">Reason</span>: cos z = (e<sup>iz</sup> + e<sup>−iz</sup>)/2; set z = i x ⇒ (e<sup>−x</sup> +
151
- e<sup>x</sup>)/2.
152
- </p>
153
- <p>
154
- <span class="tag">Check</span>: cos(i x) ≈ <span id="check6a"></span> &nbsp; ; &nbsp; cosh(x) =
155
- <span id="check6b"></span>
156
- </p>
157
- </section>
158
-
159
- <section id="case7">
160
- <h2>sin(i·x) with x = 0.73</h2>
161
- <hr />
162
- <p><span class="tag">Answer</span>: sin(i x) = i·sinh x</p>
163
- <p>
164
- <span class="tag">Reason</span>: sin z = (e<sup>iz</sup> − e<sup>−iz</sup>)/(2i); set z = i x ⇒ i(e<sup
165
- >−x</sup
166
- >
167
- − e<sup>x</sup>)/2.
168
- </p>
169
- <p>
170
- <span class="tag">Check</span>: sin(i x) ≈ <span id="check7a"></span> &nbsp; ; &nbsp; i·sinh(x) =
171
- <span id="check7b"></span>
172
- </p>
173
- </section>
174
-
175
- <section id="case8">
176
- <h2>asin(i·x) with x = 0.73</h2>
177
- <hr />
178
- <p><span class="tag">Answer</span>: asin(i x) = i·asinh x</p>
179
- <p>
180
- <span class="tag">Reason</span>: Definition asin z = −i·log( i z + √(1 − z²) ); put z = i x and use √(1 + x²)
181
- − x &gt; 0; also ln(√(1 + x²) − x) = −ln(x + √(1 + x²)).
182
- </p>
183
- <p>
184
- <span class="tag">Check</span>: i·asinh(x) = <span id="check8a"></span> &nbsp; ; &nbsp; −i·ln(√(1 + x²) − x) =
185
- <span id="check8b"></span>
186
- </p>
187
- </section>
188
-
189
- <section id="case9">
190
- <h2>sqrt(i)</h2>
191
- <hr />
192
- <p><span class="tag">Answer</span>: √i = (1 + i)/√2</p>
193
- <p>
194
- <span class="tag">Reason</span>: i = e<sup>iπ/2</sup>; √i = e<sup>iπ/4</sup> = cos(π/4) + i sin(π/4) = (1 +
195
- i)/√2.
196
- </p>
197
- <p><span class="tag">Check</span>: (√i)² ≈ <span id="check9"></span></p>
198
- </section>
199
-
200
- <section id="case10">
201
- <h2>acos(2)</h2>
202
- <hr />
203
- <p><span class="tag">Answer</span>: acos(2) = i·ln(2 + √3)</p>
204
- <p>
205
- <span class="tag">Reason</span>: For |z| &gt; 1, acos z = i ln(z + √(z² − 1)) (principal). For z = 2: √3 and
206
- ln(2 + √3).
207
- </p>
208
- <p>
209
- <span class="tag">Check</span>: cos(acos(2)) = cos(i·ln(2 + √3)) = cosh(ln(2 + √3)) ≈
210
- <span id="check10"></span>
211
- </p>
212
- </section>
213
-
214
- <section id="case11">
215
- <h2>asin(2)</h2>
216
- <hr />
217
- <p><span class="tag">Answer</span>: asin(2) = π/2 − i·ln(2 + √3)</p>
218
- <p><span class="tag">Reason</span>: asin z = π/2 − acos z and acos(2) = i ln(2 + √3).</p>
219
- <p><span class="tag">Check</span>: sin(asin(2)) = cosh(ln(2 + √3)) ≈ <span id="check11"></span></p>
220
- </section>
221
-
222
- <section id="case12">
223
- <h2>i^i</h2>
224
- <hr />
225
- <p><span class="tag">Answer</span>: i^i = e<sup>−π/2</sup></p>
226
- <p>
227
- <span class="tag">Reason</span>: i^i = e^{i log(i)} with principal log(i) = iπ/2 ⇒ exponent = −π/2 (real).
228
- </p>
229
- <p><span class="tag">Check</span>: numeric value ≈ <span id="check12"></span></p>
230
- </section>
231
-
232
- <footer>Numeric tolerance ~1e−12.</footer>
233
- </main>
234
-
235
- <script>
236
- (function () {
237
- const PI = Math.PI;
238
-
239
- // Complex helpers (minimal)
240
- const c = (re, im) => ({ re, im });
241
- const add = (z, w) => c(z.re + w.re, z.im + w.im);
242
- const mul = (z, w) => c(z.re * w.re - z.im * w.im, z.re * w.im + z.im * w.re);
243
- const square = (z) => mul(z, z);
244
- const expComplex = (a, b) => c(Math.exp(a) * Math.cos(b), Math.exp(a) * Math.sin(b));
245
-
246
- const fmtC = (z, d = 12) => {
247
- const r = +z.re.toFixed(d);
248
- const i = +z.im.toFixed(d);
249
- if (Math.abs(i) < Math.pow(10, -d)) {
250
- return r.toFixed(d);
251
- }
252
- if (Math.abs(r) < Math.pow(10, -d)) {
253
- return i.toFixed(d) + 'i';
254
- }
255
- const sign = i >= 0 ? ' + ' : ' - ';
256
- return r.toFixed(d) + sign + Math.abs(i).toFixed(d) + 'i';
257
- };
258
-
259
- const cosh = (x) => 0.5 * (Math.exp(x) + Math.exp(-x));
260
- const sinh = (x) => 0.5 * (Math.exp(x) - Math.exp(-x));
261
-
262
- const setText = (id, text) => {
263
- const el = document.getElementById(id);
264
- if (el) el.textContent = text;
265
- };
266
-
267
- // Case 1
268
- const i = c(0, 1);
269
- setText('check1', fmtC(square(i)));
270
-
271
- // Case 2
272
- const eipi = expComplex(0, PI);
273
- setText('check2', fmtC(add(eipi, c(1, 0))));
274
-
275
- // Case 3
276
- const exp_log_minus1 = expComplex(0, PI);
277
- setText('check3', fmtC(exp_log_minus1));
278
-
279
- // Case 4
280
- const exp_log_minusi = expComplex(0, -PI / 2);
281
- setText('check4', fmtC(exp_log_minusi));
282
-
283
- // Case 5 (x = 0.73)
284
- const x = 0.73;
285
- const exp_log_ix = expComplex(Math.log(x), PI / 2);
286
- setText('check5a', fmtC(exp_log_ix));
287
- setText('check5b', fmtC(c(0, x)));
288
-
289
- // Case 6 cos(i x) = cosh x
290
- const cos_ix = c(0.5 * (Math.exp(-x) + Math.exp(x)), 0);
291
- setText('check6a', fmtC(cos_ix));
292
- setText('check6b', cosh(x).toFixed(12));
293
-
294
- // Case 7 sin(i x) = i*sinh x
295
- const sin_ix = c(0, 0.5 * (Math.exp(-x) - Math.exp(x)));
296
- setText('check7a', fmtC(sin_ix));
297
- setText('check7b', fmtC(c(0, sinh(x))));
298
-
299
- // Case 8 asin(i x) = i asinh x
300
- const asinhx = Math.asinh(x);
301
- const alt = -Math.log(Math.sqrt(1 + x * x) - x);
302
- setText('check8a', fmtC(c(0, asinhx)));
303
- setText('check8b', fmtC(c(0, alt)));
304
-
305
- // Case 9 sqrt(i) = (1+i)/√2
306
- const rooti = c(1 / Math.sqrt(2), 1 / Math.sqrt(2));
307
- setText('check9', fmtC(square(rooti)));
308
-
309
- // Case 10 acos(2)
310
- const y = Math.log(2 + Math.sqrt(3));
311
- setText('check10', cosh(y).toFixed(12));
312
-
313
- // Case 11 asin(2)
314
- setText('check11', cosh(y).toFixed(12));
315
-
316
- // Case 12 i^i
317
- setText('check12', Math.exp(-PI / 2).toFixed(12));
318
- })();
319
- </script>
320
- </body>
321
- </html>