¿Por qué un compilador no optimiza el punto flotante * 2 en un incremento exponencial?

A menudo he notado que gcc convierte las multiplicaciones en cambios en el ejecutable. Algo similar puede suceder al multiplicar unint y unfloat. Por ejemplo,2 * f, podría simplemente incrementar el exponente def Por 1, ahorrando algunos ciclos. Haga los compiladores, quizás si uno les pide que lo hagan (por ejemplo, a través de-ffast-math), en general, hacerlo?

¿Son los compiladores generalmente lo suficientemente inteligentes para hacer esto, o tengo que hacerlo yo mismo usando elscalb*() oldexp()/frexp() familia de funciones?

Respuestas a la pregunta(8)

Su respuesta a la pregunta