This repository provides `ulab`, a C extension module for MicroPython and CircuitPython that implements a carefully selected subset of NumPy and SciPy functionality, optimized for microcontrollers with limited RAM and flash. In production, it compiles into firmware and exposes `ulab.numpy` (array creation, linear algebra, FFT, random, universal functions, I/O), `ulab.scipy` (signal processing, numerical integration, optimization, special functions), and utility modules for buffer conversion. The architecture is a monolithic C library that hooks into MicroPython's object system, using a heavily macro-driven approach to support 1-4 dimensional ndarrays with broadcasting, views, and type promotion. Key entry points are the `ndarray` type and the top-level modules. Data flows involve user-created arrays, element-wise or reduction operations (often with an optional `out` parameter to minimize allocations), and optional file I/O in .npy or text format. External dependencies are limited to the MicroPython/CircuitPython runtime. Although primarily an application library, it includes a Python fallback layer (`snippets/`) that enables the same code to run on CPython, and extensive Jupyter notebooks serve as interactive documentation and benchmarks.