Skip to content

0.2

Choose a tag to compare

@luk036 luk036 released this 05 Oct 11:31
· 46 commits to main since this release
f538cc3

Full Changelog: 0.1...0.2

🚀 ginger v0.2 Release Notes

📌 Overview

ginger is a pure Python library for finding polynomial roots, featuring implementations of the Aberth-Ehrlich method and a parallelized Bairstow's method. This release includes significant improvements in documentation, code quality, testing, and functionality.

✨ What's New

📚 Documentation & Comments

  • Added comprehensive documentation via GEMINI.md, including:
    • Project overview and features
    • Build, test, and publish instructions using tox
    • Development conventions (code style, typing, CI/CD)
  • Improved code comments across multiple modules for better clarity and maintainability
  • Updated module and function docstrings with detailed explanations and examples

🧹 Code Quality & Formatting

  • Applied ruff check --fix and ruff format for consistent code style
  • Performed code cleanup using GEMINI CLI
  • Enhanced type hints across the codebase
  • Removed unused imports and legacy code

✅ Testing & Reliability

  • Added extensive unit tests for:
    • aberth.py (including edge cases and non-convergence scenarios)
    • autocorr.py (complex, real, and edge-case root extraction)
    • matrix2.py (matrix operations and properties)
    • vector2.py (vector operations and mathematical properties)
  • Improved test coverage for root-finding algorithms
  • Added documentation tests

🔧 Functionality Improvements

  • Root Finding Algorithms:
    • Enhanced Aberth method implementations with better initial guess generation
    • Improved handling of autocorrelation polynomials with symmetric root structures
    • Added multithreaded versions for better performance on high-degree polynomials
  • Vector & Matrix Operations:
    • Completely refactored Vector2 class with proper operator overloading and comprehensive documentation
    • Added Matrix2 class with determinant calculation and matrix-vector multiplication
  • Root Suppression:
    • Added back suppress_old() function for zero suppression in Bairstow's method
    • Improved numerical stability in root refinement

📦 Dependencies & Build

  • Added new dependencies: lds_gen and mywheel
  • Updated setup.cfg with proper testing and runtime dependencies
  • Improved build process using tox environments

🗑️ Cleanup & Removal

  • Removed outdated benchmark files (benchmark_*.svg)
  • Deleted unused modules (ginger.aberth_ai)
  • Cleaned up documentation files and removed redundant RST files

🐛 Bug Fixes & Minor Changes

  • Fixed import order and math function imports
  • Corrected string representations in vector classes
  • Improved error handling in vector and matrix operations
  • Fixed convergence checking in iterative methods

🔄 Compatibility

  • Maintains pure Python implementation with no external dependencies
  • Compatible with Python 3.9+
  • Continued support for low memory footprint (O(N) storage)

📈 Performance

  • Parallelized implementations of Aberth's method for better performance on multi-core systems
  • Optimized root refinement algorithms
  • Improved memory efficiency in polynomial evaluations

This release represents a significant step forward in code quality, documentation, and testing coverage while maintaining the core functionality of efficient polynomial root-finding in pure Python.