У меня есть 3 вектора, скажем,
v = vec3(-4, 2, 3)
Я бы хотел сделать максимум для абсолютных значений компонентов, поэтому эквивалент:
max(abs(v[0]), max(abs(v[1]), abs(v[2]))) == 4
Однако у меня есть требование, чтобы я сохранил знак. Так, например:
magic_max(v[0], magic_max(v[1], v[2])) == -4.
Это тривиальная проблема, если я использую условное ветвление, но я пытаюсь сделать это за минимально возможное количество операций и избежать ветвления. Есть идеи, где искать? Может быть, есть какое-то волшебство, способное сдвигать биты?