Я изучил, как реализовать функцию косинуса при помощи нескольких разных подходов. Одна из реализаций почти в
три раза быстрее, чем
math.h, но придётся смириться с точностью до четырёх знаков после запятой.
Задавались ли вы когда-нибудь вопросом, как в математической библиотеке вашего любимого языка программирования реализованы тригонометрические функции, например, косинус? Это настолько популярная функция, что её можно встретить в каждой математической библиотеке, поэтому реализация должна быть довольно простой, ведь так? Ну уж нет. Почти совершенно точно, что это не так.
Моё исследование началось с того, что мой друг и коллега
Стивен Марц работал над ядром операционной системы и я предложил, чтобы он отрисовал на экране функцию косинуса. Я часто использую косинус в качестве «hello, world» для графических приложений. Возникла проблема: его ядро не задействовало стандартную библиотеку C (а значит, прощай
math.h!), а целевой платформой являлась архитектура RISC-V (а значит, никаких подобий команды
fcos Intel!).
Так началось моё долгое приключение.