Ero sempre dal presupposto che la prova seguente sarà sempre successo per valori finiti (senza INF, non NAN) di somefloat
:Per un valore in virgola mobile a: Fa * 0.0 == 0.0 sempre valutato vero per i valori finiti di a?
assert(somefloat*0.0==0.0);
In Multiply by 0 optimization si è affermato che double a=0.0
e double a=-0.0
non sono strettamente parlando la stessa cosa.
Quindi mi chiedevo se questo può portare a problemi su alcune piattaforme, ad es. il risultato del test sopra riportato può dipendere dallo a
in positivo o in negativo.
Hai provato? –
Lo standard C++ richiede che '+ 0.0' e' -0.0' abbiano lo stesso comportamento. La risposta che suggerisce diversamente nel thread che hai citato è errata, almeno per C e C++. –
Sul mio computer che il mio compilatore va tutto bene, anche su un altro target embedded, ma ... Non voglio sorprese successive – Martin