← Back to Blog
NIKX Technologies / June 2026 / 6 min read

numx 1.0: Fourteen Modules for the Edge

Today we're releasing the first public version of numx, a numerical computing library five years in the making. Here's what's in it, why it exists, and what comes next.

Five years ago, two engineers were in the same house, working on a project together, and both kept hitting the same wall. They needed serious numerical math on a microcontroller. The ecosystem said no.

Today, numx 1.0 is public.

What it is

numx is a scientific-grade numerical computing library written in pure C99. It runs on resource-constrained hardware: ESP32, ARM Cortex-M, AVR, RISC-V, and anything else that has a C99 compiler. Zero external dependencies. Zero dynamic allocation. Full reentrancy guarantee.

The scope: fourteen complete modules covering linear algebra, statistics, root-finding, numerical integration and differentiation, interpolation, polynomial arithmetic, ODE solvers, signal processing, FFT, automatic differentiation, compressed sensing, randomized matrix algorithms, and post-quantum polynomial arithmetic via the Number Theoretic Transform.

Why it took five years

It did not take five years because the algorithms are novel. Most of them are classical. It took five years because doing them correctly for embedded hardware is a different problem than implementing them in a general-purpose environment.

Every library that existed either required dynamic allocation, or required an OS, or depended on a vendor SDK, or was narrow in scope. A library might do FFT well. It would not have an ODE solver. One that had integration would not have automatic differentiation. numx exists because nothing combined the full scope engineers actually need in a form that worked everywhere.

The four constraints

These are not features. They are constraints, and every design decision follows from them. Zero dynamic allocation. Not a single call to malloc anywhere in the codebase. On embedded systems, heap fragmentation is a production failure mode, not a theoretical concern. Every buffer lives on the stack or in caller-provided memory. Full reentrancy. No global state, no static mutable buffers. The same function can be called from an ISR, from an RTOS task, and from a bare main loop simultaneously without data corruption. Typed status codes. Every function returns numx_status_t. If a solver does not converge, the caller knows. If a matrix is singular, the caller knows. There is no silent failure. Single precision flag. The entire library switches between float32 and float64 with -DNUMX_USE_DOUBLE=1 at compile time. One build, one configuration flag, the right precision for the hardware.

Production validation

numx was not released until it had real production use behind it. Through 2024 and 2025, NIKX Technologies built the TERRA platform on ESP32 hardware using numx. Signal processing pipelines. ODE solvers. On-device math running at 240 MHz.

The numbers: 329 of 329 validations passing on x86-64. 243 of 243 passing on ESP32-S3 across 8 modules.

What is available now

All fourteen modules are complete and validated on physical hardware. The ntt module brings constant-time post-quantum polynomial arithmetic to embedded systems, targeting the CRYSTALS-Kyber and CRYSTALS-Dilithium parameter set. The full library is MIT licensed with no restrictions.

MIT licensed. No restrictions. It is available at https://github.com/NIKX-Tech/numx.