математика — c ++ libstd вычисляет грех и cos одновременно

В библиотеке C math.hбыл sincos функция, которая была довольно эффективной, потому что она вычисляла и синус, и косинус за время, близкое к одному вызову sin() или же cos() чем общее время вызова обоих.

Есть ли такая функция в стандартной библиотеке C ++?

9

Решение

Нет ли такой функции в стандартной библиотеке c ++?

Нет, к сожалению, нет.

В библиотеке C math.h была функция sincos

В Linux он доступен как Расширение GNU. Это не стандартно в Си тоже.

7

Другие решения

Просто используйте sin и cos отдельно и включите оптимизацию. Компиляторы Си довольно хороши в оптимизации, и они, вероятно, поймут, что вы вычисляете и синус, и косинус одной и той же переменной. Если вы хотите сделать конечно, Вы всегда можете проверить полученную сборку (для gcc используйте опцию -S) и посмотреть, что она сгенерировала.

Компилятор, вероятно, оптимизирует любые вызовы sin или же cos в пользу простого использования инструкций SSE для его расчета. Я не уверен, что SSE имеет sincos код операции, но даже вычисление их отдельно происходит быстрее, чем вызов любого sincos функция, которую компилятор не будет оптимизировать.

2

По вопросам рекламы [email protected]