SET_RESTORE_ROUND_53BIT (FE_TONEAREST);
Настройка сопроцессора. Это какая-то магия, имеющая две задачи: производительность и повторяемость.
Дальше мы залезаем в устройство числа (причём для краткости имеем дело с 32-битными командами!) и проверяем на «малость» — если получилось малое, то sin x ≈ x.
Дальше идёт проверка на |x|≲45° — идёт вычисление настоящего синуса. Опять-таки, проверка по верхним 32 битам числа (синус вычисляем по всем 64 битам ☺️).
Если число не очень большое, мы загоняем его в диапазон ±45° и вычисляем синус или косинус.
Если число побольше — идёт более злой загон в диапазон ±45° и то же самое.
И последнее, что осталось,— ∞/NaN.
Внутренние функции обозревать не буду, но что мы тут видим?
1. Какие значения бывают чаще, какие реже?
2. Для очень маленьких значений sin x ≈ x, cos x ≈ 1.
3. Ещё одно — залезание во внутренний формат компьютерного дробного, причём даже на x64 имеем дело с 32-битными целыми.
4. Даже функция приведения в ±45° есть в двух видах — упрощённом и «злом» в зависимости от абсолютной величины числа.