2013-02-09 69 views
2

我已经定义了几个函数1,比如func1(-)func2(-)。我测试了他们,看到他们实际上做了他们应该做的事情。Pari/GP:用户定义函数

我希望定义第三个函数,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(-)的定义有什么问题吗?

回答

4

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

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

正确返回8.你没有给的代码为您FUNC1/FUNC2 功能,但我希望你提供一个“打印”的语句,也许期待它 返回一个值。这就是为什么你在0之前的不同行上得到输出。如果你不喜欢这种'return-last-evaluation-result'行为,你可以使用显式的'return(result)'语句。