wearecontent content bogota are c gcc optimization floating-point

wearecontent - we are content bogota



¿Qué tipo de optimizaciones se incluyen en-funsafe-math-optimizations? (1)

De acuerdo con gcc.gnu.org (mi negrita ):

Este modo permite optimizaciones que permiten reasociaciones y transformaciones arbitrarias sin garantías de exactitud . Tampoco intenta preservar el signo de ceros .

Eso incluye su mención de reordenamiento asociativo , así como "funciones incorporadas [que] tienen nombres como __builtin_sqrt" que se aplican cuando "pueden tener menos precisión o restringirse a un dominio más pequeño"

La página del manual de GCC afirma que -funsafe-math-optimizations permite optimizaciones que "(a) asumen que los argumentos y resultados son válidos y (b) pueden violar los estándares IEEE o ANSI", pero eso no es muy preciso, ¿o sí?

¿Qué podría ser un argumento "inválido" en este caso? NaNs? Infinitos? ¿Subnormales? Números negativos a sqrt() ?

¿En qué medida se permite que los resultados se desvíen de los estándares IEEE o ANSI? ¿Se trata de cosas "meramente" como asociatividad operativa y ordenamiento , o podría incluir, por ejemplo? ¿comparaciones verdaderas con NaNs o comparaciones incorrectas con infinites? ¿Podría una variable almacenada ser redondeada después de haber sido utilizada (de manera que, para las variables x e y , (x == y) + (x == y) podría evaluarse a 1)? ¿Podría isinf() / isnan() dejar de funcionar?

¿Los desarrolladores de GCC siguen algún sistema o disciplina en particular con respecto a tales preguntas, o podría la respuesta diferir ampliamente de una versión a otra?