ЗНАК Фортрана в Юлии - PullRequest
       3

ЗНАК Фортрана в Юлии

0 голосов
/ 13 сентября 2018

Существует ли в Джулии функция, эквивалентная функции SIGN(A,B) в Фортране?

SIGN(A,B) в Фортране возвращает значение A со знаком B.Если B > 0, то результат равен ABS(A), иначе это -ABS(A).Например, SIGN(10,-1) даст вам -10.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

У вас есть copysign функция, которая делает то, что вы хотите.

Единственное отличие от того, что вы указали, заключается в том, что copysign(1.0, 0.0) возвращает 1.0, и вы указали, что это -1.0 (говоряB>0), но я думаю, вы хотите, чтобы это оценивалось как 1.0, как copysign ведет себя.Правильно?.Обратите внимание, что copysign(1.0, -0.0) это -1.0.

0 голосов
/ 13 сентября 2018

РЕДАКТИРОВАТЬ: Проверьте ответ Богумил.Оказывается, в Base есть функция, которая делает это.

Я не думаю, что в Base есть функция, которая делает это.Тем не менее, добавление нового метода в sign является простым решением:

Base.sign(a, b) = abs(a)*sign(b)

Вы можете использовать methods(sign), чтобы убедиться, что ваш новый метод не конфликтует с какими-либо существующими методами.В этом случае это определенно не будет, поскольку все существующие методы имеют только один вход.

Поведение нового метода также будет согласовано со всеми существующими типами ввода, например, sign(missing, -1) вернет missingи sign(true, false) вернет false.

В качестве альтернативы вы можете придумать собственное имя новой функции.

...