{"id":32175538,"url":"https://github.com/flintlib/python-flint","last_synced_at":"2025-12-18T04:04:40.484Z","repository":{"id":37617293,"uuid":"1999508","full_name":"flintlib/python-flint","owner":"flintlib","description":"Python bindings for Flint and Arb","archived":false,"fork":false,"pushed_at":"2025-12-13T11:29:13.000Z","size":3122,"stargazers_count":141,"open_issues_count":44,"forks_count":34,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-12-15T01:43:44.666Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Cython","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flintlib.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2011-07-05T09:01:42.000Z","updated_at":"2025-12-13T11:29:10.000Z","dependencies_parsed_at":"2023-08-15T16:15:35.052Z","dependency_job_id":"591a51a2-f707-4e9b-b225-96cae03b9d82","html_url":"https://github.com/flintlib/python-flint","commit_stats":null,"previous_names":["flintlib/python-flint","fredrik-johansson/python-flint"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/flintlib/python-flint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flintlib%2Fpython-flint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flintlib%2Fpython-flint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flintlib%2Fpython-flint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flintlib%2Fpython-flint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flintlib","download_url":"https://codeload.github.com/flintlib/python-flint/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flintlib%2Fpython-flint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27790859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-18T02:00:09.725Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-21T19:41:13.184Z","updated_at":"2025-12-18T04:04:40.477Z","avatar_url":"https://github.com/flintlib.png","language":"Cython","funding_links":[],"categories":[],"sub_categories":[],"readme":"Python-FLINT\n============\n\nPython extension module wrapping FLINT (Fast Library for Number Theory)\nand Arb (arbitrary-precision ball arithmetic). Features:\n\n* Integers, rationals, integers mod n\n* Real and complex numbers with rigorous error tracking\n* Polynomials, power series and matrices over all the above types\n* Lots of mathematical functions\n\nDocumentation: https://python-flint.readthedocs.io/en/latest/\n\nRepository: https://github.com/flintlib/python-flint/\n\nAuthor: Fredrik Johansson \u003cfredrik.johansson@gmail.com\u003e\n\nInstallation\n------------\n\nCurrently python-flint supports CPython versions 3.11-3.14 and 3.14t\n(free-threaded) and provides binaries on PyPI for the following platforms:\n\n- Windows (x86-64)\n- MacOS (x86-64, arm64)\n- Linux (manylinux: x86-64, aarch64)\n\nFor these platforms python-flint can be installed simply with `pip`\n\n    pip install python-flint\n\nAlternatively python-flint can be installed using `conda`\n\n    conda install -c conda-forge python-flint\n\nBuild from source\n-----------------\n\nFor other platforms or architectures installation needs to build from source.\nFirst install FLINT 3. Starting with python-flint 0.5.0 older versions of Flint\nsuch as 2.9 are not supported any more. Note that as of Flint 3 Arb no longer\nneeds to be built separately as it is now merged into Flint.\n\nAs of e.g. Ubuntu 24.04 a new enough version of FLINT (at least version 3) can\nbe installed from the Ubuntu repos like\n\n    sudo apt-get install libflint-dev\n\nFor older distros the version in the repos is too old and a newer version of\nFLINT needs to be built. See here for instructions on building FLINT:\n\n* http://flintlib.org/\n\nA script that builds and installs FLINT on Ubuntu can be found here:\n\n* https://github.com/flintlib/python-flint/blob/master/bin/install_flint_ubuntu.sh\n\nThe latest release of Python-FLINT can then be built from source and installed\nusing:\n\n    pip install --no-binary python-flint python-flint\n\nPython-FLINT can also be installed from a git checkout or a source archive\nas follows:\n\n    pip install .\n\nSee the documentation for further notes on building and installing\npython-flint:\n\n* https://python-flint.readthedocs.io/en/latest/build.html\n* https://python-flint.readthedocs.io/en/latest/install.html\n\nExamples\n-------------------------------------\n\nImport Python-FLINT:\n\n    \u003e\u003e\u003e from flint import *\n\nNumber-theoretic functions:\n\n    \u003e\u003e\u003e fmpz(1000).partitions_p()\n    24061467864032622473692149727991\n    \u003e\u003e\u003e fmpq.bernoulli(64)\n    -106783830147866529886385444979142647942017/510\n\nPolynomial arithmetic:\n\n    \u003e\u003e\u003e a = fmpz_poly([1,2,3]); b = fmpz_poly([2,3,4]); a.gcd(a * b)\n    3*x^2 + 2*x + 1\n    \u003e\u003e\u003e a = fmpz_poly(list(range(10001))); b = fmpz_poly(list(range(10000))); a.gcd(a * b).degree()\n    10000\n    \u003e\u003e\u003e x = fmpz_poly([0,1]); ((1-x**2)*(1+x**3)**3*(1+x+2*x)).factor()\n    (-1, [(3*x + 1, 1), (x + (-1), 1), (x^2 + (-1)*x + 1, 3), (x + 1, 4)])\n\nMatrix arithmetic:\n\n    \u003e\u003e\u003e fmpz_mat([[1,1],[1,0]]) ** 10\n    [89, 55]\n    [55, 34]\n    \u003e\u003e\u003e fmpq_mat.hilbert(10,10).det()\n    1/46206893947914691316295628839036278726983680000000000\n\nNumerical evaluation:\n\n    \u003e\u003e\u003e showgood(lambda: (arb.pi() * arb(163).sqrt()).exp() - 640320**3 - 744, dps=25)\n    -7.499274028018143111206461e-13\n    \u003e\u003e\u003e showgood(lambda: (arb.pi() * 10**100 + arb(1)/1000).sin(), dps=25)\n    0.0009999998333333416666664683\n\nNumerical integration:\n\n    \u003e\u003e\u003e ctx.dps = 30\n    \u003e\u003e\u003e acb.integral(lambda x, _: (-x**2).exp(), -100, 100) ** 2\n    [3.141592653589793238462643383 +/- 3.11e-28]\n\nTo do\n-------------------------------------\n\n* Write more tests and add missing docstrings\n* Wrap missing flint types: matrices over finite fields, p-adic numbers, rational functions\n* Build on the preliminary interface to FLINT's generic (gr) types.\n* Make a nicer interface like `ZZ(1)` etc rather than `fmpz_poly([1, 2])`.\n* Vector or array types (maybe)\n* Many convenience methods\n* Write generic implementations of functions missing for specific FLINT types\n* Proper handling of special values in various places (throwing Python\n  exceptions instead of aborting, etc.)\n* Various automatic conversions\n* Conversions to and from external types (numpy, sage, sympy, mpmath, gmpy)\n* Improved printing and string input/output\n* IPython hooks (TeX pretty-printing etc.)\n\nCompatibility table\n-------------------\n\nGenerally each release of python-flint will be compatible with a range of\nPython versions. Since python-flint 0.5.0 the minimum supported Flint version\nis `3.0` and each release of python-flint supports all versions of Flint\n`\u003e=3.0` available at the time of release.\n\nCompatible versions:\n\n| python-flint | Release date  | CPython     | FLINT      | Cython           |\n|--------------|---------------|-------------|------------|------------------|\n| `0.9.0`      |      ???      | `3.11-3.14` | `3.0-3.3`  | `3.1-3.2?`       |\n| `0.8.0`      | 29th Aug 2025 | `3.11-3.14` | `3.0-3.3`  | `3.1` only       |\n| `0.7.0`      | 16th Mar 2025 | `3.11-3.13` | `3.0-3.2`  | `3.0.11-3.1.0a1` |\n| `0.6.0`      |  1st Feb 2024 | `3.9-3.12`  | `3.0` only | `3.0` only       |\n\nThe requirement for Cython 3.1 is only for CPython's free-threaded build.\nOtherwise Cython 3.0 is fine. Cython 3.2 is required for a stable ABI build of\npython-flint.\n\nAs of python-flint 0.7.0, CPython 3.13 [PEP\n703](https://peps.python.org/pep-0703/) free-threaded (no-GIL) builds of\npython-flint are provided. In the the free-threaded build, mutating matrices or\npolynomials from multiple threads can lead to memory corruption. There are some\nother known issues with the free-threaded build so it should be considered\nexperimental.\n\nCHANGELOG\n=========\n\nNext release (0.9.0)...\n-----------------------\n\nContributors (0.9.0):\n\n- Rémy Oudompheng (RO)\n- Agriya Khetarpal (AK)\n- Oscar Benjamin (OB)\n- Daniel Simmons-Marengo (DSM)\n\nChanges (0.9.0):\n\n- [gh-322](https://github.com/flintlib/python-flint/pull/322),\n  Add `mul_low` and `pow_trunc` methods to `fmpz_poly`, `fmpq_poly` and\n  `nmod_poly`. (RO)\n- [gh-318](https://github.com/flintlib/python-flint/pull/318),\n  Add emscripten build in CI. Polynomial factors and roots are\n  now sorted into a consistent order for `nmod_poly` and\n  `fq_default_poly`. Some tests are fixed so that they pass on\n  32-bit systems. (AK, OB)\n- [gh-312](https://github.com/flintlib/python-flint/pull/312),\n  Add `discriminant` method to `fmpz_poly`, `fmpq_poly` and\n  `nmod_poly`. (RO)\n- [gh-336](https://github.com/flintlib/python-flint/pull/336),\n  Fixed a bug in `arb.neg()` which caused it to return its input\n  without negating it. (DSM)\n- [gh-339](https://github.com/flintlib/python-flint/pull/339),\n  Add `fmpq.__float__` method so that `float(fmpq)` and `complex(fmpq)`\n  work. (OB)\n\n0.8.0\n-----\n\nContributors (0.8.0):\n\n- Oscar Benjamin (OB)\n- Robert Dougherty-Bliss (RDB)\n- Rémy Oudompheng (RO)\n- Agriya Khetarpal (AK)\n\nNotes (0.8.0):\n\n- This mostly a maintenance release with some bug fixes,\n  dependency updates and a few smaller features.\n- Since GitHub Actions is retiring its MacOS x86-64 runners\n  python-flint 0.8.0 is likely the last release to provide\n  prebuilt wheels for MacOS x86-64 (MacOS arm64 remains\n  fully supported). It is likely that future versions will\n  still work fine on MacOS x86-64 but would require building\n  from source and will not be tested in python-flint's CI.\n  MacOS arm64 wheels will still be provided and tested.\n\nChanges (0.8.0):\n\n- [gh-302](https://github.com/flintlib/python-flint/pull/302),\n  [gh-283](https://github.com/flintlib/python-flint/pull/283),\n  [gh-284](https://github.com/flintlib/python-flint/pull/284),\n  Wheels now ship MPFR 4.2.2 and FLINT 3.3.1. Cython 3.1 is now\n  supported for building (and required for the freethreaded\n  build). Wheels are provided for CPython 3.14 and 3.14t\n  (free-threaded) and PyPy 3.11. (OB)\n- [gh-310](https://github.com/flintlib/python-flint/pull/310),\n  Add `truncate`, `left_shift` and `right_shift` methods to\n  `fmpz_poly`, `fmpq_poly`, `nmod_poly`, `acb_poly`, `arb_poly`\n  to match other univariate polynomial types. (RO)\n- [gh-287](https://github.com/flintlib/python-flint/pull/287),\n  [gh-293](https://github.com/flintlib/python-flint/pull/293),\n  [gh-305](https://github.com/flintlib/python-flint/pull/305),\n  [gh-307](https://github.com/flintlib/python-flint/pull/307),\n  [gh-309](https://github.com/flintlib/python-flint/pull/309),\n  Add type annotations for `fmpz`, `fmpq`, `nmod`, `fmpz_mod`,\n  `fq_default`, `fmpz_poly`, `fmpq_poly`, `nmod_poly`,\n  `fmpz_mod_poly`, `fq_default_poly`, `fmpz_mpoly`, `fmpq_mpoly`,\n  `nmod_mpoly`, `fmpz_mod_mpoly`, `fmpz_series` and `fmpq_series`\n  (about half of the codebase). (OB)\n- [gh-300](https://github.com/flintlib/python-flint/pull/300),\n  Fix `arb.repr` which now returns a Python representation that\n  round trips. (OB)\n- [gh-292](https://github.com/flintlib/python-flint/pull/292),\n  The `fmpq` constructor now accepts `fmpq` numerator and denominator\n  as input. (OB)\n- [gh-289](https://github.com/flintlib/python-flint/pull/289),\n  Add `.prec` attribute to series types `fmpz_series`, `fmpq_series`,\n  `arb_series` and `acb_series`. (OB)\n- [gh-285](https://github.com/flintlib/python-flint/pull/285),\n  Don't use deprecated meson build option. (AK)\n- [gh-274](https://github.com/flintlib/python-flint/pull/274),\n  Add resultant methods to `fmpz_poly`, `fmpq_poly` and\n  `nmod_poly`. Now all univariate and polynomial types have the\n  resultant method except for `fq_default_poly`. (RDB)\n\n\n0.7.0\n-----\n\nContributors (0.7.0):\n\n- Jake Moss (JM)\n- Giacomo Pope (GP)\n- Joris Roos (JR)\n- Edgar Costa (EC)\n- Frédéric Chapoton (FC)\n- Oscar Benjamin (OB)\n- Tom Hubrecht (TH)\n\nHighlights (0.7.0):\n\n- [gh-270](https://github.com/flintlib/python-flint/pull/270),\n  PyPI packages are now built with FLINT 3.2.0 (previously\n  3.0.1 was used). All versions from FLINT 3.0.0 to FLINT 3.2.0\n  are compatible with python-flint but some features require\n  newer FLINT versions and the PyPI packages now use FLINT 3.2.0.\n- [gh-97](https://github.com/flintlib/python-flint/pull/97),\n  [gh-182](https://github.com/flintlib/python-flint/pull/180):\n  Add `fq_default` and `fq_default_poly` for finite fields and\n  univariate polynomials over finite fields. This exposes all\n  of the different implementations of finite fields (`fq_zech`,\n  `fq_nmod` etc) via the `fq_default` interface. (GP)\n- [gh-132](https://github.com/flintlib/python-flint/pull/132),\n  [gh-164](https://github.com/flintlib/python-flint/pull/164),\n  [gh-190](https://github.com/flintlib/python-flint/pull/190),\n  [gh-191](https://github.com/flintlib/python-flint/pull/191):\n  [gh-192](https://github.com/flintlib/python-flint/pull/192):\n  [gh-216](https://github.com/flintlib/python-flint/pull/216):\n  [gh-225](https://github.com/flintlib/python-flint/pull/225):\n  [gh-228](https://github.com/flintlib/python-flint/pull/228):\n  Add `fmpz_mpoly`, `fmpq_mpoly`, `nmod_poly` and `fmpz_mod_poly`\n  types for multivariate polynomials with integer, rational or\n  integers mod `n` coefficients. (JM)\n- [gh-142](https://github.com/flintlib/python-flint/pull/142)\n  Add `acb_theta` module for the numerical evaluation of [theta\n  functions](https://flintlib.org/doc/acb_theta.html) (only\n  available for `Flint \u003e= 3.1`). (EC)\n- [gh-218](https://github.com/flintlib/python-flint/pull/218)\n  [gh-254](https://github.com/flintlib/python-flint/pull/254)\n  [gh-255](https://github.com/flintlib/python-flint/pull/255)\n  An experimental interface for FLINT's generic rings has been\n  added. This provides access to many of FLINT's types that\n  are not yet wrapped by python-flint such as Gaussian integer,\n  number fields, qqbar, calcium, as well as both univariate and\n  multivariate polynomials and series over these rings (no\n  matrices yet though). (OB and TH)\n- [gh-129](https://github.com/flintlib/python-flint/pull/129)\n  [gh-208](https://github.com/flintlib/python-flint/pull/208)\n  Use meson/meson-python instead of setuptools as the build system\n  for parallel builds and better detection of build and dependency\n  requirements. (OB)\n- [gh-201](https://github.com/flintlib/python-flint/pull/201)\n  [gh-202](https://github.com/flintlib/python-flint/pull/202)\n  The documentation has been updated and is now at\n  [readthedocs](https://python-flint.readthedocs.io/en/latest/).\n  (OB)\n  [gh-235](https://github.com/flintlib/python-flint/pull/235)\n  Nightly wheels for python-flint can now be installed from the\n  [Anaconda Scientific Python Nightly Wheels index]\n  (https://anaconda.org/scientific-python-nightly-wheels/python-flint).\n  [gh-259](https://github.com/flintlib/python-flint/pull/259)\n  Add PyPI wheels for Linux aarch64 (Linux on ARM CPU). (OB)\n\nCompatibility break (0.7.0):\n\n- [gh-189](https://github.com/flintlib/python-flint/pull/189)\n  As of python-flint 0.7.0 `fmpq_poly.factor()` now returns\n  primitive rather than monic factors i.e. `2*x + 1` rather than\n  `x + 1/2`. This ensures consistency between all poly types\n  including between `fmpq_poly` and `fmpq_mpoly`. (OB)\n\nOther changes (0.7.0):\n\n- [gh-269](https://github.com/flintlib/python-flint/pull/269)\n  All univariate and multivariate polynomial types have\n  `is_zero`, `is_one` and `is_constant` methods. All polynomial\n  types now consistently handle negative powers where possible.\n- [gh-261](https://github.com/flintlib/python-flint/pull/261)\n  Add `fmpz_mat.fflu` for fraction-free LU decomposition of\n  an integer matrix.\n- [gh-251](https://github.com/flintlib/python-flint/pull/251)\n  Add mpmath-style precision context managers for arb\n  `extraprec`, `extradps`, `workprec` and `workdps`. (TH)\n- [gh-250](https://github.com/flintlib/python-flint/pull/250)\n  Add `fmpq.gcd()` method.\n- [gh-215](https://github.com/flintlib/python-flint/pull/215)\n  [gh-219](https://github.com/flintlib/python-flint/pull/219)\n  The FLINT binding declarations are now fully generated\n  automatically from the FLINT docs. (OB)\n- [gh-203](https://github.com/flintlib/python-flint/pull/203)\n  [gh-204](https://github.com/flintlib/python-flint/pull/204)\n  [gh-205](https://github.com/flintlib/python-flint/pull/205)\n  [gh-206](https://github.com/flintlib/python-flint/pull/206)\n  [gh-207](https://github.com/flintlib/python-flint/pull/207)\n  [gh-211](https://github.com/flintlib/python-flint/pull/211)\n  [gh-212](https://github.com/flintlib/python-flint/pull/212)\n  [gh-271](https://github.com/flintlib/python-flint/pull/271)\n  Various linting fixes and codebase improvements (FC and GP).\n- [gh-189](https://github.com/flintlib/python-flint/pull/189)\n  All scalar and poly types now have `sqrt`. All poly types now\n  have `factor_squarefree` and `leading_coefficient` methods.\n  Exception types raised in a number of places were changed to\n  `DomainError` for better consistency. (OB)\n- [gh-196](https://github.com/flintlib/python-flint/pull/196)\n  Supported Python versions are 3.10-3.13 (3.9 dropped). CI\n  Testing added for 3.13 free-threaded CPython.\n- [gh-194](https://github.com/flintlib/python-flint/pull/194)\n  Add version checking for build requirements. (OB)\n- [gh-180](https://github.com/flintlib/python-flint/pull/180)\n  Add `equal_trunc`, `add_trunc`, `sub_trunc`, `mul_low`,\n  `mul_mod` and `pow_trunc` methods to `fmpz_mod_poly`. (GP)\n- [gh-177](https://github.com/flintlib/python-flint/pull/177)\n  Remove old Py2 code for compatibility with Cython 3.1. (OB)\n- [gh-176](https://github.com/flintlib/python-flint/pull/176)\n  Fix the error messages from `fmpq` constructor. (OB)\n- [gh-174](https://github.com/flintlib/python-flint/pull/174)\n  Add `pow_mod` and `compose_mod` methods to `nmod_poly` and\n  `fmpz_mod_poly`. Also add some missing methods to `nmod_poly`\n  that other poly types already have. (GP)\n- [gh-172](https://github.com/flintlib/python-flint/pull/172)\n  Add `fmpz_is_square`. (JR)\n- [gh-168](https://github.com/flintlib/python-flint/pull/168)\n  Make comparisons consistent between different types. Add\n  `is_one` and `is_zero` for all poly types. (OB)\n- [gh-161](https://github.com/flintlib/python-flint/pull/161)\n  Add `acb.lerch_phi` to compute the Lerch transcendent. (OB)\n- [gh-160](https://github.com/flintlib/python-flint/pull/160)\n  Add `bits` to `arb` and `acb`, add `log_base` to `arb`. (JR)\n- [gh-148](https://github.com/flintlib/python-flint/pull/148)\n  Remove debug symbols to make smaller Linux binaries. (OB)\n- [gh-144](https://github.com/flintlib/python-flint/pull/144)\n  Add `rel_one_accuracy_bits` to `arb` and `acb`. (EC)\n- [gh-137](https://github.com/flintlib/python-flint/pull/137)\n  Add `erfinv` and `erfcinv` for `arb`. (JR)\n- [gh-119](https://github.com/flintlib/python-flint/pull/119)\n  Add compatibility with Flint 3.1. (OB)\n\n0.6.0\n-----\n\n- [gh-112](https://github.com/flintlib/python-flint/issues/112),\n  [gh-111](https://github.com/flintlib/python-flint/issues/111),\n  [gh-110](https://github.com/flintlib/python-flint/issues/110),\n  [gh-108](https://github.com/flintlib/python-flint/issues/108):\n  Add pyproject.toml and build dependencies. This means that\n  python-flint can be built from source without\n  `--no-build-isolation`.\n- [gh-109](https://github.com/flintlib/python-flint/issues/109):\n  Use exact division for non-field domains. Now `fmpz(6)/fmpz(3)`\n  returns an exact result `fmpz(2)` or raises an error if an exact\n  result is not possible. Similar changes for `fmpz_poly/fmpz`,\n  `fmpz_mat/fmpz`, and for polynomial division with `fmpz_poly`,\n  `fmpq_poly`, `nmod_poly` and `fmpz_mod_poly`.\n- [gh-106](https://github.com/flintlib/python-flint/issues/106):\n  Add `fmpz_mod_mat` for matrices of integers mod `n` where `n` is\n  larger than word sized.\n- [gh-104](https://github.com/flintlib/python-flint/issues/104):\n  Bump Flint from 3.0.0 to 3.0.1\n\n0.5.0\n-----\n\nImportant compatibility changes:\n\n- [gh-80](https://github.com/flintlib/python-flint/issues/80),\n  [gh-94](https://github.com/flintlib/python-flint/issues/94),\n  [gh-98](https://github.com/flintlib/python-flint/issues/98):\n  Switch from Flint 2.9 to Flint 3.\n- [gh-100](https://github.com/flintlib/python-flint/issues/100):\n  Supports Python 3.12 by using setuptools instead of\n  numpy.distutils.\n\nNew features:\n\n- [gh-87](https://github.com/flintlib/python-flint/issues/87):\n  Adds `fmpz_mod_poly` type for polynomials over `fmpz_mod`.\n- [gh-85](https://github.com/flintlib/python-flint/issues/85):\n  Adds discrete logarithms to `fmpz_mod`.\n- [gh-83](https://github.com/flintlib/python-flint/issues/83):\n  Introduces the `fmpz_mod` type for multi-precision integer mods.\n\nBug fixes:\n\n- [gh-93](https://github.com/flintlib/python-flint/issues/93):\n  Fixes a bug with `pow(int, int, fmpz)` which previously gave\n  incorrect results.\n- [gh-78](https://github.com/flintlib/python-flint/issues/78),\n  [gh-79](https://github.com/flintlib/python-flint/issues/79):\n  minor fixes for the `nmod` type.\n\n0.4.4\n-----\n\n- [gh-75](https://github.com/flintlib/python-flint/issues/75),\n  [gh-77](https://github.com/flintlib/python-flint/issues/77):\n  finish bulk of the work in refactoring `python-flint` into\n  submodules\n- [gh-72](https://github.com/flintlib/python-flint/issues/72):\n  The roots method of `arb_poly` is not supported. Use either the\n  `complex_roots` method or `acb_roots(p).roots()` to get the old\n  behaviour of returning the complex roots. The `roots` method on\n  `fmpz_poly` and `fmpq_poly` now return integer and rational\n  roots respectively. To access complex roots on these types, use\n  the `complex_roots` method. For `acb_poly`, both `roots` and\n  `complex_roots` behave the same\n- [gh-71](https://github.com/flintlib/python-flint/issues/71):\n  Include files in sdist and fix issue\n  [gh-70](https://github.com/flintlib/python-flint/issues/70)\n- [gh-67](https://github.com/flintlib/python-flint/issues/67):\n  Continue refactoring job to introduce submodules into `python-flint`\n\n0.4.3\n-----\n\n- [gh-63](https://github.com/flintlib/python-flint/issues/63):\n  The `roots` method of `arb_poly`, and `nmod_poly` is no longer\n  supported. Use `acb_roots(p).roots()` to get the old behaviour\n  of returning the roots as `acb`. Note that the `roots` method of\n  `fmpz_poly` and `fmpq_poly` currently returns the complex roots\n  of the polynomial.\n- [gh-61](https://github.com/flintlib/python-flint/issues/61):\n  Start refactoring job to introduce submodules into `python-flint`\n\n0.4.2\n-----\n\n- [gh-57](https://github.com/flintlib/python-flint/issues/57):\n  Adds manylinux wheels\n\n0.4.1\n-----\n\n- [gh-47](https://github.com/flintlib/python-flint/issues/47):\n  Removes Linux wheels, updates instructions for building from\n  source.\n\n0.4.0\n-----\n\n- [gh-45](https://github.com/flintlib/python-flint/issues/45):\n  Adds wheels for Windows, OSX and manylinux but the Linux wheels\n  are broken.\n\nLicense\n------------\n\nPython-FLINT is licensed MIT. FLINT and Arb are LGPL v2.1+.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflintlib%2Fpython-flint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflintlib%2Fpython-flint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflintlib%2Fpython-flint/lists"}