{"id":13731473,"url":"https://github.com/yuki-koyama/mathtoolbox","last_synced_at":"2025-07-31T13:16:25.842Z","repository":{"id":39634137,"uuid":"129524709","full_name":"yuki-koyama/mathtoolbox","owner":"yuki-koyama","description":"Mathematical tools (interpolation, dimensionality reduction, optimization, etc.) written in C++11 with Eigen","archived":false,"fork":false,"pushed_at":"2022-04-10T06:16:13.000Z","size":9372,"stargazers_count":272,"open_issues_count":15,"forks_count":38,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-06-02T18:05:03.463Z","etag":null,"topics":["algorithm","bfgs","dimensionality-reduction","eigen","gpr","interpolation","mds","optimization","rbf"],"latest_commit_sha":null,"homepage":"https://yuki-koyama.github.io/mathtoolbox/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuki-koyama.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-14T14:30:58.000Z","updated_at":"2025-05-16T15:31:40.000Z","dependencies_parsed_at":"2022-08-02T11:52:44.195Z","dependency_job_id":null,"html_url":"https://github.com/yuki-koyama/mathtoolbox","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/yuki-koyama/mathtoolbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuki-koyama%2Fmathtoolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuki-koyama%2Fmathtoolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuki-koyama%2Fmathtoolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuki-koyama%2Fmathtoolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuki-koyama","download_url":"https://codeload.github.com/yuki-koyama/mathtoolbox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuki-koyama%2Fmathtoolbox/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268045824,"owners_count":24186858,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","bfgs","dimensionality-reduction","eigen","gpr","interpolation","mds","optimization","rbf"],"created_at":"2024-08-03T02:01:30.972Z","updated_at":"2025-07-31T13:16:25.807Z","avatar_url":"https://github.com/yuki-koyama.png","language":"C++","funding_links":[],"categories":["Maths","Code"],"sub_categories":["RBF Network"],"readme":"# mathtoolbox\n\n![](https://github.com/yuki-koyama/mathtoolbox/workflows/macOS/badge.svg)\n![](https://github.com/yuki-koyama/mathtoolbox/workflows/Ubuntu/badge.svg)\n![](https://github.com/yuki-koyama/mathtoolbox/workflows/macOS-python/badge.svg)\n![](https://github.com/yuki-koyama/mathtoolbox/workflows/Ubuntu-python/badge.svg)\n![GitHub](https://img.shields.io/github/license/yuki-koyama/mathtoolbox)\n\nMathematical tools (interpolation, dimensionality reduction, optimization, etc.) written in C++11 and [Eigen](http://eigen.tuxfamily.org/).\n\n![](docs/header.png)\n\n## Algorithms\n\n### Scattered Data Interpolation and Function Approximation\n\n- [`rbf-interpolation`: Radial basis function (RBF) interpolation](https://yuki-koyama.github.io/mathtoolbox/rbf-interpolation/)\n- [`gaussian-process-regression`: Gaussian process regression (GPR)](https://yuki-koyama.github.io/mathtoolbox/gaussian-process-regression/)\n\n### Dimensionality Reduction and Low-Dimensional Embedding\n\n- [`classical-mds`: Classical multi-dimensional scaling (MDS)](https://yuki-koyama.github.io/mathtoolbox/classical-mds/)\n- [`som`: Self-organizing map (SOM)](https://yuki-koyama.github.io/mathtoolbox/som/)\n\n### Numerical Optimization\n\n- [`backtracking-line-search`: Backtracking line search](https://yuki-koyama.github.io/mathtoolbox/backtracking-line-search/)\n- [`bayesian-optimization`: Bayesian optimization](https://yuki-koyama.github.io/mathtoolbox/bayesian-optimization/)\n- [`bfgs`: BFGS method](https://yuki-koyama.github.io/mathtoolbox/bfgs/)\n- [`gradient-descent`: Gradient descent method](https://yuki-koyama.github.io/mathtoolbox/gradient-descent/)\n- [`l-bfgs`: Limited-memory BFGS method](https://yuki-koyama.github.io/mathtoolbox/l-bfgs/)\n- [`strong-wolfe-conditions-line-search`: Strong Wolfe conditions line search](https://yuki-koyama.github.io/mathtoolbox/strong-wolfe-conditions-line-search/)\n\n### Linear Algebra\n\n- [`log-determinant`: Log-determinant](https://yuki-koyama.github.io/mathtoolbox/log-determinant/)\n- [`matrix-inversion`: Matrix inversion techniques](https://yuki-koyama.github.io/mathtoolbox/matrix-inversion/)\n\n### Utilities\n\n- [`acquisition-functions`: Acquisition functions](https://yuki-koyama.github.io/mathtoolbox/acquisition-functions/)\n- [`constants`: Constants](https://yuki-koyama.github.io/mathtoolbox/constants/)\n- [`data-normalization`: Data normalization](https://yuki-koyama.github.io/mathtoolbox/data-normalization/)\n- [`kernel-functions`: Kernel functions](https://yuki-koyama.github.io/mathtoolbox/kernel-functions/)\n- [`probability-distributions`: Probability distributions](https://yuki-koyama.github.io/mathtoolbox/probability-distributions/)\n\n## Dependencies\n\n### Main Library\n\n- Eigen \u003chttp://eigen.tuxfamily.org/\u003e (`brew install eigen` / `sudo apt install libeigen3-dev`)\n\n### Python Bindings\n\n- pybind11 \u003chttps://github.com/pybind/pybind11\u003e (included as gitsubmodule)\n\n### Examples\n\n- optimization-test-function \u003chttps://github.com/yuki-koyama/optimization-test-functions\u003e (included as gitsubmodule)\n- timer \u003chttps://github.com/yuki-koyama/timer\u003e (included as gitsubmodule)\n\n## Use as a C++ Library\n\nmathtoolbox uses CMake \u003chttps://cmake.org/\u003e for building source codes. This library can be built, for example, by\n```\ngit clone https://github.com/yuki-koyama/mathtoolbox.git --recursive\ncd mathtoolbox\nmkdir build\ncd build\ncmake ../\nmake\n```\nand optionally it can be installed to the system by\n```\nmake install\n```\n\nWhen the CMake parameter `MATHTOOLBOX_BUILD_EXAMPLES` is set `ON`, the example applications are also built. (The default setting is `OFF`.) This is done by\n```\ncmake ../ -DMATHTOOLBOX_BUILD_EXAMPLES=ON\nmake\n```\n\nWhen the CMake parameter `MATHTOOLBOX_PYTHON_BINDINGS` is set `ON`, the example applications are also built. (The default setting is `OFF`.) This is done by\n```\ncmake ../ -DMATHTOOLBOX_PYTHON_BINDINGS=ON\nmake\n```\n\n### Prerequisites\n\nmacOS:\n```\nbrew install eigen\n```\n\nUbuntu:\n```\nsudo apt install libeigen3-dev\n```\n\n## Use as a Python Library\n\npymathtoolbox is a (sub)set of Python bindings of mathtoolbox. Tested on Python `3.8` and `3.9`.\n\nIt can be installed via PyPI:\n```\npip install git+https://github.com/yuki-koyama/mathtoolbox\n```\n\n### Prerequisites\n\nmacOS\n```\nbrew install cmake eigen\n```\n\nUbuntu 16.04/18.04\n```\nsudo apt install cmake libeigen3-dev\n```\n\n### Examples\n\nSee [python-examples](https://github.com/yuki-koyama/mathtoolbox/tree/master/python-examples).\n\n## Gallery\n\n__Bayesian optimization__ (`bayesian-optimization`) solves a one-dimensional optimization problem using only a small number of function-evaluation queries.\n\n![](docs/bayesian-optimization/1d.gif)\n\n__Classical multi-dimensional scaling__ (`classical-mds`) is applied to pixel RGB values of a target image to embed them into a two-dimensional space.\n\n![](docs/classical-mds/classical-mds-image-out.jpg)\n\n__Self-organizing map__ (`som`) is also applicable to pixel RGB values of a target image to learn a two-dimensional color manifold.\n\n![](docs/som/som-image.jpg)\n\n## Projects Using mathtoolbox\n\n- SelPh [CHI 2016] \u003chttps://github.com/yuki-koyama/selph\u003e\n  - `classical-mds`\n- Sequential Line Search [SIGGRAPH 2017] \u003chttps://github.com/yuki-koyama/sequential-line-search\u003e\n  - `acquisition-functions`, `data-normalization`, `kernel-functions`, `log-determinant`, and `probability-distributions`\n- Sequential Gallery [SIGGRAPH 2020] \u003chttps://github.com/yuki-koyama/sequential-gallery\u003e\n  - `acquisition-functions` and `probability-distributions`\n- elasty \u003chttps://github.com/yuki-koyama/elasty\u003e\n  - `l-bfgs`\n\n## Contributing\n\nBug reports, suggestions, feature requests, and PRs are highly welcomed.\n\n## Licensing\n\nThe MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuki-koyama%2Fmathtoolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuki-koyama%2Fmathtoolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuki-koyama%2Fmathtoolbox/lists"}