Скажем, у меня был этот фрагмент кода:
#include <cmath>
// ...
float f = rand();
std::cout << sin(f) << " " << sin(f);
Поскольку sin(f)
- хорошо определенная функция, существует простая оптимизация:
float f = rand();
float sin_f = sin(f);
std::cout << sin_f << " " << sin_f;
Это оптимизация, которую разумно ожидать от современного компилятора С++? Или нет способа для компилятора определить, что sin(f)
всегда должен возвращать одно и то же значение для равного значения f
?