Почему компилятор не оптимизирует число с плавающей точкой * 2 в приращении показателя?

Мы часто замечали, что gcc преобразует умножения в сдвиги в исполняемом файле. Нечто подобное может произойти при умноженииint иfloat, Например,2 * f, может просто увеличить показатель степениf на 1, сохраняя несколько циклов. Сделайте компиляторы, возможно, если кто-то попросит их сделать это (например, через-ffast-math) в общем так?

Достаточно ли умны компиляторы, чтобы сделать это, или мне нужно сделать это самостоятельно, используяscalb*() или жеldexp()/frexp() семейная функция?

Ответы на вопрос(8)

Ваш ответ на вопрос