问题标签 [pari]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pari-gp - PARI / GP:如何获得整数的最大素数?
我是 pari/gp 的新手。我factorint
用来查找所有主要因素,它返回一个矩阵。我试图遍历矩阵以找到内部的最大数字,但无法找到行和列的长度。另外,我如何使用 if 来比较每个元素的高低。Myp
正在顶部生成。
提前致谢。
c - 如何使用带有 gcc 的 pari 库运行 C 程序?
$ 我是在 C 语言中使用 pari 库的初学者。我已经在 cygwin64 中使用 gcc 安装了 pari 库。任何 C/C++ 程序都在运行。这对 gcc 编译器没有问题。但是当我试图将 pari 库用于上述示例程序时。我遇到了很多错误,如下所示。
此外,我使用命令 $gcc test-pari.c
来运行程序。实际上,我还需要知道如何运行使用 C 语言中的 pari 库编写的程序。我是否需要在运行期间显式显示一些库。有什么建议么?
c - 如何从 Pari/GP 代码生成代码 C 程序?
我是 Pari/GP 库的初学者。我想从 gp 代码生成 C 程序。我按照http://pari.math.u-bordeaux.fr/pub/pari/manuals/gp2c/gp2c.html中的教程进行操作。但我正在获取一些错误。在这里,我进入 gp 程序目录并尝试使用以下命令运行。
实际上,我对教程有点困惑。谁能指导我运行 Pari/GP 程序以进行多项式乘法(或任何其他简单操作)及其相应的 C 程序生成过程?
c++ - 将 PARI 程序转换为 C++
我在 OEIS 中发现了一个感兴趣的序列,我想在 C++ 中为我正在研究的编程竞赛解决方案生成相同的序列。
但是,我在理解序列页面中给出的程序如何工作时遇到了障碍。
这是页面中给出的程序 -
我发现了 PARI 是什么,但我无法将此程序转换为 C++。任何帮助我在 C++ 中生成相同序列的建议将不胜感激。
我尝试使用以下代码片段在 C++ 中生成序列。但我认为我在这两者之间遗漏了某些数字,因为我在在线 IDE 中的一些测试失败了。
我选择了 16、15 和 12 作为限制,否则结果值会溢出长变量类型。
dynamic-memory-allocation - GP/PARI 中的动态数组
我需要计算从 1 到 N 的素数。为此,我想将每个下一个数字 n 除以 2 到 sqrt(n) 范围内的素数。为此,我需要存储所有以前收集的素数。
我怎样才能有效地存储它们?
以防万一,我对查找素数的算法不感兴趣,我对如何存储此类数据感兴趣。在 C++ 中,我可以使用 std::vector 因为它适当地重新分配自己,或者可能是某种列表。
perl - 无法安装 Math::Pari 模块
我正在尝试安装Crypt::Random模块,一个密码安全的随机数生成器,并说它需要 Math::Pari 2.001802,这在 cpan.org 中不可用,但说它可以从这个其他 URL 获得,它没有工作。无论如何我都尝试安装它们并遇到了这个问题:
build.log 也对我没有帮助,还有其他可能成功安装此模块的方法吗?谢谢。
perl - 在 cpan 终端中为 Math::Pari 做什么
我在这里找到了有关安装 Math::Pari 问题的一个相关问题。除了这是用于 shell 的,我有 cpanm。我下载了最新版本的 Pari,Pari 2-7-6。我应该在哪里提取 C:\Program Files (x86)\Pari-2-7-6 中的文件才能在 perl 中成功安装 Math::Pari(但不是在 cpan shell 中)?提前致谢。
gcc - 未识别 GEN 变量 - PARI 库 C
我最近在 ubuntu 16.04 上安装了 PARI 库。源代码提供的示例集运行正确,但是,如果我使用“gun”、“ghalf”等,gcc 编译失败并出现错误:
错误:未声明“枪”(在此函数中首次使用)
我是这个图书馆的新手,对它知之甚少。谁能帮我解决这个错误。
这是我要编译的代码:
r - Rcpp 不编译带有 pari.h 标头的 cpp 源
我写了一个包含 pari.h 头文件的 cpp 源代码:
(请注意,可能会有不必要的标题,我通常会跨源复制所有标题,但这不是问题)。没有 pari.h 标头的类似源文件可以使用 Rcpp 很好地编译,其中包含必要的部分(例如标头、命名空间、导出行等)。
源代码,当 Rcpp 相关参考被注释时,编译良好并且在直接使用 g++ 编译时没有问题,具有以下标志:
我也将这些标志导入到 R 中:
我还在/usr/local/lib64/R/library/Rcpp/include/
.pari 目录下创建了一个符号链接/usr/include
。
但是 sourceCpp 命令的输出是这样的:
我复制了包含或不包含 C++11 启用行的步骤,没有任何变化。我也更改了 gcc 标志,但没有结果。看来gcc版本定义和pari_mainstack的定义有问题。
我相信问题不在于源代码的编写方式。下面的两个例子中,上面的 cpp 代码被转换为一个返回向量并且函数不是 main 的。还提供了一个可以很好地与 Rcpp 一起编译的类似且简单的代码:
.
执行直接编译的二进制文件过滤后的 strace 输出如下:
正如我们从这里看到的https://github.com/rstats-db/RPostgres/issues/80,问题可能是链接库的错误版本,可以通过符号链接解决。所以我必须知道 Rcpp 试图链接哪些库文件。
更新:
Scanelf 输出显示有问题的符号位于 /usr/lib/libpari-gmp-tls.so.2.9.1 中。
g++ 编译文件的 strace 输出显示可执行文件链接到 /usr/lib/libpari-gmp-tls.so.5,它本身是 2.9.1 版本的符号链接:
sourceCpp 命令创建的 sourceCpp_4.so 文件的 ldd 输出如下:
我用 ldd 跟踪了所有这些文件,并且没有指向 /usr/lib/libpari-gmp-tls.so.2.9.1 或 /usr/lib/libpari-gmp-tls.so.5 库的链接。所以问题是为什么 sourceCpp 不能链接到这些文件,因为包含了必要的头文件(而 g++ 可以)?
更新:
sourceCpp 的详细输出显示以下命令:
我设置了标志(实际上 -lpari 就足够了:
根据 gp2c 的输出,-lpari 标志也应该包含在链接阶段,但这里的链接命令没有它。会不会是问题的根源?或者在此之前,为什么 sourceCpp_5.so 文件没有链接到必要的 pari 库?
和结局:
链接的依赖库也应该通过以下方式显式声明:
Sys.setenv("PKG_LIBS"="-lm -lpari -lc")
库标志由 gp2c 输出给出。顺便说一下 gcc 版本问题,我没有创建指向原始 pari 标头目录的符号链接,而是在 R 库路径中创建了一个副本并注释掉了该行:
//#define GCC_VERSION "gcc 版本 6.2.1 20160830 (GCC)"
现在编译成功了,一个R可以在R的数论计算中享受PARI/GP的速度,感谢Rcpp!
pari - Pari GP 中的素数计数功能
素数计数函数 pi(x) 计算小于 x 的素数。由于 Pari 非常适合使用素数,我认为这个功能会被实现,但我在文档中没有找到任何东西。
- pi(x) 是否已经在 Pari GP 中实现?
- 如果没有,是否有可能找到素数的索引?我知道命令 prime(n) 返回第 n 个素数?(如果可以快速找到它,那么结合 precprime 可以解决问题。)