Julia中的Fortran SIGN功能

时间:2018-09-13 06:00:08

标签: julia

在Julia中是否存在与Fortran中的SIGN(A,B)函数等效的函数?

Fortran中的

SIGN(A,B)返回带有符号A的{​​{1}}值。如果为B,则结果为B > 0,否则为ABS(A)。例如,-ABS(A)会给您SIGN(10,-1)

2 个答案:

答案 0 :(得分:5)

您有copysign功能可以满足您的需求。

与您指定的唯一区别是copysign(1.0, 0.0)返回1.0,并且您将其指定为-1.0(通过说B>0),但是我想您想要可以像1.0那样评估为copysign。对?。请注意,copysign(1.0, -0.0)-1.0

答案 1 :(得分:3)

编辑:检查Bogumil的答案。原来df1中有一个函数可以执行此操作。

我认为Base中没有一个函数可以做到这一点。但是,向Base添加新方法是一个简单的解决方案:

sign

您可以使用Base.sign(a, b) = abs(a)*sign(b) 来检查您的新方法不会与任何现有方法冲突。在这种情况下,肯定不会,因为所有现有方法都只有一个输入。

新方法的行为也将与所有现有输入类型一致,例如methods(sign)将返回sign(missing, -1),而missing将返回sign(true, false)

或者,您可以提出自己的新函数名称。