polybench
Multivariate polynomial arithmetic benchmark tests.
Many scientific and engineering applications utilise multivariate polynomial arithmetic in their algorithms and solutions. Here we provide a set of benchmark tests for often-used operations in multivariate polynomial arithmetic:
- Greatest common divisor
- Factorisation
Requirements
- Python >= 3.6.1
You also need at least one or more tools to be benchmarked. They are (in alphabetical order):
- Fermat
- FLINT: automatically downloaded via vcpkg (requires CMake >= 3.15, a C compiler and the Make utility; see also vcpkg dependencies).
- FORM: if not available in the system, then a release binary will be automatically downloaded.
- Mathematica: indeed, Free Wolfram Engine for Developers is sufficient to run.
- reFORM: automatically downloaded (requires Rust >= 1.36).
- Rings: automatically downloaded (requires JDK >= 8).
- Singular
- Symbolica: automatically downloaded (requires Rust >= 1.89), running in restricted mode.
Getting started
Clone this repository and try to run the run.sh script:
git clone https://github.com/tueda/polybench.git
cd polybench
./run.sh --all
When starting the script for the first time, it automatically sets up a virtual environment for required Python packages so that it will not dirty your environment. Some of the tools are provided as libraries registered in public package registries, so the first run takes some time to download, compile and link them with test binaries. After testing, a CSV file and comparison plots will be generated.
For practical benchmarking, configuration parameters should be set adequately. See the help message shown by
./run.sh --help
You can also use pip,
pipx,
Poetry
or Docker with this repository.
Installation with pip(x) install or poetry install makes a command
polybench available, which acts as the run.sh script described above.
pip install polybench
polybench --all
python -m polybench --all # alternative way to launch
pipx install polybench
polybench --all
git clone https://github.com/tueda/polybench.git
cd polybench
poetry install
poetry run polybench --all
docker build -t polybench:latest https://github.com/tueda/polybench.git
docker run -it --rm polybench:latest
./run.sh --all
Example
| platform | Linux-5.15.0-84-generic-x86_64-with-glibc2.29 |
| python_version | 3.8.10.final.0 (64 bit) |
| cpu_brand | 12th Gen Intel(R) Core(TM) i9-12900 |
| cpu_count | 16 (logical: 24) |
| total_memory | 62.6GB |
| FLINT | flint 3.5.0, gcc-11 (GNU) 11.5.0 |
| FORM | FORM 5.0.0 (Jan 27 2026, v5.0.0) |
| Mathematica | 14.3.0 for Linux x86 (64-bit) (July 31, 2025) |
| reFORM | 0.1.0-fix-serialize, rustc 1.96.0 (ac68faa20 2026-05-25) |
| Rings | 2.5.8, JVM: 11.0.20.1 (Ubuntu 11.0.20.1+1-post-Ubuntu-0ubuntu120.04) |
| Singular | Singular for x86_64-Linux version 4.4.1 (44100, 64 bit) Jan 2025 |
| Symbolica | 2.0.0, rustc 1.96.0 (ac68faa20 2026-05-25) |
Additional benchmark results are available here.
Development
# Initialisation
poetry install
poetry run pre-commit install
# Linting and testing
poetry run pre-commit run --all-files
poetry run pytest
# Linting and testing for Cargo subproject
cd path/to/project
cargo fmt
cargo clippy
cargo test
# Linting and testing for Gradle subproject
cd path/to/project
./gradlew spotlessApply
./gradlew check
# Test run
./run.sh <options> # for example, --all
# Release a new version
./scripts/make-release.sh <new_version> # for example, 0.3.0rc1
License
Metadata
Release files for polybench 0.4.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| polybench-0.4.3.tar.gz | 92.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| polybench-0.4.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 190.9 kB
Release files / polybench-0.4.3.tar.gz
| Download URL | polybench-0.4.3.tar.gz |
|---|---|
| Size | 92.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1cc92c3adf71f5fcd09b6eef94070902706d50c1cb8e2863191b405baf8c056f
|
|
BLAKE2b-256 checksum How to use checksums |
f6ed49630cf80817d1eed1fd2cfab2ded12bfbeb74825b46580477bb10560c31
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.12.3 Linux/6.17.0-1020-azure
|
Release files / polybench-0.4.3-py3-none-any.whl
| Download URL | polybench-0.4.3-py3-none-any.whl |
|---|---|
| Size | 98.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7b291b1b22328cd0cff638d08a77ac61554da1a9a461b79c97fa37ced3b0b13d
|
|
BLAKE2b-256 checksum How to use checksums |
7872206468f0419338b9a279eaa8e08fb239604ce46ce11faf7e87e9065c7525
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.12.3 Linux/6.17.0-1020-azure
|