IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

test d'égalité en double


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut test d'égalité en double
    Bonjour,

    Un problème classique en soit mais bon, je n'arrive pas à me
    convaincre d'un bon test.
    Je veux faire une comparaison a == b ou a et b sont des doubles.
    J'ai une source mais de 70 pages à ce sujet what every computer
    scientist should know...
    existe-t-il une version plus courte ? où une autre source ?

    J'aimerai pouvoir répondre à la question
    si j'ai obtenu 'a' à partir de 100 opérations et 'b' à partir de 847 opérations
    élementaires quel test faire pour a == b
    bien sur en fonction de la base et de la précision.

  2. #2
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    http://floating-point-gui.de/

    meme si la lecure du Goldberg est impérative. 70 pages c'est pas la mort

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut
    Citation Envoyé par Joel F Voir le message
    http://floating-point-gui.de/

    meme si la lecure du Goldberg est impérative. 70 pages c'est pas la mort
    n'est pas impérative ?
    70 pages c'est pas la mort, si quand même si tu veux comprendre le sujet
    sérieusement ça prend facile 10 min par pages vu qu'il y a l'air d'avoir du contenu dans ce papier, j'ai envie de le lire mais j'ai un peu envie de déblayer le terrain.

    ram-0000
    c'est un peu plus compliqué que ça, ma problèmatique est assez général
    j'ai
    a = f(....)
    et
    b = g(.....)
    je sais que a est obtenu à partir de N opérations élémentaires
    et b à partir de M élémentaires
    quel test est raisonnable pour a == b
    ça doit être tout de même indépendant de l'ordre de a et b
    donc en utilisant fabs mais bon c'est plutôt le choix du epsilon
    qui m'intéresse en l'occurence.
    Il faut regarder l'erreur relative aussi probablement, enfin je ne suis plus sûr
    de rien.

  4. #4
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut
    Citation Envoyé par Joel F Voir le message
    http://floating-point-gui.de/

    meme si la lecure du Goldberg est impérative. 70 pages c'est pas la mort
    Pour citer ton site

    "The article What Every Computer Scientist Should Know About Floating-Point Arithmetic gives a detailed introduction, and served as an inspiration for creating this website, mainly due to being a bit too detailed and intimidating to programmers without a scientific background."

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 489
    Par défaut
    Le plus simple, ne pas utilisez de flottant.
    Utilisez des bibliothèques de calcul symbolique.

  6. #6
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    en général, il faut faire un test en valeur absolue sur la différence entre les flottants, relativement à l'échelle de grandeur des flottants en question.

    Le test proposé dans la faq est très bien :
    http://cpp.developpez.com/faq/cpp/?p...ions_flottants

    Par contre, il faut bien distinguer ce type de test d'un test d'erreur.

    Remarque : le nombre d'opérations effectuées en amont pour obtenir a et b n'a pas réellement de sens. Il faut plutôt s'intéresser à la propagation des erreurs d'approximation dans vos calculs. Si vous comptez analyser votre algorithme, il faut vous tourner vers l'arithmétique flottante. Dans ce cas, je vous recommande la lecture du livre "The algebraic eigenvalue problem" de Wilkinson et celle du livre "Accuracy and stability of numerical algorithms" de Higham. Si votre problème concerne un algorithme en particulier, je peux éventuellement vous diriger vers des travaux plus précis.

  7. #7
    Membre averti
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Par défaut
    le sujet s'avère beaucoup plus ardu que prévu...

    La réponse de la FAQ est pas mal mais bon, le fameux epsilon est un epsilon
    local(valable au voisinage de 1) donc c'est ennuyeux pour moi.

    ça fait plusieurs fois que je tombe face à ce pb et j'aurai aimé une règle à la
    louche(rule of thumbs).
    moi mon problème, c'est j'ai un a = f(...)
    b = g(...) et mathématiquement sur le papier en cas de calcul exact, a = b
    je dois faire ce test en Cpp.
    Je pense que le nombre d'opérations pour obtenir a et b est important pour avoir un majorant de l'erreur sur a-b qui permettrait de choisir le epsilon sciemment et non en disant que "statistiquement les erreurs se compensent".

    Je crois même que l'explosion du premier Ariane 5 est lié à un pb de ce type, je n'envoie pas une fusée sur la lune mais peut-être demain !

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par mangeclous Voir le message
    quel test faire pour a == b
    Sur des flottants ou des double, il faut faire avec epsilon la valeur de ta précision de test.

    Attention, il faut que a soit plus grand que b, sinon, il faut inverser le test.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Test d'égalité et affectation
    Par Gaetch dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 12/07/2007, 09h36
  2. [Bug ?] intval et test d'égalité fait ce qui lui plait.
    Par titoumimi dans le forum Langage
    Réponses: 8
    Dernier message: 22/12/2006, 10h17
  3. pb test d'égalité
    Par Choupinou dans le forum Langage
    Réponses: 3
    Dernier message: 28/06/2006, 11h35
  4. [XSL] test d égalité
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 17/05/2006, 14h14
  5. Test d'égalité entre deux algorithmes, ça existe, est-ce faisable ?
    Par davcha dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 25/04/2006, 18h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo