Я ищу математическое выражение, чтобы перевернуть знак числа, если два других числа положительны.
Это легко для одного условия x > 0
, в этом случае я бы сделал num *= sign(x)
.
Но как это сделать с двумя условиями x > 0
и y > 0
? Это неверно:
num *= sign(-x) * sign(-y)
(так как он меняет знак также, если оба x < 0
и y < 0
, что мне не нужно).
Я бы придумал
num *= sgn(-x) ** H(y)
и
num *= 1 - 2 * H(x) * H(y)
, где H
- шаговая функция Хевисайда, но пока она короткая, она не явная.
num *= (-1)^(H(x) * H(y))
- это немного лучше, но можем ли мы go лучше / короче / более явно?
Этот вопрос не относится * к конкретному языку программирования c - на самом деле, он вообще не касается программирования, поэтому использование if
не совсем то, что я хочу. Я ищу что-то наподобие in-line, если для математиков, и я подумал, что найду людей с лучшим мышлением для этого вопроса на форуме программистов ... пожалуйста, скажите мне, что я был прав;)