Pari / GP:用户定义的功能

时间:2013-02-09 15:15:13

标签: pari-gp

我已经定义了arity 1的几个函数,比如说func1(-)func2(-)。我测试了它们,发现它们实际上是按照它们应该做的。

我希望定义第三个函数,比如说func3(-),它输出func1(-)func2(-)的差异。这就是我的工作

func3(k) = {j=func1(k)-func2(k); print(j)}

尽管如此,它还没有回归到它应该做的事情。让我们假设func1(5)输出10和func2(5)输出2.然后,func3(5)应该输出8,对吗?它在一行中返回func1(5)的输出,在另一行中返回func2(2)的输出,然后返回零(即使相应输出的差异不是0)。

您知道func3(-)的定义有什么问题吗?

1 个答案:

答案 0 :(得分:4)

GP用户函数返回上次评估的值。在这里,它是的结果 'print(j)'命令,打印j(副作用)并返回'void', 当必须给出一个值时,它被强制转换为0,如此处所示。

f1(x) = 10
f2(x) = 2
f3(x) = f1(x) - f2(x)

正确返回8.您没有给出func1 / func2的代码 函数,但我希望你包含一个'print'语句,也许期待它 返回一个值。这就是为什么你在0之前获得不同行的输出。

如果你不喜欢这种'return-last-evaluation-result'行为,你可以使用 显式'return(result)'语句。

相关问题