All checks were successful
The previous benchmark results showed that the GA was failing to find accurate roots (high MAE) for many polynomials. This was because the fixed default search range ([-100, 100]) was often incorrect, and the GA was searching in the wrong place.
This commit introduces a significantly more robust solution:
1. Adds a `_get_cauchy_bound` helper function to mathematically calculate a search radius that is guaranteed to contain all real roots.
2. Updates `_solve_x_numpy` and `_solve_x_cuda` with new logic:
* If the user provides a *custom* `min_range` or `max_range`, we treat them as an expert and use their specified range.
* If the user is using the *default* range, we silently discard it and use the smarter, automatically-calculated Cauchy bound instead.
This provides the best of both worlds: a powerful, smart default for most users and an "expert override" for those who need to fine-tune the search area.
49 lines
1.5 KiB
TOML
49 lines
1.5 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=61.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
# --- Core Metadata ---
|
|
name = "polysolve"
|
|
version = "0.4.2"
|
|
authors = [
|
|
{ name="Jonathan Rampersad", email="jonathan@jono-rams.work" },
|
|
]
|
|
description = "A Python library for representing, manipulating, and solving exponential functions using analytical methods and genetic algorithms, with optional CUDA acceleration."
|
|
readme = "README.md"
|
|
requires-python = ">=3.8"
|
|
license = { file="LICENSE" }
|
|
keywords = ["math", "polynomial", "genetic algorithm", "cuda", "equation solver"]
|
|
|
|
# --- Classifiers ---
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Science/Research",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.8",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Topic :: Scientific/Engineering :: Mathematics",
|
|
]
|
|
|
|
# --- Dependencies ---
|
|
dependencies = [
|
|
"numpy>=1.21"
|
|
]
|
|
|
|
# --- Optional Dependencies (Extras) ---
|
|
[project.optional-dependencies]
|
|
cuda12 = ["cupy-cuda12x"]
|
|
dev = ["pytest"]
|
|
|
|
[project.urls]
|
|
Homepage = "https://polysolve.jono-rams.work"
|
|
Documentation = "https://polysolve.jono-rams.work/docs"
|
|
Repository = "https://github.com/jono-rams/PolySolve"
|
|
"Bug Tracker" = "https://github.com/jono-rams/PolySolve/issues"
|