È possibile attivare selettivamente -ffast-math on/off durante il runtime? Ad esempio, creando classi FastMath e AccurateMath con la classe base comune Math, in modo che uno possa utilizzare entrambe le implementazioni durante il runtime? Idem per i subnormali lampeggianti a zero, ecc.Dinamica -ffast-math
In particolare, non so se la compilazione con -ffast-math emetterebbe un'istruzione che, una volta eseguita, influirà su tutti i calcoli numerici nel thread (ad esempio, impostazione un flag per svuotare i subnormali a zero).
È necessario compilare due versioni, una con l'ottimizzazione e una senza. Quindi collegali e scegli quale invocare in fase di esecuzione. – Mysticial
È un peccato che http://stackoverflow.com/questions/7420665/what-does-gccs-ffast-math-actually-do fornisca solo un esempio, ma gli effetti di '-ffast-math' sono per lo più (interamente?) scelte in fase di compilazione, come compilare '/ 10' come' * 0.1', o "semplificare" 'a + bab' in' 0' (non è zero per IEEE 754 calcoli). Pertanto, come dice Mysticial, non c'è modo di attivare e disattivare la bandiera in fase di esecuzione: è necessario compilare due versioni se è quello che si vuole veramente. –
@Mysticial trasforma il tuo commento in una risposta - è l'unico waaay ... – ldrumm