Я хотел бы вычислить синус и косинус значения вместе (например, чтобы создать матрицу вращения). Конечно, я мог бы вычислить их отдельно один за другим, например a = cos(x); b = sin(x);, но мне интересно, есть ли более быстрый способ, когда нужны оба значения.
Изменить:
Подводя итог ответам на данный момент:
[*]Влад сказал, что есть asm-команда FSINCOS вычисляет оба из них (почти за то же время, что и вызов только FSIN)
[*]Как Чи заметил, что эта оптимизация иногда уже выполняется компилятором (при использовании флагов оптимизации).
[*]caf указал Оказывается, функции sincos и sincosf, вероятно, доступны и могут быть вызваны напрямую, просто включив math.h
[*]
tanascius подход к использованию справочной таблицы вызывает споры. (Однако на моем компьютере и в тестовом сценарии он работает в 3 раза быстрее, чем sincos, с почти такой же точностью для 32-битных чисел с плавающей запятой.)
[*]
Джоэл Гудвин рассказал об интересном методе чрезвычайно быстрой аппроксимации с довольно хорошей точностью (для меня это даже быстрее, чем поиск по таблице)
Подробнее здесь: https://stackoverflow.com/questions/268 ... s-together