Exact by default
1/3 + 1/6 is 1/2, not 0.4999…. A decimal appears only when you type one, and the result carries a trailing point to say it is approximate.
sqrt(12) gives you 2√3, not 3.4641016151377544.
Fractions never quietly become decimals, integers are as large as they need to be, and precision is whatever you ask for.
Rust kernelMIT licensedNo network calls3 MB installer
Loading the kernel…
Nothing is sent to a server. The whole engine is compiled to WebAssembly and runs in your browser — pull the network cable and reload, it still works.
1/3 + 1/6 is 1/2, not 0.4999…. A decimal appears only when you type one, and the result carries a trailing point to say it is approximate.
π is stored as an exact constant. N(pi, 10000) expands ten thousand digits from it in a couple of milliseconds, rather than conjuring digits out of an already-rounded value.
If an integral has no closed form it says so. If a differential equation is beyond it, it says so. A divergent definite integral is refused rather than handed back as something that looks like a number. Every closed form is substituted back into the original equation before you see it.
No HTTP client anywhere in the dependency tree, no fetch in the front end, and a default-src 'self' CSP. Works on a plane, on an air-gapped network, in a locked-down lab. Touches no registry keys and leaves nothing behind.
| Arithmetic | 2^100 · 50! · 1/3+1/6 |
|---|---|
| Algebra | factor(x^4+4) · expand((x+y)^5) · apart(1/(x^3-x), x) |
| Calculus | diff(x^x, x) · integrate(x*atan(x), x) · limit((1+1/n)^n, n, inf) |
| Multivariable | gradient(f, [x,y]) · curl([-y,x,0], [x,y,z]) |
| Differential equations | dsolve(y'' + 4*y' + 5*y = 0, y, x) |
| Linear algebra | det(M) · inv(M) · eigenvals([2,1;1,3]) |
| Number theory | isprime(1000000007) · factorint(600851475143) |
| Plotting | plot(sin(x)/x, x, -20, 20) (desktop) |
The desktop build adds plotting, a variables panel and a help panel. The kernel is the same one running above.