FLINT和Arb的绑定
项目描述
Python-FLINT
Python扩展模块,用于封装FLINT(快速数论库)和Arb(任意精度球体算术)。功能
- 整数、有理数、整数模n
- 实数和复数,具有严格的错误跟踪
- 所有上述类型上的多项式、幂级数和矩阵
- 许多数学函数
文档: http://fredrikj.net/python-flint/
仓库: https://github.com/flintlib/python-flint/
作者: Fredrik Johansson fredrik.johansson@gmail.com
安装
目前python-flint支持CPython版本3.9-3.12。对于Windows(x86-64)或OSX(x86-64或arm64)或Linux(x86-64 manylinux_2_17
),在PyPI上提供了python-flint的CPython二进制wheel。对于这些平台,可以使用pip
简单安装python-flint
pip install python-flint
另外,也可以使用conda
安装python-flint
conda install -c conda-forge python-flint
还可能使用某些PyPy版本使用python-flint。PyPI上不提供此版本的二进制wheel,但可以使用conda安装。
从源码构建
对于其他平台或架构,安装需要从源码构建。首先安装FLINT 3。从python-flint 0.5.0版本开始,不再支持Flint的旧版本,如2.9。请注意,由于Flint 3将Arb合并到Flint中,因此不再需要单独构建Arb。
有关构建FLINT的说明,请参阅此处
Python-FLINT的最新版本可以从源代码构建并安装,使用以下方法:
pip install --no-binary python-flint python-flint
Python-FLINT还可以按照以下方式从git checkout或源存档安装:
pip install .
一个在Ubuntu上测试过的构建和安装FLINT和python-flint的脚本可以在以下git仓库中找到
有关构建和安装python-flint的更多信息,请参阅文档
示例
导入Python-FLINT
>>> from flint import *
数论函数
>>> fmpz(1000).partitions_p()
24061467864032622473692149727991
>>> fmpq.bernoulli(64)
-106783830147866529886385444979142647942017/510
多项式算术
>>> a = fmpz_poly([1,2,3]); b = fmpz_poly([2,3,4]); a.gcd(a * b)
3*x^2 + 2*x + 1
>>> a = fmpz_poly(list(range(10001))); b = fmpz_poly(list(range(10000))); a.gcd(a * b).degree()
10000
>>> x = fmpz_poly([0,1]); ((1-x**2)*(1+x**3)**3*(1+x+2*x)).factor()
(-1, [(3*x + 1, 1), (x + (-1), 1), (x^2 + (-1)*x + 1, 3), (x + 1, 4)])
矩阵算术
>>> fmpz_mat([[1,1],[1,0]]) ** 10
[89, 55]
[55, 34]
>>> fmpq_mat.hilbert(10,10).det()
1/46206893947914691316295628839036278726983680000000000
数值评估
>>> showgood(lambda: (arb.pi() * arb(163).sqrt()).exp() - 640320**3 - 744, dps=25)
-7.499274028018143111206461e-13
>>> showgood(lambda: (arb.pi() * 10**100 + arb(1)/1000).sin(), dps=25)
0.0009999998333333416666664683
数值积分
>>> ctx.dps = 30
>>> acb.integral(lambda x, _: (-x**2).exp(), -100, 100) ** 2
[3.141592653589793238462643383 +/- 3.11e-28]
待办事项
- 编写更多测试并添加缺少的docstrings
- 包装缺失的flint类型:有限域、p-adic数、有理函数
- 向量或数组类型(可能)
- 许多便利方法
- 编写针对特定FLINT类型缺失的函数的泛型实现
- 适当处理各种地方的特殊值(抛出Python异常而不是终止等。)
- 各种自动转换
- 与外部类型(numpy、sage、sympy、mpmath、gmpy)之间的转换
- 改进打印和字符串输入/输出
- IPython钩子(TeX美式打印等。)
变更日志
0.6.0
- gh-112、gh-111、gh-110、gh-108:添加pyproject.toml和构建依赖项。这意味着python-flint可以不带
--no-build-isolation
从源代码构建。 - gh-109:对于非域域使用精确除法。现在
fmpz(6)/fmpz(3)
返回精确结果fmpz(2)
或在无法得到精确结果时引发错误。对于fmpz_poly/fmpz
、fmpz_mat/fmpz
以及使用fmpz_poly
、fmpq_poly
、nmod_poly
和fmpz_mod_poly
进行多项式除法,也有类似的变化。 - gh-106:添加
fmpz_mod_mat
,用于整数模n的矩阵,其中n大于字长。 - gh-104:将Flint从3.0.0提升到3.0.1
0.5.0
重要的兼容性更改
新功能
错误修复
0.4.4
- gh-75、gh-77:完成了将
python-flint
重构为子模块的大部分工作 - gh-72:不支持
arb_poly
的roots方法。使用complex_roots
方法或acb_roots(p).roots()
来获取旧行为,即返回复数根。现在,在fmpz_poly
和fmpq_poly
上,roots方法分别返回整数根和有理根。要访问这些类型的复数根,请使用complex_roots
方法。对于acb_poly
,roots和complex_roots的行为相同 - gh-71:包括sdist中的文件并修复问题gh-70
- gh-67:继续重构工作,将子模块引入到
python-flint
0.4.3
- gh-63:不再支持
arb_poly
和nmod_poly
的roots
方法。使用acb_roots(p).roots()
获取旧的行为,即返回作为acb
的根。注意,fmpz_poly
和fmpq_poly
的roots
方法目前返回多项式的复数根。 - gh-61:开始重构工作,将子模块引入到
python-flint
0.4.2
- gh-57:添加许多 manylinux 轮子
0.4.1
- gh-47:删除 Linux 轮子,更新从源代码构建的说明。
0.4.0
- gh-45:添加 Windows、OSX 和 manylinux 轮子,但 Linux 轮子损坏。
许可证
Python-FLINT 采用 MIT 许可证。FLINT 和 Arb 采用 LGPL v2.1+。
项目详情
python_flint-0.6.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f829e00774534891b38de41bc511cf6c7d6d216544a6a84b92d9e1f159de0878 |
|
MD5 | 6473f4da8959f0ec085db62bca3e40e3 |
|
BLAKE2b-256 | 163ad129f056475191377a823efe9876656a81d563bb7463d0f8568ebee81ef6 |
python_flint-0.6.0-cp312-cp312-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3e39cc74a54925413dc825bc69e328b7f594270a9eac95d276c0b919e77584e7 |
|
MD5 | ca4ad0c85e3c4a3ad0a4ffa0812a5a73 |
|
BLAKE2b-256 | bb92fe03310f516bbd48dbed8aa7a7c083f74d55f293d692adcb44292beccf14 |
python_flint-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 647d6b901e413d54cf8ef493264021d9eb8f7ad1ad9d931e5efc735c13967756 |
|
MD5 | 83b8db192ee2aef167ecf90663bafa29 |
|
BLAKE2b-256 | 22e018819822dd3b3e8539ed8c78302b323097c6784ed0494dbf50e32bd0f5e4 |
python_flint-0.6.0-cp312-cp312-macosx_11_0_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2584517a4a24556bd3d0a1e0bdffb5a72fa341f9202ae069e54678d38bd8851c |
|
MD5 | bc5239c97f253a8da2e089e22e7f8274 |
|
BLAKE2b-256 | d117690e5fc99a99525cf06b8be26611ba32c5c34a15db75d1e8b76926bd2b3c |
python_flint-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c14a30e9c1a7b9ff7fab5cc6f80cc7edb7a8c9deb80d6a0dd51f02a3c651ea2d |
|
MD5 | fa109619dd2190a670f6343f35ce8b89 |
|
BLAKE2b-256 | cc945ef1d5d5fd4e4ae7f139650c1e882042d7088659653327f7e5cf59ec4048 |
python_flint-0.6.0-cp311-cp311-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cff2c21217f9ee601430fedbb41d694271a609e8bca3f30558a9a9e004b93696 |
|
MD5 | 8b2e0c6a1f7d8dfa340c54a3e09b4166 |
|
BLAKE2b-256 | 70733e9e29455c9b222db1c3c98b3bfa92748b32a853e75acfb7f5c1a8c8f72d |
python_flint-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f30b0a0f24a1db1a5efa23e947edc54ca922bfec79d393bc8b863123bc9a84c |
|
MD5 | b863793fd948740dcd3cd8d4be90936f |
|
BLAKE2b-256 | c40850eebbe36472325bccf975c02797628e3d4b6a39d311a4fe3e3925005fe7 |
python_flint-0.6.0-cp311-cp311-macosx_11_0_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fc49340fc9b95044c09668fba8f92d5b0b31f6a9500111c4cccb59ab0141746b |
|
MD5 | b0976ef04573c3f50dd38574cf7de2d3 |
|
BLAKE2b-256 | 2ede08995c5b98c797f422fe59f563b0126c6ceabbf05f1f26e52cc588a20761 |
python_flint-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 248a2a9c14d9e9cae8eb0dfd2016ef956536492d56cbcb21a8c1778d6730e3bc |
|
MD5 | 72f5f6cc0999e15c6ea92e1d48bf5fc4 |
|
BLAKE2b-256 | dea663ad30e7123c4bf45f4bdc42c92187a69e006dc809ee2fc413804f0cad74 |
python_flint-0.6.0-cp310-cp310-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 44c8bfefa7019ef40b7b4018d38b4a652dfbc094c7754341235078171fb9aa81 |
|
MD5 | 1d4a8a123343e3d8aee72d64feab6e4b |
|
BLAKE2b-256 | 12b44721249bbcbe3e1a08702e8b9962adb837576952c42d48534609fe351a0f |
哈希值 用于 python_flint-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4a99082434cbc568c7ad55fe6810eb832e04548af3d8130539ec4b78b0cc5cb9 |
|
MD5 | b10539cf0791f298dbf2a6faeeb5e8e4 |
|
BLAKE2b-256 | 890bfd9012308257304031433b1a0926044e617f3532040fbf2618b6b26e14bd |
哈希值 用于 python_flint-0.6.0-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 20339504a3f368978fe25351b489ed701cf78927ded5afb384024281634caff1 |
|
MD5 | 98ddf6b02b3ce5da00ed8c16001bf4e3 |
|
BLAKE2b-256 | 9e0b3d1a07da2dff0e24c361b89d7b922cb8688b39eb577b999d14dbd613d4c9 |
哈希值 用于 python_flint-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 37f4ffc1067b86c4f95f21c1c1a5a746f0e57b46af4fb7dd34fe2bdcda6ad55b |
|
MD5 | f0bc2af2bdb282d9eabae8735a90ac8f |
|
BLAKE2b-256 | 1a789af0165d78a354239341c72ba3229b605db3a4326336731eaed09b708976 |
哈希值 用于 python_flint-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bbda2aad2829e8bdba03ef8de7e0adfc700f85576a7f00519c32b40b6a4b43d7 |
|
MD5 | 0466d084b75d8cb7f89b129ee00d7cdd |
|
BLAKE2b-256 | f0aef0d404e82dd6a26aa659675ea0d814b6c5a05a3536e5cc5657c25cd167c0 |
哈希值 用于 python_flint-0.6.0-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0d7e366a71bcbba3dfeedf6c5423acad5e9dfb8aa7e508159cac2b0c894a586c |
|
MD5 | 74117e97672598749d4619323e375d3a |
|
BLAKE2b-256 | c5683dfb1ae70a657161742fe830c541908bd79bb8d2ba295e4189646f1ffa55 |
哈希值 用于 python_flint-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2a74da612bb0c1f22ae1434c4afbbc3790a81a3ec606f0fac3fab284ab2df4a5 |
|
MD5 | 39bdb2b8a131d20a55022641115ec87b |
|
BLAKE2b-256 | 92ba70a58fbcb637bacf6f1cdfefdaa6d23878b265d5deaa310675eb38cf6b2a |