nx_unicode_math.nx
buildroot/runtime/nx_unicode_math.nx
about
nx_unicode_math.nx -- Unicode math symbol library, no LaTeX needed.
Per user 2026-05-14: "ability to test actually using all the
algorithms in a notebook like fashion without needing latex or all
that but still having all the benefits of these other systems from
our ability to easily represent all the required symbols for even
the most advanced mathmatician".
Each symbol is a UTF-8 sequence stored as a *u8 constant. Output
goes straight to stdout / browser without any LaTeX dependency.
Symbol categories covered:
* logic forall, exists, not, and, or, implies, iff
* set theory empty, in, notin, subset, superset, union, intersect
* relations le, ge, neq, approx, equiv, propto
* operators sum, product, integral, partial, nabla, sqrt
* sets R (reals), C (complex), Z (integers), N (naturals), Q (rationals)
* arrows to, mapsto, leftarrow, leftrightarrow
* greek lowercase alpha..omega
* misc infinity, dagger, plus_minus
dependencies 3 imports · 1 importers
imports: nx_syscalls.nxnx_runtime.nxnx_tier.nx
imported by: nx_notebook_demo.nx
structs
| none |
consts
| none |
functions
| 33 | func nx_sym_forall() -> *u8 { return "\xE2\x88\x80" as *u8 } // ∀ called by 1: main |
| 34 | func nx_sym_exists() -> *u8 { return "\xE2\x88\x83" as *u8 } // ∃ called by 1: main |
| 35 | func nx_sym_not() -> *u8 { return "\xC2\xAC" as *u8 } // ¬ |
| 36 | func nx_sym_and() -> *u8 { return "\xE2\x88\xA7" as *u8 } // ∧ |
| 37 | func nx_sym_or() -> *u8 { return "\xE2\x88\xA8" as *u8 } // ∨ |
| 38 | func nx_sym_implies() -> *u8 { return "\xE2\x87\x92" as *u8 } // ⇒ |
| 39 | func nx_sym_iff() -> *u8 { return "\xE2\x87\x94" as *u8 } // ⇔ called by 1: main |
| 42 | func nx_sym_empty() -> *u8 { return "\xE2\x88\x85" as *u8 } // ∅ |
| 43 | func nx_sym_in() -> *u8 { return "\xE2\x88\x88" as *u8 } // ∈ called by 1: main |
| 44 | func nx_sym_notin() -> *u8 { return "\xE2\x88\x89" as *u8 } // ∉ |
| 45 | func nx_sym_subset() -> *u8 { return "\xE2\x8A\x86" as *u8 } // ⊆ called by 1: main |
| 46 | func nx_sym_superset() -> *u8 { return "\xE2\x8A\x87" as *u8 } // ⊇ |
| 47 | func nx_sym_union() -> *u8 { return "\xE2\x88\xAA" as *u8 } // ∪ |
| 48 | func nx_sym_intersect() -> *u8 { return "\xE2\x88\xA9" as *u8 } // ∩ |
| 51 | func nx_sym_le() -> *u8 { return "\xE2\x89\xA4" as *u8 } // ≤ |
| 52 | func nx_sym_ge() -> *u8 { return "\xE2\x89\xA5" as *u8 } // ≥ called by 1: main |
| 53 | func nx_sym_neq() -> *u8 { return "\xE2\x89\xA0" as *u8 } // ≠ |
| 54 | func nx_sym_approx() -> *u8 { return "\xE2\x89\x88" as *u8 } // ≈ |
| 55 | func nx_sym_equiv() -> *u8 { return "\xE2\x89\xA1" as *u8 } // ≡ |
| 56 | func nx_sym_propto() -> *u8 { return "\xE2\x88\x9D" as *u8 } // ∝ |
| 59 | func nx_sym_sum() -> *u8 { return "\xE2\x88\x91" as *u8 } // ∑ called by 1: main |
| 60 | func nx_sym_product() -> *u8 { return "\xE2\x88\x8F" as *u8 } // ∏ |
| 61 | func nx_sym_integral() -> *u8 { return "\xE2\x88\xAB" as *u8 } // ∫ called by 1: main |
| 62 | func nx_sym_partial() -> *u8 { return "\xE2\x88\x82" as *u8 } // ∂ called by 1: main |
| 63 | func nx_sym_nabla() -> *u8 { return "\xE2\x88\x87" as *u8 } // ∇ called by 1: main |
| 64 | func nx_sym_sqrt() -> *u8 { return "\xE2\x88\x9A" as *u8 } // √ called by 1: main |
| 65 | func nx_sym_infinity() -> *u8 { return "\xE2\x88\x9E" as *u8 } // ∞ called by 1: main |
| 68 | func nx_sym_reals() -> *u8 { return "\xE2\x84\x9D" as *u8 } // ℝ called by 1: main |
| 69 | func nx_sym_complex() -> *u8 { return "\xE2\x84\x82" as *u8 } // ℂ called by 1: main |
| 70 | func nx_sym_integers() -> *u8 { return "\xE2\x84\xA4" as *u8 } // ℤ called by 1: main |
| 71 | func nx_sym_naturals() -> *u8 { return "\xE2\x84\x95" as *u8 } // ℕ called by 1: main |
| 72 | func nx_sym_rationals() -> *u8 { return "\xE2\x84\x9A" as *u8 } // ℚ |
| 75 | func nx_sym_to() -> *u8 { return "\xE2\x86\x92" as *u8 } // → |
| 76 | func nx_sym_mapsto() -> *u8 { return "\xE2\x86\xA6" as *u8 } // ↦ |
| 77 | func nx_sym_leftarrow() -> *u8 { return "\xE2\x86\x90" as *u8 } // ← |
| 80 | func nx_sym_alpha() -> *u8 { return "\xCE\xB1" as *u8 } // α called by 1: main |
| 81 | func nx_sym_beta() -> *u8 { return "\xCE\xB2" as *u8 } // β called by 1: main |
| 82 | func nx_sym_gamma() -> *u8 { return "\xCE\xB3" as *u8 } // γ |
| 83 | func nx_sym_delta() -> *u8 { return "\xCE\xB4" as *u8 } // δ |
| 84 | func nx_sym_epsilon() -> *u8 { return "\xCE\xB5" as *u8 } // ε |
| 85 | func nx_sym_theta() -> *u8 { return "\xCE\xB8" as *u8 } // θ |
| 86 | func nx_sym_lambda() -> *u8 { return "\xCE\xBB" as *u8 } // λ |
| 87 | func nx_sym_mu() -> *u8 { return "\xCE\xBC" as *u8 } // μ |
| 88 | func nx_sym_pi() -> *u8 { return "\xCF\x80" as *u8 } // π called by 1: main |
| 89 | func nx_sym_rho() -> *u8 { return "\xCF\x81" as *u8 } // ρ |
| 90 | func nx_sym_sigma() -> *u8 { return "\xCF\x83" as *u8 } // σ called by 1: main |
| 91 | func nx_sym_phi() -> *u8 { return "\xCF\x86" as *u8 } // φ |
| 92 | func nx_sym_omega() -> *u8 { return "\xCF\x89" as *u8 } // ω called by 1: main |
| 95 | func nx_sym_plus_minus() -> *u8 { return "\xC2\xB1" as *u8 } // ± |
| 96 | func nx_sym_times() -> *u8 { return "\xC3\x97" as *u8 } // × called by 1: main |
| 97 | func nx_sym_divide() -> *u8 { return "\xC3\xB7" as *u8 } // ÷ |
| 98 | func nx_sym_dot() -> *u8 { return "\xE2\x8B\x85" as *u8 } // ⋅ |
| 99 | func nx_sym_degree() -> *u8 { return "\xC2\xB0" as *u8 } // ° |