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