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 :

-1.#IND00 Fonction pow


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de zakimadrid
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 76
    Par défaut -1.#IND00 Fonction pow
    bonsoir tout le monde,
    j'ai un petit problème avec la foction pow de la bibliothèque math.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<stdio.h>
    #include<math.h>
     
    int main(){
        double a,b,c,k=5;
        a=log(0.031215);
        b=pow(a,0.2);
        printf("%f",b);
        getchar();
        }
    j'ai comme résultat du printf -1.#IND00 ? quelqu'un connait-il la raison ?
    pourtant les paramètres passés a la fonction sont de type double

  2. #2
    Membre confirmé Avatar de zakimadrid
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 76
    Par défaut
    après quelques recherche j'ai découvert que le x passé en paramètre ne doit pas être négatif.
    le problème maintenant c'est comment faire pour levé un nombre négatif a une puissance y.

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 735
    Par défaut
    Bonsoir.

    Ma calculatrice me dit que cette opération donne un nombre complexe ≃ 1,037396596 + 0,753712745⋅𝑖.

    If x is negative (including negative infinity), then a domain error occurs, and a NaN (not a number) is returned.
    D'après la doc, la fonction pow devrait retourner une valeur de type NaN dans ce cas, ce qui correspond à l'erreur que tu nous montre.

    D'où proviennent-ils, peut-être sont-ils mal choisis ou viennent d'un mauvais calcul ?

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Je suis nul en math mais à tout hasard :

    a^b.

    En partant de l'hypothèse que b est toujours positif, il suffit peut être juste de faire |a|^b puis ensuite de regarder la parité de b.

    Si b est impair alors le résultat final sera négatif.

    Je me trompe ?

  5. #5
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    Je ne vois pas comment un nombre négatif multiplié par lui-même peut provoquer un nombre complexe... enfin bref, implémentation toossa...

    L'algo de gerald est le bon dans tous les cas !

    EDIT : par contre... si ton exposant n'est pas un nombre entier... c'est sûr que ça donnera un NaN et/ou un complexe...
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    En partant de l'hypothèse que b est toujours positif, il suffit peut être juste de faire |a|^b puis ensuite de regarder la parité de b.
    Sauf si l'exposant n'est pas entier. Par exemple (-5)^2,1.

    Dans ce cas, le nombre négatif est considéré comme un complexe dont l'argument vaudrait 180°, soit un demi-tour, ce qui le ramène sur l'axe des réels mais de l'autre côté. Cet argument multiplié par 2,1 donnerait donc 180×2 = 360° ce qui nous ramène au point de départ, + 180×0,1 = 18°.

    Par conséquent, (-5)^2,1 verrait ses deux parties (réelles et imaginaires) être strictement positives, (-5)^2,5 serait purement imaginaire (argument de 90°, donc sur l'axe vertical) et (-5)^2,7 aurait une partie réelle négative et une partie imaginaire positive. Tout cela avec une puissance supérieure ou égale à 2 et inférieure à 3.

    EDIT : par contre... si ton exposant n'est pas un nombre entier... c'est sûr que ça donnera un NaN et/ou un complexe...
    Il me semble que son exposant est rationnel depuis le premier post : b=pow(a,0.2);

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

Discussions similaires

  1. probléme avec la fonction pow
    Par arglow dans le forum C
    Réponses: 7
    Dernier message: 23/07/2007, 13h38
  2. erreur syntaxe sur une fonction pow
    Par superyoury dans le forum C
    Réponses: 3
    Dernier message: 10/06/2007, 18h16
  3. int, unsigned int, et la fonction pow
    Par salseropom dans le forum C
    Réponses: 11
    Dernier message: 22/12/2006, 17h53
  4. [Math.h] la fonction 'pow'
    Par fantomasmusic dans le forum C
    Réponses: 3
    Dernier message: 16/10/2006, 13h00
  5. Problème avec la fonction pow(les puissance)
    Par Clément76 dans le forum C
    Réponses: 10
    Dernier message: 04/10/2006, 12h44

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