c++ libstd вычисляет sin и cos одновременно

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

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

2 ответов


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

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

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

в Linux он доступен как расширение GNU. Это не стандарт в C либо.


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

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