Дебаты tau против pi доминировали в обсуждениях математических констант в программировании, но более значимая возможность была упущена: устранить радианы.
Большинство кода использует pi или tau для преобразования значений в радианы для тригонометрических функций. Например, в исходном коде Godot Engine разработчики умножают периодическое значение h на tau перед вызовом sin, даже если h уже находится в диапазоне [0, 1]. Это преобразование излишне, поскольку математические библиотеки сразу умножают вход на 4/pi, фактически отменяя преобразование.
Использование оборотов вместо радиан упрощает код и повышает точность. Параметр оборота задаёт круг от 0 до 1, где 0.25 означает ровно 90 градусов, в отличие от радиан, которые не могут точно представить распространённые углы. Этот подход устраняет избыточные умножения и деления.
Для тех, кто использует существующие библиотеки, половинные обороты предлагают практическую альтернативу. Встроенная функция sincospi CUDA вычисляет синус и косинус входов, умноженных на pi, фактически используя половинные обороты. Вызывая sincospi с половинными оборотами вместо sin и cos с радианами, разработчики могут немедленно прекратить использование констант pi и tau.
Статья утверждает, что переключение на обороты или половинные обороты по всему коду обычно включает минимальные изменения, часто просто удаление ненужного кода преобразования. Библиотеки обычно преобразуют радианы внутренне в любом случае, что делает этот переход простым и выгодным.
Ключевые сущности: Компании: Godot Engine
Источник: Hacker News · Сводку подготовил HeadlinesBriefing