Mathtoolbox
Mathematical tools (interpolation, dimensionality reduction, optimization, etc.) written in C++11 with Eigen
Install / Use
/learn @yuki-koyama/MathtoolboxREADME
mathtoolbox
Mathematical tools (interpolation, dimensionality reduction, optimization, etc.) written in C++11 and Eigen.

Algorithms
Scattered Data Interpolation and Function Approximation
rbf-interpolation: Radial basis function (RBF) interpolationgaussian-process-regression: Gaussian process regression (GPR)
Dimensionality Reduction and Low-Dimensional Embedding
Numerical Optimization
backtracking-line-search: Backtracking line searchbayesian-optimization: Bayesian optimizationbfgs: BFGS methodgradient-descent: Gradient descent methodl-bfgs: Limited-memory BFGS methodstrong-wolfe-conditions-line-search: Strong Wolfe conditions line search
Linear Algebra
Utilities
acquisition-functions: Acquisition functionsconstants: Constantsdata-normalization: Data normalizationkernel-functions: Kernel functionsprobability-distributions: Probability distributions
Dependencies
Main Library
- Eigen http://eigen.tuxfamily.org/ (
brew install eigen/sudo apt install libeigen3-dev)
Python Bindings
- pybind11 https://github.com/pybind/pybind11 (included as gitsubmodule)
Examples
- optimization-test-function https://github.com/yuki-koyama/optimization-test-functions (included as gitsubmodule)
- timer https://github.com/yuki-koyama/timer (included as gitsubmodule)
Use as a C++ Library
mathtoolbox uses CMake https://cmake.org/ for building source codes. This library can be built, for example, by
git clone https://github.com/yuki-koyama/mathtoolbox.git --recursive
cd mathtoolbox
mkdir build
cd build
cmake ../
make
and optionally it can be installed to the system by
make install
When the CMake parameter MATHTOOLBOX_BUILD_EXAMPLES is set ON, the example applications are also built. (The default setting is OFF.) This is done by
cmake ../ -DMATHTOOLBOX_BUILD_EXAMPLES=ON
make
When the CMake parameter MATHTOOLBOX_PYTHON_BINDINGS is set ON, the example applications are also built. (The default setting is OFF.) This is done by
cmake ../ -DMATHTOOLBOX_PYTHON_BINDINGS=ON
make
Prerequisites
macOS:
brew install eigen
Ubuntu:
sudo apt install libeigen3-dev
Use as a Python Library
pymathtoolbox is a (sub)set of Python bindings of mathtoolbox. Tested on Python 3.8, 3.9.
It can be installed via PyPI:
pip install git+https://github.com/yuki-koyama/mathtoolbox
Prerequisites
macOS
brew install cmake eigen
Ubuntu 22.04
sudo apt install cmake libeigen3-dev
Examples
See python-examples.
Gallery
Bayesian optimization (bayesian-optimization) solves a one-dimensional optimization problem using only a small number of function-evaluation queries.

Classical multi-dimensional scaling (classical-mds) is applied to pixel RGB values of a target image to embed them into a two-dimensional space.

Self-organizing map (som) is also applicable to pixel RGB values of a target image to learn a two-dimensional color manifold.

Projects Using mathtoolbox
- SelPh [CHI 2016] https://github.com/yuki-koyama/selph
classical-mds
- Sequential Line Search [SIGGRAPH 2017] https://github.com/yuki-koyama/sequential-line-search
acquisition-functions,data-normalization,kernel-functions,log-determinant, andprobability-distributions
- Sequential Gallery [SIGGRAPH 2020] https://github.com/yuki-koyama/sequential-gallery
acquisition-functionsandprobability-distributions
- elasty https://github.com/yuki-koyama/elasty
l-bfgs
Contributing
Bug reports, suggestions, feature requests, and PRs are highly welcomed.
Licensing
The MIT License.
Related Skills
node-connect
337.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.2kCommit, push, and open a PR
