Не существует стандарта, который требует точного округления трансцендентных функций. IEEE-754 (2008) рекомендует , но не требует, чтобы эти функции были правильно округлены.
Большинство хороших математических библиотек стремятся обеспечить действительно округленные результаты во всем диапазоне (да, даже для огромных входных данных до sin( )
и аналогичных сложных случаев). Как вы заметили, это требует, чтобы библиотека знала несколько больше цифр π, чем цифр в самом большом представимом числе. Это называется сокращением аргумента "бесконечный пи".
В тот момент, когда поднимается @spraff, хорошие математические библиотеки принимают точку зрения, согласно которой входные данные являются бесконечно точными (то есть функция должна вести себя так, как будто входные данные всегда представлены точно). Можно спорить, является ли это разумной позицией, но это рабочее предположение практически для всех хороших математических библиотек.
Все это говорит о том, что существует множество библиотек, которые выбирают простой маршрут и используют сокращение "конечное число", которое в основном рассматривает функцию, подобную sin( )
, как если бы π было представимым конечным числом. Оказывается, что это на самом деле не создает никаких проблем для большинства пользователей, и, безусловно, проще в реализации.