remquo: сокращение аргумента?

В спецификации C99 говорится о remquo:

Функции remquo предназначены для реализации сокращений аргументов, которые могут использовать несколько младших битов частного. Обратите внимание, что x может быть настолько большим по величине по отношению к y, что точное представление частного не представляется возможным.

Что такое "сокращение аргумента" в этом контексте, и каков пример того, который может использовать несколько младших битов частного?

1 ответ

Решение

Сокращение аргумента означает отображение аргумента периодической функции в канонический период (например, (-π,π] или аналогичный). Если вы использовали π/2 в качестве делителя, младшие биты частного будут достаточны для определения правильный знак / и т. д. для тригонометрических функций.

К сожалению, однако, remquo бесполезно для реализации стандартного сокращения тригонометрических аргументов, потому что π иррационально; уменьшение больших аргументов по модулю приближения π даст вам результаты без значащих битов, то есть со всей ошибкой.

Однако, если вы пишете функцию f(x) определенный как sin(πx) или подобный, период теперь точно представлен в плавающей точке, и remquo можно делать именно то, что вам нужно, а звонить sin(2*M_PI*x) напрямую даст результаты без значимых битов (то есть всех ошибок), когда x большой.

Другие вопросы по тегам