g un doute sur la fonction pow... (resolu) [c] - C++ - Programmation
Marsh Posté le 30-01-2003 à 14:54:08
man pow:
double pow (double x, double y); |
pas de commentaire sur les nombres négatifs
Marsh Posté le 30-01-2003 à 15:09:09
ca m avance pas...
ca dit rien sur les fractions
et pourtant mon prog fait moins n importe quoi depuis que je met pow(a, 1./3.) et que je place le signe en dehors...
Marsh Posté le 30-01-2003 à 15:13:01
La calculatrice de Windows me balance un "Invalid input for function" quand je fais (-5)^(1/3)
Delphi me balance un "Invalid floating point operation."
Et C++Builder me donne un beau "pow: DOMAIN error"
Marsh Posté le 30-01-2003 à 15:17:03
http://www.lri.fr/~aze/page_c/aide_c/puiss.html
si ça peut aider
Marsh Posté le 30-01-2003 à 15:22:33
plus sérieusement, pow travaille avec des doubles ... or la racine d'un nombre négatif est COMPLEXE donc pow doit surement retourné un erreur ...
errno = EDOM L'argument x est négatif, et y n'est pas entier. Le résultat serait un nombre complexe. |
(source: man pow)
Marsh Posté le 30-01-2003 à 15:34:03
merci bcp les mecs
c etait bien le a negatif qui faisait tout merder
et j avais oublie de le changer a un endroit
Marsh Posté le 30-01-2003 à 15:38:50
western a écrit : plus sérieusement, pow travaille avec des doubles ... or la racine d'un nombre négatif est COMPLEXE donc pow doit surement retourné un erreur ...
(source: man pow) |
Heu, jusqu'à preuve du contraire, la racine cubique de -1, bah, c'est -1 ... Voir même, POW(-1,2n+1) = -1, donc on est en droit d'attendre que POW(-x,1/2n+1) = -POW(x,1/2n+1)
Donc c'est mal fichu POW ...
Marsh Posté le 30-01-2003 à 17:28:37
Par definition, en maths, x ^ y quand x < 0 n'est définie que pour y >= 0 ou pour -1/y dans N.
Dans ton cas, tu fait pow(x,1./3.), hors tu devrais savoir que "1./3." n'est pas égal à "1/3" car c'est une approximation ! Il est impossible d'écrire 1/3 avec un double, donc il n'est pas possible de calculer pow(-1,1./3.)
Marsh Posté le 30-01-2003 à 17:33:58
Kristoph a écrit : Par definition, en maths, x ^ y quand x < 0 n'est définie que pour y >= 0 ou pour -1/y dans N. |
Ah vi, c'est vrai ça ... J'oublie toujours que l'info n'est pas le monde parfait des mathématiques ... Faudrai qu'il y est quand même un moyen pour utiliser les racines nième en utilisant un type decimal pour bien faire.
Marsh Posté le 30-01-2003 à 17:50:29
http://www.developpez.net/forums/viewtopic.php?t=55321
coïncidence ?
(forum delphi, donc je suppose que oui)
Marsh Posté le 30-01-2003 à 17:54:33
antp a écrit : http://www.developpez.net/forums/viewtopic.php?t=55321 |
C'est amusant ça. C'est sans doute une coincidence, puisqu'ici, c'est en C/C++, mais bon ...
Marsh Posté le 30-01-2003 à 14:33:34
comment fait on une racine cubique ?
pow(a, 1/3) ???
ca change qqch si a est negatif ?
merci d avance
Message édité par TiTan91 le 30-01-2003 à 15:34:38