在 PARI GP 中传递用户定义函数之外的值

Passing values outside user's defined function in PARI GP

我想写一个函数 SWAP 来交换 PARI 中的 2 个整数 a 和 b。此函数没有 return 任何值,但我希望函数外部的变量存储新值。我不知道如何解决这个问题。这是我的功能:

swap(a,b) = { t=a; a=b; b=t;}

然后我写:

u=2; v=3;
swap(u,v);

ten u 仍然是 2,v 仍然是 3。我如何重写这个函数来使 u=3 和 v=2?谢谢。

遗憾的是,您无法为标量变量实现这样的 swap 函数。从 PARI/GP v2.13.0 开始,您可以使用 ~ 前缀通过引用用户定义的函数来传递容器变量(如列表、向量等),以修改其组件。因此,您可以针对版本 >= 2.13.0 的 PARI/GP 执行简单的解决方法,如下例所示:

swap(~a,~b) = {[a[1],b[1]] = [b[1],a[1]];};

u = [2]; v = [3];
swap(~u, ~v);
u
> [3]
v
> [2]