问题标签 [pari-gp]
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 - bestappr 函数在 pari/gp 中给出不正确的答案
bestappr(sqrt(13),30)
给出18/5
了我尝试过的任何精度,但更接近的近似值是101/28
. 有什么我错过的吗?
dynamic-memory-allocation - GP/PARI 中的动态数组
我需要计算从 1 到 N 的素数。为此,我想将每个下一个数字 n 除以 2 到 sqrt(n) 范围内的素数。为此,我需要存储所有以前收集的素数。
我怎样才能有效地存储它们?
以防万一,我对查找素数的算法不感兴趣,我对如何存储此类数据感兴趣。在 C++ 中,我可以使用 std::vector 因为它适当地重新分配自己,或者可能是某种列表。
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!
package - GAP 中的 Radiroot 包生成错误
当我运行以下命令时
我收到这个错误
我在 Windows 10 上使用 GAP 4.8.6,从 GAP 下载页面上的 Windows 安装程序安装,以及 PARI/GP 2.9.1 64 位(稳定安装程序)。我也尝试过手动下载和使用最新版本的 Alnuth 和 Radiroot,但我仍然遇到同样的错误。有谁知道如何解决这一问题?
primes - Pari GP - 检查用户是否输入质数
我目前正在学习如何使用 Pari GP,现在我正在尝试编写一个代码来检查用户是否输入了质数。
这是我的代码。
问题是我的第一条“if”行通过识别它不是质数来工作,但是当我输入质数时,两条线都出现了。
如果有人可以提供帮助,将不胜感激。
polynomial-math - 对 GP 多项式运算符
PARI/GP 有问题。有谁知道在 PARI/GP 中操作正确的函数/命令,以优化
PARI/GP 给出了这个错误:
感谢您的帮助。
我也尝试:
这应该是脚本吗?
pari - Mestre 与 PARI/GP 的总和
我将 Mestre 的总和定义为:
并定义多项式A(t)
,B(t)
并且我想计算曲线的上述总和:y^2 = x^3 + A(t)x^2 + B(t)x
对于一些-700 < t < 700
然后打印它。所以我写道:
有用。现在我想对多项式A(t, t')
和B(t, t')
两个变量做同样的事情-n < t
,t' < n
对于一些任意整数n
,然后只打印带有S(E, 50000) > 5
(t
并且t'
是独立的) 的曲线。有谁能告诉我正确的代码吗?谢谢。
polynomials - 如何在 Pari/Gp 中增加足够的堆栈大小以使命令正常工作
我正在使用 GP 和最小多项式,如下所示在 ASUS x75 上运行:
第一个命令成功出现,而下面的第二个命令确实成功完成并给出了 allocatemem() 错误。如何在不使计算机过热或程序耗尽的情况下使第二个命令工作?并且需要以下命令的整个输出。谢谢您的帮助。
matrix - 如何使用 Pari 将多变量结果保存在数据结构中?
我有一个函数可以遍历其输入并产生零个或多个结果,每个结果由三个数字组成。我想将这些结果保存在数据结构中(例如,矩阵或向量向量),但我不知道在循环终止之前会有多少条目。我需要能够轻松地提取一列结果(例如每个条目的第一个变量)。
pari - 如何在 pari/gp 中定义“素数顺序”?
我对数论很感兴趣,想在 pari/gp 中测试我的一些想法,但对这个软件不熟悉。具体来说,我想定义一个 'primeorder' 函数,它将整数 n 映射到我称之为素数的顺序,当且仅当 n 是复合数并且等于最小整数 k 使得第 k 次迭代否则,在 n 处计算的素数计数函数是复合的。
如何在 pari/gp 中定义这样的函数?