在Julia中是否存在与Fortran中的SIGN(A,B)
函数等效的函数?
SIGN(A,B)
返回带有符号A
的{{1}}值。如果为B
,则结果为B > 0
,否则为ABS(A)
。例如,-ABS(A)
会给您SIGN(10,-1)
。
答案 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)
。
或者,您可以提出自己的新函数名称。