ludic/selfhost
Orkuncakilkaya 6e6467b515
Some checks are pending
docs / build-and-deploy (push) Waiting to run
feat(stdlib): Math.exp/log/pow + Ease.elastic transcendentals (issue #25)
Finish the unblocked "Math / Ease" half of #25: the fixed-point
transcendentals deferred from #2. Vec.* stays blocked on the vec2 type
in #1.

- Math.exp, Math.log (natural), Math.pow — deterministic Q16.16 via two
  new prelude fns in emit_math_prelude: @fn_fx_exp2 (range-reduced 5th-order
  Taylor 2^f, then a clamped shift by the integer part) and @fn_fx_log2
  (llvm.ctlz for the exponent + an atanh series on (m-1)/(m+1) for the
  mantissa). exp=2^(x·log2 e), log=log2(x)·ln2, pow=2^(b·log2 a).
- Ease.elastic — ease-out elastic 2^(-10t)·sin((10t-0.75)·2pi/3)+1.
- Pure integer IR, so bit-identical on every platform. Results must fit the
  Q16.16 range (|x| < 32768); larger magnitudes saturate (documented).

Test selfhost/tests/transcend.ludic (registered in the self-host suite) +
docs for all four. Reseeded; the C-free bootstrap fixpoint holds. All suites
green (24 self-host, 45 regression, 29 tool).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 01:19:44 +03:00
..
golden feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
tests feat(stdlib): Math.exp/log/pow + Ease.elastic transcendentals (issue #25) 2026-08-30 01:19:44 +03:00
ast.ludic Networking N2–N6, and a fully C-free toolchain 2026-08-29 15:08:23 +03:00
buf.ludic Phase 8b: modern names for the raw-memory and OS/IO primitives 2026-08-28 02:55:24 +03:00
emit_addr.ludic Phase 8a: finish typed indexing — fixeds/ptrs buffers (retire peekf/pokef/peekp/pokep/str_len) 2026-08-28 02:49:40 +03:00
emit_collide.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
emit_color.ludic Language: named colors, namespaced Screen/Input/Random/Map API, named args 2026-08-29 16:05:55 +03:00
emit_colorfn.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
emit_core.ludic feat(lang,stdlib): 64-bit long type + 64-bit Hash variants (issue #17) 2026-08-30 01:01:06 +03:00
emit_decl.ludic feat(lang,stdlib): 64-bit long type + 64-bit Hash variants (issue #17) 2026-08-30 01:01:06 +03:00
emit_ease.ludic feat(stdlib): Math.exp/log/pow + Ease.elastic transcendentals (issue #25) 2026-08-30 01:19:44 +03:00
emit_ecs.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
emit_expr.ludic feat(lang,stdlib): 64-bit long type + 64-bit Hash variants (issue #17) 2026-08-30 01:01:06 +03:00
emit_game.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
emit_hash.ludic feat(lang,stdlib): 64-bit long type + 64-bit Hash variants (issue #17) 2026-08-30 01:01:06 +03:00
emit_head.ludic feat(lang,stdlib): 64-bit long type + 64-bit Hash variants (issue #17) 2026-08-30 01:01:06 +03:00
emit_intrin.ludic Phase 8b: modern names for the raw-memory and OS/IO primitives 2026-08-28 02:55:24 +03:00
emit_intrin2.ludic Phase 8b: modern names for the raw-memory and OS/IO primitives 2026-08-28 02:55:24 +03:00
emit_list.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
emit_machine.ludic Language: named colors, namespaced Screen/Input/Random/Map API, named args 2026-08-29 16:05:55 +03:00
emit_math.ludic feat(stdlib): Math.exp/log/pow + Ease.elastic transcendentals (issue #25) 2026-08-30 01:19:44 +03:00
emit_mem.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
emit_net.ludic Networking N2–N6, and a fully C-free toolchain 2026-08-29 15:08:23 +03:00
emit_new.ludic Phase 7g: the compiler builds its IR with interpolation, not + 2026-08-28 01:30:37 +03:00
emit_query.ludic Phase 7g: the compiler builds its IR with interpolation, not + 2026-08-28 01:30:37 +03:00
emit_save.ludic Networking N2–N6, and a fully C-free toolchain 2026-08-29 15:08:23 +03:00
emit_spawn.ludic Networking N2–N6, and a fully C-free toolchain 2026-08-29 15:08:23 +03:00
emit_stmt.ludic feat(lang,stdlib): 64-bit long type + 64-bit Hash variants (issue #17) 2026-08-30 01:01:06 +03:00
emit_text.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
emit_time.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
emit_ui.ludic Phase 7i: byte indexing p[i] / p[i] = v (retire peek8/poke8) 2026-08-28 02:01:59 +03:00
io.ludic Phase 7k: bytes(n) / words(n) allocators (retire mem_alloc) 2026-08-28 02:26:15 +03:00
lex.ludic feat(stdlib): namespaced standard library (issue #2) 2026-08-30 00:26:19 +03:00
ludicc.seed.ll feat(stdlib): Math.exp/log/pow + Ease.elastic transcendentals (issue #25) 2026-08-30 01:19:44 +03:00
main.ludic Phase 8b: modern names for the raw-memory and OS/IO primitives 2026-08-28 02:55:24 +03:00
parse.ludic Language: named colors, namespaced Screen/Input/Random/Map API, named args 2026-08-29 16:05:55 +03:00
parse_game.ludic Networking N2–N6, and a fully C-free toolchain 2026-08-29 15:08:23 +03:00
str.ludic Phase 7k: bytes(n) / words(n) allocators (retire mem_alloc) 2026-08-28 02:26:15 +03:00