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++Builder Discussion :

fonction math : pow()


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut fonction math : pow()
    Bonjour,

    J'ai un etrange comportement de ma fonction pow() de <math.h>
    En effet, pow(0,0) génére une erreur alors que le résultat devrait etre 1.
    Ce que me donne dailleurs d'autre compilateur sous linux.
    Quelqu'un a deja observé ca, ou es-je un souci dans mon BDS6
    Merci d'avance

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    uriotcea a ecrit:
    Bonjour,

    J'ai un etrange comportement de ma fonction pow() de <math.h>
    En effet, pow(0,0) génére une erreur alors que le résultat devrait etre 1.
    Ce que me donne dailleurs d'autre compilateur sous linux.
    Quelqu'un a deja observé ca, ou es-je un souci dans mon BDS6
    Merci d'avance
    voila ce que donne l"aide
    Prototype

    double pow(double x, double y);

    long double powl(long double x, long double y);
    #include <math.h>
    #include <stdio.h>

    int main(void)
    {
    double x = 2.0, y = 3.0;

    printf("%lf raised to %lf is %lf\n", x, y, pow(x, y));
    return 0;
    }

  3. #3
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Oui, et alors ????

  4. #4
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Dans l'aide j'ai ca:
    On success, pow and powl return the value calculated of x to the power of y.

    Sometimes the arguments passed to these functions produce results that overflow or are incalculable. When the correct value would overflow, the functions return the value HUGE_VAL (pow) or _LHUGE_VAL (powl). Results of excessively large magnitude can cause the global variable errno to be set to

    ERANGE Result out of range

    If the argument x passed to pow or powl is real and less than 0, and y is not a whole number, or if x is 0 and y is less than 0, or you call pow(0,0), the global variable errno is set to

    EDOM Domain error

    Error handling for these functions can be modified through the functions _matherr and _matherrl.
    Il faut que x (dans x^y) soit strictement supérieur à 0. Je suppose donc que tu dois avoir une erreur de domaine. Ce n'est pas propre, mais si tu veux parer cette erreur, tu dois tester avant si x=y=0 et parer donner directement le résultat que tu connais.

  5. #5
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Oui ca je l'ai fait!
    Mais moi j'attendais d'une fonction mathématique quelle renvoie la valeur correcte et pas une erreur.
    Zero à la puissance zero doit donner 1. C'est mathématiquement vrai et simple. D'autres compilateurs essayés me donnent bien ce résultat attendu. D'ou ma surprise.
    Dans le meme genre j'ai vue que certaine fonction tel que atan() donne aussi des resultats faux pour la library fastmath.h
    Franchement je trouve toutes ces erreurs trés graves.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Par défaut
    En mathématique zéro à la puissance zéro est indéterminé :
    5 à la puissance 0 =1
    0 à la puissance 3 = 0;

    Alors 0 à la puissance 0 ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème fonction Math.pow
    Par suNiz dans le forum Débuter avec Java
    Réponses: 21
    Dernier message: 13/01/2012, 12h47
  2. Réponses: 1
    Dernier message: 25/12/2006, 16h03
  3. la fonction puissance pow() ? entier, réel ?
    Par italiasky dans le forum C
    Réponses: 9
    Dernier message: 03/12/2006, 17h41
  4. coordonnées géométriques et fonctions maths
    Par passie dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/09/2006, 13h27
  5. aide fonction math[racine,cos(),sin(),..]VB6
    Par am.adnane dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/12/2005, 18h40

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