Skip to main content

pkg_img doi tests coverage sonarcloud

cxroots

cxroots is a Python package for finding all the roots of a function, f(z), of a single complex variable within a given contour, C, in the complex plane. It requires only that both:

  • f(z) has no roots or poles on C

  • f(z) is analytic in the interior of C

The implementation is primarily based on [KB] and evaluates contour integrals involving f(z) and its derivative f’(z) to determine the roots. If f’(z) is not provided then it is approximated using a finite difference method. The roots are further refined using Newton-Raphson if f’(z) is given or Muller’s method if not. See the documentation for a more details and a tutorial.

With Python installed you can install cxroots by entering in the terminal/command line

pip install cxroots

Example

from numpy import exp, cos, sin
f = lambda z: (exp(2*z)*cos(z)-1-sin(z)+z**5)*(z*(z+2))**2

from cxroots import Circle
C = Circle(0,3)
roots = C.roots(f)
roots.show()
https://github.com/rparini/cxroots/blob/master/README_resources/readme_example.png?raw=true
print(roots)
 Multiplicity |               Root
------------------------------------------------
      2       | -2.000000000000 +0.000000000000i
      1       | -0.651114070264 -0.390425719088i
      1       | -0.651114070264 +0.390425719088i
      3       |  0.000000000000 +0.000000000000i
      1       |  0.648578080954 -1.356622683988i
      1       |  0.648578080954 +1.356622683988i
      1       |  2.237557782467 +0.000000000000i

See also

The Fortran 90 package ZEAL is a direct implementation of [KB].

Citing cxroots

R. Parini. cxroots: A Python module to find all the roots of a complex analytic function within a given contour (2018), https://github.com/rparini/cxroots https://doi.org/10.5281/zenodo.7013117

BibTex:

@misc{cxroots,
  author = {Robert Parini},
  title = {{cxroots: A Python module to find all the roots of a complex analytic function within a given contour}},
  doi = {10.5281/zenodo.7013116},
  url = {https://github.com/rparini/cxroots},
  year = {2018}
}

Development

  • Install the pre-commit and then run pre-commit install. The pre-commit scripts can also be run manually with pre-commit run --all-files

  • The project uses ruff for formatting and linting. It is run as part of the pre-commit hook and is recommended to be run on save in the developer’s editor.

Release Procedure

Making a release on GitHub with the tag vX.Y.Z will update the documentation on master and push cxroots at the tagged commit to PyPI.

The documentation can be manually generated by running ./create_docs in the docs_src directory.

References

[KB] (1,2)

P. Kravanja and M. Van Barel. Computing the Zeros of Analytic Functions. Springer, Berlin, Heidelberg, 2000.

Metadata

Release files for cxroots 3.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cxroots 3.2.0
File Size Uploaded
cxroots-3.2.0.tar.gz 47.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for cxroots 3.2.0
File Interpreter ABI Platform
cxroots-3.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 47.7 MB

Release files / cxroots-3.2.0.tar.gz

Download URL cxroots-3.2.0.tar.gz
Size 47.6 MB
Tags Source
SHA-256 checksum
How to use checksums
c41a81db1080a65de78fa88d471ce8f4f8870b6d9016f3c2607208d027117e39
BLAKE2b-256 checksum
How to use checksums
ce56e3e75edbcb1818a52a14de87aef4159f298941becc43c1f057c6edd59cd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.2

Release files / cxroots-3.2.0-py3-none-any.whl

Download URL cxroots-3.2.0-py3-none-any.whl
Size 54.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b1625919c155da38225147ceeb6042d7bbb22f7f44dfdddb251ab7fa7710373
BLAKE2b-256 checksum
How to use checksums
d526e5524ef2591d524d430e80df51eb6520eff964c8b2ae0064c4ab724cdcbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.13.2

Release history Release notifications | RSS feed

This release

3.2.0 This release

2 release files

3.1.0

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.1.11

2 release files

1.1.10

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

1 release file

1.1.6

1 release file

1.1.5

1 release file

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.11

1 release file

1.0.9

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page