pari gp 函数编程中的指针可选参数

问题描述

请看这个例子

f(a,{e})={ispower(a,3,&e)}

我这样做是为了将结果存储在 e 中,但是当我调用函数时 f(27,t) 程序不会在 t 中存储“3” 任何帮助

解决方法

你不能有指向你自己函数的指针可选参数(至少在 2.11 版本中没有)

如果您更改 f 的定义以按值返回值 e

f(a)={my(e); [ispower(a,3,&e),e]}

现在 f(27) 返回数组 [1,3]

在最新的 2.13 中,应该有一种通过引用传递参数的方法:参见 https://pari.math.u-bordeaux.fr/archives/pari-announce-20/msg00006.html

但是,语法建议您需要定义 f(a,~e) = ispower(a,&e),并且您仍然需要将其用作 f(a,~t)f(a,&t) 以将值放入 t。 (老实说,我不确定这是否可行 - 2.13 增强功能的目的是允许通过引用调用 Maps 和 Lists,而在以前的版本中,它们是按值调用复制的)。

顺便说一下,{} 没有将参数标记为可选。所有参数始终是可选的。如果您不提供值,则 PARI 将不分配参数。