Forms — interactive mathematics. Four handles, one expression.
  • Rust 46.5%
  • JavaScript 20.7%
  • TypeScript 17.1%
  • HTML 10.4%
  • Python 3.5%
  • Other 1.8%
Find a file
Rowan Valle 9db17130e7 Chunk 1b: the snapping removed
No f64 is snapped to a fraction anywhere in the engine. math_fns::f64_to_rational
and solve.rs approx_rational are deleted; f64_to_term becomes f64_to_real.

Exact where the mathematics is exact, computed without f64:
- sin, cos, tan at k*pi/n for n in 1, 2, 3, 4, 6, in the form the engine gives
  sqrt(3)/2 itself; tan at odd multiples of pi/2 is undefined
- exp(0), ln(1), ln(e), log, log10 and log2 of powers of the base, cbrt of cubes
- abs, floor, ceil, round (half away from zero), sign; min and max return the
  winning argument; exact ordering for exact numbers
- mean, median, variance (n - 1), stdev as sqrt of the exact variance
- not, the fuzzy and Lukasiewicz family
- sum and product exact up to 10,000 terms, a Real beyond
Everything else is a Real: exp(-30) is 9.35762296884017e-14, not 0.

The linear solver keeps constant coefficients as terms: solve(pi*x = 1, x) is
1/pi, solve(exp(-30)*x = 1, x) is exp(30) (it was "no solution"). It divides only
by a coefficient known nonzero (simplify::is_nonzero_constant, shared with the
cancellation rule; an f64 test until the precision ladder).

catalog::FnEntry gains returns (Integer, ExactForExact, Approximate, Structure)
on all 103 entries; tests/catalog_coverage.rs enforces it on the answer path.

Answer ratchet rebaselined (seed 1, 4200 cases), every move traced case by case
against a build of 7a609b8:
  false_exact 175 -> 0, wrong_value 20 -> 9
  real_f64 1365 -> 1560: the false exact answers, now honestly approximate, and
    27 atanh(tanh(r)) cases the snapper had rounded back to r
  sym_wrong 14 -> 19: exact sqrt(p/q) answers with 46-digit p, q (p/q = |x|^3
    exactly) that the oracle's re-parse cannot read (literals above 2^63)
  exact_agree 1383 -> 1345, real_full 21 -> 35, sym_agree 627 -> 637
Full numeric run, 100k cases: 0 confirmed engine bugs.

Tests: truthful_value.rs 25, catalog_coverage.rs 6, vitest 34; Rust 610.
Debt logged: until's signature, fourier left unsimplified, the f64 nonzero test.
2026-10-20 12:21:38 -04:00
.claude Chunk 1b: the snapping removed 2026-10-20 12:21:38 -04:00
assets forms: 8 rendering engines, separation of concerns, symbolic differentiation 2026-04-16 11:12:22 -04:00
docs/decisions Records: ADR 0002 corrected and resolved (shared engine); plan of record; handoff current 2026-10-20 11:23:07 -04:00
manual refactor: eval modularization + master plan consolidation + manual corrections 2026-04-21 17:58:52 -04:00
math-core Chunk 1b: the snapping removed 2026-10-20 12:21:38 -04:00
math-wasm Chunk 1a: reals that work, values that are true 2026-10-20 12:03:49 -04:00
public refactor: eval modularization + master plan consolidation + manual corrections 2026-04-21 17:58:52 -04:00
scripts scripts/deploy.sh: the deploy procedure as code, refusing unless clean, pushed and green 2026-10-20 11:21:40 -04:00
sources refactor: eval modularization + master plan consolidation + manual corrections 2026-04-21 17:58:52 -04:00
src Chunk 1b: the snapping removed 2026-10-20 12:21:38 -04:00
tests forms: 8 rendering engines, separation of concerns, symbolic differentiation 2026-04-16 11:12:22 -04:00
.gitignore feat: BigRational + eval refactor + cited manual + sliders + implicit curves + Vite 2026-04-20 19:17:26 -04:00
Cargo.lock feat(math-core): adopt astro-float arbitrary-precision backend (Razor B0) 2026-06-13 10:32:42 -04:00
Cargo.toml feat: BigRational + eval refactor + cited manual + sliders + implicit curves + Vite 2026-04-20 19:17:26 -04:00
check.sh check.sh: every gate in one place, and a smoke test that sees the curve 2026-10-20 11:21:12 -04:00
favicon.png meta: favicon, Open Graph tags, page title 2026-04-16 12:30:11 -04:00
index.html fix: equation input audit remediation 2026-06-12 12:43:00 -04:00
manual.json refactor: eval modularization + master plan consolidation + manual corrections 2026-04-21 17:58:52 -04:00
no-dead-symbols.md docs: No Dead Symbols — FORMS design law 2026-06-12 12:42:47 -04:00
package-lock.json Clippy clean with warnings denied: all 62 findings fixed 2026-10-20 11:09:20 -04:00
package.json scripts/deploy.sh: the deploy procedure as code, refusing unless clean, pushed and green 2026-10-20 11:21:40 -04:00
ROADMAP.md docs: one deploy procedure, and it is not this one 2026-09-22 17:30:55 -04:00
style.css feat: stable coordinate frame, variable slot model, start-alive seed 2026-06-12 12:42:47 -04:00
tsconfig.json Clippy clean with warnings denied: all 62 findings fixed 2026-10-20 11:09:20 -04:00
tsconfig.test.json Clippy clean with warnings denied: all 62 findings fixed 2026-10-20 11:09:20 -04:00
vite.config.ts feat: BigRational + eval refactor + cited manual + sliders + implicit curves + Vite 2026-04-20 19:17:26 -04:00