#polynomial #solver #root-finding #numeric

rust-poly

Numeric manipulation of real and complex polynomials

13 releases

0.2.0 May 4, 2024
0.1.13 Nov 1, 2023
0.1.12 Sep 8, 2023
0.1.6 Aug 8, 2023
0.0.3 Jul 19, 2023

#290 in Math

Download history 2/week @ 2024-02-25 140/week @ 2024-03-03 16/week @ 2024-03-10 1/week @ 2024-03-17 7/week @ 2024-03-31 125/week @ 2024-04-28 34/week @ 2024-05-05

159 downloads per month

MIT license

60KB
1K SLoC

rust-poly

Crates.io

Numeric manipulation of real and complex polynomials.

Note: this crate is still in development and might change in the future.

Basic Goals:

  • addition, subtraction and multiplication of complex and real univariate polynomials
  • long division of complex and real univariate polynomials
  • finding complex roots of polynomials
  • indexing, slicing and iterating
    • indexing by term
    • indexing by coefficient
    • iterating by coefficient
    • iterating by term
    • slicing coefficients by range
    • slicing terms by range
    • IntoIterator traits
  • from/into traits

Future Goals:

  • Generating important polynomial sequences
    • Chebyshev type 1 polynomials
    • Chebyshev type 2 polynomials
    • Bessel polynomials
    • Reverse Bessel polynomials
    • Hermite polynomials
    • Lagrange polynomials
    • more to come...
  • Serde integration
  • Random integration
  • Real polynomial type
    • Real polynomial factoring
  • Rational functions
    • Simplification

Development

We don't do GitHub actions over here, because I'm a solo developer and actions are expensive.

Automation is performed using nushell scripts found in devops/

Conventional Commits

Commit messages must adhere to the conventional commits specification and additionally to the commitlint conventional config.

Breaking Changes:

  • Any other type that ends in a bang, like feat! or fix!. Note that feat! can also be used to mark removal of features.

Minor Changes:

  • feat: any new functionality that is visible to the user

Patch Changes:

  • fix: a bugfix
  • docs: documentation changes
  • build: changes to build scripts
  • ci: changes to CI pipelines
  • test: adding tests or benchmarks
  • perf: changes that affect performance
  • refactor: major refactoring
  • revert: reverting a change
  • style: stylistic changes
  • chore: any changes that are mostly administrative, e.g. small refactors, code style, comments, semver adjustments, etc...

Changelog

The changelog is generated automatically from commit messages. During the publishing process of a new release, the generated changelog can be manually edited to include additional information or rephrase the changes.

Right now, changelogs are generated with git-cliff. Configurations for how this happens are in cliff.toml.

Releasing a New Version

TODO

Licensing

This library is covered by the MIT license, see LICENSE.

Parts of the source code are based on the NumPy library for Python, used in accordance to the original license, see licenses/numpy/LICENSE.txt.

Dependencies

~3.5MB
~68K SLoC