2017-07-22 17 views
0

Le compilateur C++ du système avec Mac OS X (El Capitan) utilise-t-il un comportement à virgule flottante IEEE strict par défaut? J'essaye de déboguer quelques différences entre Mac OS X et Linux, et je pense qu'il pourrait être lié aux optimisations de compilateur.Contrôle des optimisations à virgule flottante Compilateur OS X C++

La page de manuel du compilateur ne semblait pas avoir d'informations sur le contrôle du comportement en virgule flottante?

+3

Quels aspects du "comportement en virgule flottante" cherchez-vous à contrôler? Quel est le problème que vous observez? À quoi ressemble votre code? S'il vous plaît poster un [mcve]. –

Répondre

0

Je m'attendrais à ce que le matériel et le compilateur s'efforcent d'être compatibles avec IEEE 754. Il peut y avoir des bugs bien sûr. En règle générale, je voudrais pas attendre différentes plates-formes pour produire des résultats identiques, en particulier en raison de petites différences dans la sortie des fonctions mathématiques de la bibliothèque standard.

Je présume que par le «compilateur C++ du système», vous voulez dire XCode et clang. clang (et g ++) ont des optimisations qui peuvent générer du code qui provoquera des différences, par ex. voir -ffast-math - lien pour GCC mais clang est probablement le même.

+0

Les compilateurs gcc ont tendance à être conformes, par défaut. Les optimisations mathématiques avec perte doivent être explicitement activées. Les deux compilateurs Microsoft Visual Studio et Intel effectuent des optimisations très agressives qui peuvent entraîner une perte de précision numérique. Leurs drapeaux sont documentés. Je n'ai rien trouvé pour les compilateurs Mac OS X. – Juan

+0

@Juan FYI https://pastebin.com/raw/xLy7P9vz –

+0

Je ne peux pas accéder à pastebin à partir de mon ordinateur de travail. Cette page https://clang.llvm.org/docs/ClangCommandLineReference.html liste -ffast-math pour clang. –