Bonjour, je suis plus ou moins débutant en C, et je rencontre un
problème assez génant avec les racines cubiques.
Que ce soit avec la fonction pow de math.h :
pow(x3, 1./3)
Ou avec la fonction cbrt de cette même librairie
cbrt(x3)
Si mon x3 vaut 64, la racine cubique va valloir 3.99999999999 (et des
poussières) et non 4. Ce qui est assez embetant pour vérifier si ma
racine cubique est entière ou non.
Auriez vous une idée pour vérifier que ma racine cubique est entière?
Merci d'avance !
Bonjour, je suis plus ou moins débutant en C, et je rencontre un
problème assez génant avec les racines cubiques.
Que ce soit avec la fonction pow de math.h :
pow(x3, 1./3)
Ou avec la fonction cbrt de cette même librairie
cbrt(x3)
Si mon x3 vaut 64, la racine cubique va valloir 3.99999999999 (et des
poussières) et non 4. Ce qui est assez embetant pour vérifier si ma
racine cubique est entière ou non.
Auriez vous une idée pour vérifier que ma racine cubique est entière?
Merci d'avance !
Bonjour, je suis plus ou moins débutant en C, et je rencontre un
problème assez génant avec les racines cubiques.
Que ce soit avec la fonction pow de math.h :
pow(x3, 1./3)
Ou avec la fonction cbrt de cette même librairie
cbrt(x3)
Si mon x3 vaut 64, la racine cubique va valloir 3.99999999999 (et des
poussières) et non 4. Ce qui est assez embetant pour vérifier si ma
racine cubique est entière ou non.
Auriez vous une idée pour vérifier que ma racine cubique est entière?
Merci d'avance !
Bonjour, je suis plus ou moins débutant en C, et je rencontre un
problème assez génant avec les racines cubiques.
Que ce soit avec la fonction pow de math.h :
pow(x3, 1./3)
Ou avec la fonction cbrt de cette même librairie
cbrt(x3)
Si mon x3 vaut 64, la racine cubique va valloir 3.99999999999 (et des
poussières) et non 4. Ce qui est assez embetant pour vérifier si ma
racine cubique est entière ou non.
Auriez vous une idée pour vérifier que ma racine cubique est entièr e?
Bonjour, je suis plus ou moins débutant en C, et je rencontre un
problème assez génant avec les racines cubiques.
Que ce soit avec la fonction pow de math.h :
pow(x3, 1./3)
Ou avec la fonction cbrt de cette même librairie
cbrt(x3)
Si mon x3 vaut 64, la racine cubique va valloir 3.99999999999 (et des
poussières) et non 4. Ce qui est assez embetant pour vérifier si ma
racine cubique est entière ou non.
Auriez vous une idée pour vérifier que ma racine cubique est entièr e?
Bonjour, je suis plus ou moins débutant en C, et je rencontre un
problème assez génant avec les racines cubiques.
Que ce soit avec la fonction pow de math.h :
pow(x3, 1./3)
Ou avec la fonction cbrt de cette même librairie
cbrt(x3)
Si mon x3 vaut 64, la racine cubique va valloir 3.99999999999 (et des
poussières) et non 4. Ce qui est assez embetant pour vérifier si ma
racine cubique est entière ou non.
Auriez vous une idée pour vérifier que ma racine cubique est entièr e?
En pratique, la seule réponse à laquelle on sait répondre (presque)
sans calcul est ``la valeur de la racine cubique est entière à epsilon
près'' (presque sans calcul parceque le coût d'une soustraction est
négligeable devant les autres opérations en virgule flottante).
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
En pratique, la seule réponse à laquelle on sait répondre (presque)
sans calcul est ``la valeur de la racine cubique est entière à epsilon
près'' (presque sans calcul parceque le coût d'une soustraction est
négligeable devant les autres opérations en virgule flottante).
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
En pratique, la seule réponse à laquelle on sait répondre (presque)
sans calcul est ``la valeur de la racine cubique est entière à epsilon
près'' (presque sans calcul parceque le coût d'une soustraction est
négligeable devant les autres opérations en virgule flottante).
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
En news:, Michaël Grünewald va escriure:En pratique, la seule réponse à laquelle on sait répondre (presque)
sans calcul est ``la valeur de la racine cubique est entière à epsil on
près'' (presque sans calcul parceque le coût d'une soustraction est
négligeable devant les autres opérations en virgule flottante).
Et sauf qu'il faut que tu calcules "epsilon" pour l'opération « racine
cubique »...
(OK, ce n'est nécessaire qu'une seule fois)
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
Et cela ne marche que si tu ne dépasses pas l'espace de représentatio n en
flottant des nombres entiers, souvent 1<<53, c'est-à-dire environ 1<<18 au
cube. Et 1<<18 c'est 262144, ce n'est pas un nombre très grand, donc il vaut
mieux tenir compte de ce « biais » avant d'être catégorique.
En news:86bq8yu23x.fsf@Llea.celt.neu, Michaël Grünewald va escriure:
En pratique, la seule réponse à laquelle on sait répondre (presque)
sans calcul est ``la valeur de la racine cubique est entière à epsil on
près'' (presque sans calcul parceque le coût d'une soustraction est
négligeable devant les autres opérations en virgule flottante).
Et sauf qu'il faut que tu calcules "epsilon" pour l'opération « racine
cubique »...
(OK, ce n'est nécessaire qu'une seule fois)
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
Et cela ne marche que si tu ne dépasses pas l'espace de représentatio n en
flottant des nombres entiers, souvent 1<<53, c'est-à-dire environ 1<<18 au
cube. Et 1<<18 c'est 262144, ce n'est pas un nombre très grand, donc il vaut
mieux tenir compte de ce « biais » avant d'être catégorique.
En news:, Michaël Grünewald va escriure:En pratique, la seule réponse à laquelle on sait répondre (presque)
sans calcul est ``la valeur de la racine cubique est entière à epsil on
près'' (presque sans calcul parceque le coût d'une soustraction est
négligeable devant les autres opérations en virgule flottante).
Et sauf qu'il faut que tu calcules "epsilon" pour l'opération « racine
cubique »...
(OK, ce n'est nécessaire qu'une seule fois)
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
Et cela ne marche que si tu ne dépasses pas l'espace de représentatio n en
flottant des nombres entiers, souvent 1<<53, c'est-à-dire environ 1<<18 au
cube. Et 1<<18 c'est 262144, ce n'est pas un nombre très grand, donc il vaut
mieux tenir compte de ce « biais » avant d'être catégorique.
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
Et cela ne marche que si tu ne dépasses pas l'espace de représentation en
flottant des nombres entiers, souvent 1<<53, c'est-à-dire environ 1<<18 au
cube. Et 1<<18 c'est 262144, ce n'est pas un nombre très grand, donc il vaut
mieux tenir compte de ce « biais » avant d'être catégorique.
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
Et cela ne marche que si tu ne dépasses pas l'espace de représentation en
flottant des nombres entiers, souvent 1<<53, c'est-à-dire environ 1<<18 au
cube. Et 1<<18 c'est 262144, ce n'est pas un nombre très grand, donc il vaut
mieux tenir compte de ce « biais » avant d'être catégorique.
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
Et cela ne marche que si tu ne dépasses pas l'espace de représentation en
flottant des nombres entiers, souvent 1<<53, c'est-à-dire environ 1<<18 au
cube. Et 1<<18 c'est 262144, ce n'est pas un nombre très grand, donc il vaut
mieux tenir compte de ce « biais » avant d'être catégorique.
Les calculs en virgule flottante sont des calculs approchés. Pour
tester l'égalité de a et de b on teste en réalité si la différence est
petite, au moyen du test
fpclassifiy(a - b) == FP_ZERO
Les calculs en virgule flottante sont des calculs approchés. Pour
tester l'égalité de a et de b on teste en réalité si la différence est
petite, au moyen du test
fpclassifiy(a - b) == FP_ZERO
Les calculs en virgule flottante sont des calculs approchés. Pour
tester l'égalité de a et de b on teste en réalité si la différence est
petite, au moyen du test
fpclassifiy(a - b) == FP_ZERO
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
Et cela ne marche que si tu ne dépasses pas l'espace de
représentation en flottant des nombres entiers, souvent 1<<53,
c'est-à-dire environ 1<<18 au cube. Et 1<<18 c'est 262144, ce n'est
pas un nombre très grand, donc il vaut mieux tenir compte de ce «
biais » avant d'être catégorique.
Je ne comprend pas trop la remarque. L'algorithme (arrondi élevé au
cube) ne pose pas de problème ici, non ? C'est juste que si la racine
cubique que l'on obtient est supérieure à ton 2^18, alors c'est que le
nombre entier qu'on a voulu traiter au départ n'a probablement pas pu
être représenté fidèlement sur un flottant ; mais enfin, ce n'est pas
lié à l'algo lui-même, c'est un problème annexe.
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
Et cela ne marche que si tu ne dépasses pas l'espace de
représentation en flottant des nombres entiers, souvent 1<<53,
c'est-à-dire environ 1<<18 au cube. Et 1<<18 c'est 262144, ce n'est
pas un nombre très grand, donc il vaut mieux tenir compte de ce «
biais » avant d'être catégorique.
Je ne comprend pas trop la remarque. L'algorithme (arrondi élevé au
cube) ne pose pas de problème ici, non ? C'est juste que si la racine
cubique que l'on obtient est supérieure à ton 2^18, alors c'est que le
nombre entier qu'on a voulu traiter au départ n'a probablement pas pu
être représenté fidèlement sur un flottant ; mais enfin, ce n'est pas
lié à l'algo lui-même, c'est un problème annexe.
Pour avoir une réponse catégorique, un moyen est effectivement
d'arrondir à l'entier le plus proche et d'élever au cube.
Et cela ne marche que si tu ne dépasses pas l'espace de
représentation en flottant des nombres entiers, souvent 1<<53,
c'est-à-dire environ 1<<18 au cube. Et 1<<18 c'est 262144, ce n'est
pas un nombre très grand, donc il vaut mieux tenir compte de ce «
biais » avant d'être catégorique.
Je ne comprend pas trop la remarque. L'algorithme (arrondi élevé au
cube) ne pose pas de problème ici, non ? C'est juste que si la racine
cubique que l'on obtient est supérieure à ton 2^18, alors c'est que le
nombre entier qu'on a voulu traiter au départ n'a probablement pas pu
être représenté fidèlement sur un flottant ; mais enfin, ce n'est pas
lié à l'algo lui-même, c'est un problème annexe.
(Michaël Grünewald) writes:Les calculs en virgule flottante sont des calculs approchés. Pour
tester l'égalité de a et de b on teste en réalité si la différ ence est
petite, au moyen du test
fpclassifiy(a - b) == FP_ZERO
Ce n'est certainement pas le but du fpclassify provenant de la norme C qui
est -- comme son nom l'indique -- d'indiquer la nature du flottant (NaN,
infini, etc...)
Je peux me gourer en ce qui concerne les cas particuliers (NaN...) mais ca
ne fait certainement pas un test d'egalite approximatif -- et l'interface
n'est pas bonne pour cela, un test d'egalite approximatif prendrait les
deux nombres en parametre (si je suis en train de manipuler deux nombres
proches de 1E-30, il ne sont pas d'office egaux).
michaelgrunewald@yahoo.fr (Michaël Grünewald) writes:
Les calculs en virgule flottante sont des calculs approchés. Pour
tester l'égalité de a et de b on teste en réalité si la différ ence est
petite, au moyen du test
fpclassifiy(a - b) == FP_ZERO
Ce n'est certainement pas le but du fpclassify provenant de la norme C qui
est -- comme son nom l'indique -- d'indiquer la nature du flottant (NaN,
infini, etc...)
Je peux me gourer en ce qui concerne les cas particuliers (NaN...) mais ca
ne fait certainement pas un test d'egalite approximatif -- et l'interface
n'est pas bonne pour cela, un test d'egalite approximatif prendrait les
deux nombres en parametre (si je suis en train de manipuler deux nombres
proches de 1E-30, il ne sont pas d'office egaux).
(Michaël Grünewald) writes:Les calculs en virgule flottante sont des calculs approchés. Pour
tester l'égalité de a et de b on teste en réalité si la différ ence est
petite, au moyen du test
fpclassifiy(a - b) == FP_ZERO
Ce n'est certainement pas le but du fpclassify provenant de la norme C qui
est -- comme son nom l'indique -- d'indiquer la nature du flottant (NaN,
infini, etc...)
Je peux me gourer en ce qui concerne les cas particuliers (NaN...) mais ca
ne fait certainement pas un test d'egalite approximatif -- et l'interface
n'est pas bonne pour cela, un test d'egalite approximatif prendrait les
deux nombres en parametre (si je suis en train de manipuler deux nombres
proches de 1E-30, il ne sont pas d'office egaux).
Aïe, je croyais pourtant me souvenir qu'il existait un moyen simple de
tester si des nombres sont ``à peu près égaux''.
Aïe, je croyais pourtant me souvenir qu'il existait un moyen simple de
tester si des nombres sont ``à peu près égaux''.
Aïe, je croyais pourtant me souvenir qu'il existait un moyen simple de
tester si des nombres sont ``à peu près égaux''.