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 :

Optimiser une recherche d'extremum : fabs(x) ou x*x ?


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2007
    Messages : 27
    Points : 22
    Points
    22
    Par défaut Optimiser une recherche d'extremum : fabs(x) ou x*x ?
    Bonjour,

    Je cherche l'extremum entre deux nombres (positif ou négatif) de type float.

    J'ai deux tests possibles pour trouver l'extremum :
    - soit je compare les valeurs absolues avec fabs()
    - soit je compare les valeurs au carré

    La fonction fabs() travail avec un type double, je dois donc caster mes nombres qui sont en float.

    Le résultat sera le même mais je aimerai savoir quelle solution est la moins gourmande en calcul, étant donné que ce test va tourner en boucle.

    Merci.

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Ben... Le plus simple est de bencher les deux, non ? Parce qu'en fonction de ton système, OS, compilateur, etc. les résultats sont variables à l'infini ou presque : il vaut donc mieux faire le test directement sur la machine cible finale.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par jeanlouis_lecodeur Voir le message
    La fonction fabs() travail avec un type double, je dois donc caster mes nombres qui sont en float.
    La fonction oui, mais pas la macro, si tu as un compilateur C99 avec la bibliothèque C qui va bien, tu peux inclure tgmath.h, dans ce cas, tu peux passer à la macro fabs() un argument de type, float, double, long double et même complex invariablement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    de toutes façons c'est forcément fabs le plus court.. non ?

    fabs ne comprend qu'un test.
    la multiplication de 2 nombres est plus complexe, me semble-t-il..


    ou me trompe-je ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    de toutes façons c'est forcément fabs le plus court.. non ?

    fabs ne comprend qu'un test.
    la multiplication de 2 nombres est plus complexe, me semble-t-il..


    ou me trompe-je ?
    Je suis d'accord, le standard reste la norme IEEE754, qui utilise le premier bit pour coder le signe, c'est un banal test dans ce cas, autrement, dans les autres implémentations, pour ce que j'ai rencontré, c'était pareil. Après c'est au cas par cas suivant l'implémentation.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

Discussions similaires

  1. [9.2] Optimiser une recherche dans un dictionnaire clés/valeurs
    Par gorgonite dans le forum Requêtes
    Réponses: 16
    Dernier message: 04/08/2014, 16h34
  2. Optimiser une recherche de chaines de caractères
    Par Mat.M dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 08/06/2010, 21h06
  3. Réponses: 6
    Dernier message: 23/04/2009, 10h07
  4. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55
  5. Optimisation d'une recherche et mise à jour
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/01/2005, 18h38

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