标签: pari

如何使用 PARI C 库

我已经搜索了一些关于如何在C 程序中使用 PARI 库的教程,但不幸的是,我只找到了在命令行界面中使用 GP 包的通用教程。

有人可以帮忙吗?例如,我想初始化一个 3x3 矩阵并找到它的 1000 次幂。在 gp(CLI)中,这可以通过键入以下内容来实现:

? A=[1,2,3;4,5,6;7,8,9]
? A^1000
Run Code Online (Sandbox Code Playgroud)

但是我发现在C 源文件中做这个安静简单的事情没有帮助。是否有提供此类示例的综合教程或文档?任何评论将不胜感激!

pari pari-gp

7
推荐指数
1
解决办法
1164
查看次数

Python Pari 库?

Pari/GP是一个优秀的数论相关函数库。问题是似乎没有任何地方的 python 的最新包装器,(pari-python使用旧版本的 pari),我想知道是否有人知道其他类似的库/包装器pari 或使用 pari 的一种。

我知道 SAGE,但它对于我的需求来说太大了。GMPY 也很出色,但是我错过了一些内在的 pari 函数,我宁愿使用 python 而不是提供的 GP 环境。NZMATH、mpmath、scipy 和 sympy 也都被考虑在内。

在相关说明中,是否有人对加载 pari dll 本身并使用其中包含的函数有任何建议?除了加载它和学习函数指针之外,我尝试过很少成功。

python pari

5
推荐指数
1
解决办法
1554
查看次数

有没有一种舒适的方法可以在 PARI/GP 中生成 n 中的 k 组合?

假设我在 PARI/GP 中有一个包含 n 个元素的向量。

我想从 n 个元素中生成 k 个组合。

例如,如果向量为 [3,7,11,14,18] 且 k=3,则输出应为

[3,7,11]
[3,7,14]
[3,7,18]
[3,11,14]
[3,11,18]
[3,14,18]
[7,11,14]
[7,11,18]
[7,14,18]
[11,14,18]
Run Code Online (Sandbox Code Playgroud)

PARI/GP 中是否有命令执行此操作,或者我是否必须对该功能进行编程?

function pari pari-gp

3
推荐指数
1
解决办法
453
查看次数

如何计算 pari 中的模乘法逆元?

模乘逆元是一个整数 \xe2\x80\x98x\xe2\x80\x99 使得。

\n

ax \xe2\x89\xa1 1 (mod m)。

\n

那么,有什么方法可以计算 pari\\gp 计算器中的模乘法逆元吗?

\n

如果这个问题微不足道或重复,我真的很抱歉。

\n

pari pari-gp

3
推荐指数
1
解决办法
862
查看次数

识别索引向量上的循环;制作列表,减去旋转次数

我使用长度为N的自然数向量和条目总和S,例如,(N,S)=(4,7)一个示例向量 E=[1,2,1,3] 其中所有条目向量中假设> 0

我想列出具有相同配置(N,S)=(4,7)的所有向量,但应过滤掉旋转。

问题:最好的算法是什么?
(我的实际实现是在 Pari/GP 中,它提供了一个嵌套的 for 循环,使用下限和上限索引值的边界向量)

我首先尝试了一个“强力”解决方案,因为我使用嵌套的 for 循环生成一个列表,但将向量连接的双重concat(E,E)存储在列表EE[]中,然后,对于每个新向量E=[e_1,e_2,e_3,e_4]检查该向量是否出现在已检查列表EE[]中的串联向量中,如果没有则将其附加为新的有效条目
EE[k]=E||E = [e_1,e_2,e_3,e_4,e_1,e_2,e_3,e_4]。这里的比较就像字符串比较 - 如果匹配从位置1开始或直到N ,则始终会找到匹配。

这种方法有效,但在我看来有点像蛮力,并且由于其组合结构随着NS的增加而爆炸。

是否存在更好的方法?

注意:目标语言是Pari/GP
注意:伪算法就足够了 - 但也许 Pari/GP 中的工具允许一些更紧凑的解决方案/符号。


示例,(N,S)=(4,7)
下面是一个非常简单的示例。

假设通过嵌套循环我通过以下方式获得向量E :

[1,1,1,4] --- first vector: store as [1,1,1,4;1,1,1,4] in EE
[1,1,2,3] --- 2nd vector: not in EE so far, append …
Run Code Online (Sandbox Code Playgroud)

c filtering nested-loops pari pari-gp

3
推荐指数
1
解决办法
157
查看次数

Rcpp 不编译带有 pari.h 标头的 cpp 源代码

我编写了一个 cpp 源代码,其中包含 pari.h 头文件:

#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
#include<stdlib.h>
#include<time.h>
#include<iterator> // for ostream_iterator
#include<strings.h>
#include<string.h>
#include<sstream>
#include <pari/pari.h> // for PARI/GP library
#include<Rcpp.h> // for sourceCpp to work, this line must be uncommented

// Enable C++11 via this plugin (Rcpp 0.10.3 or later)
// [[Rcpp::plugins(cpp11)]]

using namespace std;
using namespace Rcpp; // for sourceCpp to work, this line must be uncommented

// [[Rcpp::export]]
int main() {

    long maxp = 1000000; // max value
    pari_init(500000,2); // initiate pari
    size_t …
Run Code Online (Sandbox Code Playgroud)

gcc r pari rcpp pari-gp

1
推荐指数
1
解决办法
394
查看次数

如何在 Pari/Gp 中增加足够的堆栈大小以使命令正常工作

我正在使用在 ASUS x75 上运行的 GP 和最小多项式,如下所示:

(19:25) gp > elt=Mod(a*x^3+b*x^2+c*x+d,('x^5-1)/('x-1))
%122 = Mod(a*x^3 + b*x^2 + c*x + d, x^4 + x^3 + x^2 + x + 1)
(19:25) gp > (poly=minpoly(elt,x='x))
%123 = x^4 + (a + (b + (c - 4*d)))*x^3 + (a^2 + (-3*b + (2*c - 3*d))*a + (b^2 + (2*c - 3*d)*b + (c^2 - 3*d*c + 6*d^2)))*x^2 + (a^3 + (-2*b + (3*c - 2*d))*a^2 + (-2*b^2 + (c + 6*d)*b + (-2*c^2 - …
Run Code Online (Sandbox Code Playgroud)

stack-size pari pari-gp polynomials

1
推荐指数
1
解决办法
5380
查看次数

获取 Pari-gp 中表达式的常量部分

这可能是一个非常愚蠢的问题——但我似乎无法在 pari-gp 文献中找到相关的解释。我正在库中寻找一个函数,它接受多项式、级数或常数,并吐出常数部分(在常数情况下,它只会吐出输入)。

我一直在使用的工具是,polcoef(Expression,0)但这不适用于多个变量——我们必须再次调用该函数。

例如,

polcoef(1+z+z^2,0)
%2 = 1

polcoef(1+y+z,0)
%3 = z + 1

polcoef(polcoef(1+y+z,0),0)
%4 = 1
Run Code Online (Sandbox Code Playgroud)

是否有一个内置函数可以对任意数量的变量执行此操作?这样,我就不必迭代该polcoef函数了。这将大大清理我的代码;我知道我可能可以自己构建一个递归函数,但我想知道是否有内置的东西可以做到这一点。

非常感谢任何帮助、评论、编辑和澄清请求。

问候。

编辑:

忘记添加,我想要的输出是,

Const(1+x+y+z)
1

Const(Pi+x^2+p)
Pi

Run Code Online (Sandbox Code Playgroud)

pari pari-gp

1
推荐指数
1
解决办法
83
查看次数

将 p 进数转换为 Pari/GP 中的向量

我想将 Pari/GP p-adic 数的元素提取到向量中。即,如果这是我的 p 进数:

O(5^8)+1/3
> 2 + 3*5 + 5^2 + 3*5^3 + 5^4 + 3*5^5 + 5^6 + 3*5^7 + O(5^8)
Run Code Online (Sandbox Code Playgroud)

我希望能够提取这样的向量:

[2,3,1,3,1,3,1,3]
Run Code Online (Sandbox Code Playgroud)

有没有直接的方法来做到这一点还是我必须编写自己的函数?

pari pari-gp

0
推荐指数
1
解决办法
714
查看次数

标签 统计

pari ×9

pari-gp ×8

c ×1

filtering ×1

function ×1

gcc ×1

nested-loops ×1

polynomials ×1

python ×1

r ×1

rcpp ×1

stack-size ×1