Pieter's Pages
Welcome! This is where I keep some notes on topics I'm interested in, as well as links to the GitHub repositories for projects I'm working on.
Pages
A collection of guides, articles and notes on various topics, like mathematics, optimization, digital signal processing, linear algebra, Raspberry Pi, Arduino, C++, Python, Linux ...
Scientific software
alpaqa
Software package for nonlinear numerical optimization, using an augmented Lagrangian method and the
first-order PANOC solver.
Written in C++, with an easy-to-use Python interface.
cyqlone
High-performance, parallelized and vectorized quadratic programming solver for optimal control
problems (OCPs).
Written in C++, with a Python interface.
batmat
Fast linear algebra routines for batches of small matrices. Used as the backend for the cyqlone
solver.
Written in C++.
hyhound
Hyperbolic Householder transformations for Up- and Downdating Cholesky factorizations.
Written in C++, with a Python interface.
py-build-cmake
Modern, PEP 517 compliant build backend for building Python packages with extensions built using CMake. Includes extensive examples using pybind11, nanobind and SWIG.
alpaqa4scale
HPC version of alpaqa with support for distributed-memory computing (using MPI) and GPU acceleration (using PyTorch).
QPALM
Numerical quadratic programming solver.
Written in C, with interfaces for C++, Python, Julia, Matlab and Fortran.
guanaqo
C++ utilities for scientific software: view classes for dense and sparse matrices, wrappers for BLAS/LAPACK/Eigen, conversions between different matrix storage formats, flexible type erasure, benchmarking and tracing ...
Linear Algebra
Educational linear algebra library with readable implementations of common matrix algorithms.
Written in C++, also available as an Arduino library.
Scientific Publications
Blocked Cholesky factorization updates of the Riccati recursion using hyperbolic Householder transformations
Pieter Pas, Panagiotis Patrinos
64th IEEE Conference on Decision and Control (CDC), 2025
Convergence of the preconditioned proximal point method and Douglas–Rachford splitting in the absence of monotonicity
Brecht Evens, Pieter Pas, Puya Latafat, Panagiotis Patrinos
Mathematical Programming, 2025
PANTR: A proximal algorithm with trust-region updates for nonconvex constrained optimization
Alexander Bodard, Pieter Pas, Panagiotis Patrinos
IEEE Control Systems Letters, 2023
Gauss–Newton meets PANOC: A fast and globally convergent algorithm for nonlinear optimal control
Pieter Pas, Andreas Themelis, Panagiotis Patrinos
22nd IFAC World Congress, 2023
ALPAQA: A matrix-free solver for nonlinear MPC and large-scale nonconvex optimization
Pieter Pas, Mathijs Schuurmans, Panagiotis Patrinos
20th European Control Conference (ECC22), 2022
Presentations
Development
Toolchains
Portable GCC cross-compilation toolchains for C, C++ and Fortran. Useful for CI/CD pipelines or when distributing binaries for multiple platforms.
Conan recipes
Recipes for building some popular scientific software libraries using the Conan C/C++ package manager.
Cross PyTorch
Scripts for cross-compiling PyTorch with CUDA support on Linux.
Raspberry Pi
Raspberry Pi cross-compilation toolchains
Ready-to-use, modern GCC cross-compilation toolchains for C, C++ and Fortran.
Raspberry Pi C++ cross-development
Extensive tutorials for setting up Raspberry Pi development environments for cross-compilation and remote development.
Raspberry Pi cross-compilation project
Scripts for building popular tools and libraries such as Python and OpenCV, including a C++ example project.
Raspberry Pi NEON Compositor
C and C++ routines for compositing and overlaying images with transparency.
Makes use of ARM NEON SIMD intrinsics for high performance.
Raspberry Pi Pico C++
Bare minimum C++ project using the Raspberry Pi Pico SDK.
Arduino
Control Surface
Arduino library for all things MIDI-related. Provides a uniform interface for MIDI over USB, MIDI over BLE, MIDI over Serial, etc. It includes ready-to-use classes for building MIDI controllers with all kinds of inputs and outputs (potentiometers, push buttons, rotary encoders, LEDs, OLED displays ...).
Control Surface Motor Fader
PID controller for motorized faders, integrates nicely with the Control Surface library for tracking MIDI automation.
Arduino Filters
A fast and easy to use digital filter library for Arduino-compatible boards.
It supports
real-time
filtering using discrete-time finite and infinite impulse response filters, and has functions to
design
Butterworth and notch filters. It also has general smoothing utilities such as (exponential) moving
average filters, median filters, hysteresis ...
Different filter implementations are available, and high-order filters can be factorized into second
order sections for improved numerical stability. All filters use generic types, so they can be used
with either floating point types or fixed point integers.
Arduino AVR CMake
Building Arduino projects using CMake.
A Beginner's Guide to the ESP8266
This is an (older) article where I cover the basics of using the ESP8266 as a Wi-Fi enabled microcontroller, using the Arduino IDE.