Compilateurs
Pourquoi un compilateur, sous réglage strict, ne réordonne-t-il pas de lui-même l'addition en virgule flottante (a + b) + c en a + (b + c) ?
- AParce qu'à cause des erreurs d'arrondi l'associativité n'est pas vérifiée et le résultat peut changer
- BParce que le réordonnancement augmente le nombre d'additions
- CParce que l'ordre des additions en virgule flottante est fixé automatiquement par le matériel
Afficher la réponse et l'explication
Réponse : A. Parce qu'à cause des erreurs d'arrondi l'associativité n'est pas vérifiée et le résultat peut changer
En virgule flottante, chaque addition arrondit le résultat au nombre de chiffres représentable ; changer l'ordre des calculs peut donc modifier légèrement le résultat. Par exemple, additionner d'abord un très grand nombre et un petit fait disparaître le petit par arrondi, alors qu'additionner d'abord les petits entre eux peut le préserver. Un compilateur en réglage strict conserve donc l'ordre. Si l'on choisit un réglage tolérant ces différences (mathématiques rapides, etc.), il peut réordonner pour vectoriser. Le nombre d'additions ne change pas.