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 · 2 importers
imports: nx_syscalls.nxnx_runtime.nxnx_tier.nx
imported by: nx_mathml_lib.nxnx_notebook_demo.nx
structs
| none |
consts
| none |
functions
| 33 | func nx_sym_forall() -> *u8 { return "\xE2\x88\x80" as *u8 } // ∀ |
| 34 | func nx_sym_exists() -> *u8 { return "\xE2\x88\x83" as *u8 } // ∃ |
| 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 } // ∅ called by 1: lm_operator |
| 43 | func nx_sym_in() -> *u8 { return "\xE2\x88\x88" as *u8 } // ∈ |
| 44 | func nx_sym_notin() -> *u8 { return "\xE2\x88\x89" as *u8 } // ∉ called by 1: lm_operator |
| 45 | func nx_sym_subset() -> *u8 { return "\xE2\x8A\x86" as *u8 } // ⊆ |
| 46 | func nx_sym_superset() -> *u8 { return "\xE2\x8A\x87" as *u8 } // ⊇ |
| 47 | func nx_sym_union() -> *u8 { return "\xE2\x88\xAA" as *u8 } // ∪ called by 1: lm_operator |
| 48 | func nx_sym_intersect() -> *u8 { return "\xE2\x88\xA9" as *u8 } // ∩ called by 1: lm_operator |
| 51 | func nx_sym_le() -> *u8 { return "\xE2\x89\xA4" as *u8 } // ≤ called by 1: lm_operator |
| 52 | func nx_sym_ge() -> *u8 { return "\xE2\x89\xA5" as *u8 } // ≥ |
| 53 | func nx_sym_neq() -> *u8 { return "\xE2\x89\xA0" as *u8 } // ≠ called by 1: lm_operator |
| 54 | func nx_sym_approx() -> *u8 { return "\xE2\x89\x88" as *u8 } // ≈ called by 1: lm_operator |
| 55 | func nx_sym_equiv() -> *u8 { return "\xE2\x89\xA1" as *u8 } // ≡ called by 1: lm_operator |
| 56 | func nx_sym_propto() -> *u8 { return "\xE2\x88\x9D" as *u8 } // ∝ called by 1: lm_operator |
| 59 | func nx_sym_sum() -> *u8 { return "\xE2\x88\x91" as *u8 } // ∑ |
| 60 | func nx_sym_product() -> *u8 { return "\xE2\x88\x8F" as *u8 } // ∏ called by 1: lm_operator |
| 61 | func nx_sym_integral() -> *u8 { return "\xE2\x88\xAB" as *u8 } // ∫ |
| 62 | func nx_sym_partial() -> *u8 { return "\xE2\x88\x82" as *u8 } // ∂ |
| 63 | func nx_sym_nabla() -> *u8 { return "\xE2\x88\x87" as *u8 } // ∇ |
| 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 } // ∞ |
| 68 | func nx_sym_reals() -> *u8 { return "\xE2\x84\x9D" as *u8 } // ℝ |
| 69 | func nx_sym_complex() -> *u8 { return "\xE2\x84\x82" as *u8 } // ℂ |
| 70 | func nx_sym_integers() -> *u8 { return "\xE2\x84\xA4" as *u8 } // ℤ |
| 71 | func nx_sym_naturals() -> *u8 { return "\xE2\x84\x95" as *u8 } // ℕ |
| 72 | func nx_sym_rationals() -> *u8 { return "\xE2\x84\x9A" as *u8 } // ℚ called by 1: lm_blackboard |
| 75 | func nx_sym_to() -> *u8 { return "\xE2\x86\x92" as *u8 } // → called by 1: lm_operator |
| 76 | func nx_sym_mapsto() -> *u8 { return "\xE2\x86\xA6" as *u8 } // ↦ called by 1: lm_operator |
| 77 | func nx_sym_leftarrow() -> *u8 { return "\xE2\x86\x90" as *u8 } // ← |
| 80 | func nx_sym_alpha() -> *u8 { return "\xCE\xB1" as *u8 } // α |
| 81 | func nx_sym_beta() -> *u8 { return "\xCE\xB2" as *u8 } // β |
| 82 | func nx_sym_gamma() -> *u8 { return "\xCE\xB3" as *u8 } // γ called by 1: lm_symbol |
| 83 | func nx_sym_delta() -> *u8 { return "\xCE\xB4" as *u8 } // δ called by 1: lm_symbol |
| 84 | func nx_sym_epsilon() -> *u8 { return "\xCE\xB5" as *u8 } // ε called by 1: lm_symbol |
| 85 | func nx_sym_theta() -> *u8 { return "\xCE\xB8" as *u8 } // θ called by 1: lm_symbol |
| 86 | func nx_sym_lambda() -> *u8 { return "\xCE\xBB" as *u8 } // λ called by 1: lm_symbol |
| 87 | func nx_sym_mu() -> *u8 { return "\xCE\xBC" as *u8 } // μ called by 1: lm_symbol |
| 88 | func nx_sym_pi() -> *u8 { return "\xCF\x80" as *u8 } // π |
| 89 | func nx_sym_rho() -> *u8 { return "\xCF\x81" as *u8 } // ρ called by 1: lm_symbol |
| 90 | func nx_sym_sigma() -> *u8 { return "\xCF\x83" as *u8 } // σ |
| 91 | func nx_sym_phi() -> *u8 { return "\xCF\x86" as *u8 } // φ called by 1: lm_symbol |
| 92 | func nx_sym_omega() -> *u8 { return "\xCF\x89" as *u8 } // ω |
| 99 | func nx_sym_eta() -> *u8 { return "\xCE\xB7" as *u8 } // η called by 1: lm_symbol |
| 100 | func nx_sym_zeta() -> *u8 { return "\xCE\xB6" as *u8 } // ζ called by 1: lm_symbol |
| 101 | func nx_sym_iota() -> *u8 { return "\xCE\xB9" as *u8 } // ι called by 1: lm_symbol |
| 102 | func nx_sym_kappa() -> *u8 { return "\xCE\xBA" as *u8 } // κ called by 1: lm_symbol |
| 103 | func nx_sym_nu() -> *u8 { return "\xCE\xBD" as *u8 } // ν called by 1: lm_symbol |
| 104 | func nx_sym_xi() -> *u8 { return "\xCE\xBE" as *u8 } // ξ called by 1: lm_symbol |
| 105 | func nx_sym_omicron() -> *u8 { return "\xCE\xBF" as *u8 } // ο |
| 106 | func nx_sym_tau() -> *u8 { return "\xCF\x84" as *u8 } // τ called by 1: lm_symbol |
| 107 | func nx_sym_upsilon() -> *u8 { return "\xCF\x85" as *u8 } // υ called by 1: lm_symbol |
| 108 | func nx_sym_chi() -> *u8 { return "\xCF\x87" as *u8 } // χ called by 1: lm_symbol |
| 109 | func nx_sym_psi() -> *u8 { return "\xCF\x88" as *u8 } // ψ called by 1: lm_symbol |
| 112 | func nx_sym_plus_minus() -> *u8 { return "\xC2\xB1" as *u8 } // ± called by 1: lm_operator |
| 113 | func nx_sym_times() -> *u8 { return "\xC3\x97" as *u8 } // × |
| 114 | func nx_sym_divide() -> *u8 { return "\xC3\xB7" as *u8 } // ÷ |
| 115 | func nx_sym_dot() -> *u8 { return "\xE2\x8B\x85" as *u8 } // ⋅ called by 1: lm_operator |
| 116 | func nx_sym_degree() -> *u8 { return "\xC2\xB0" as *u8 } // ° |