Ce qui se passe ici :
#include <stdio.h>
#include <math.h>
int main(void) {
printf("17^12 = %lf\n", pow(17, 12));
printf("17^13 = %lf\n", pow(17, 13));
printf("17^14 = %lf\n", pow(17, 14));
}
J'obtiens ce résultat :
17^12 = 582622237229761.000000
17^13 = 9904578032905936.000000
17^14 = 168377826559400928.000000
13 et 14 ne correspondent pas à wolfram alpa cf :
12: 582622237229761.000000
582622237229761
13: 9904578032905936.000000
9904578032905937
14: 168377826559400928.000000
168377826559400929
De plus, elle n'est pas fausse d'une fraction étrange - elle est fausse d'exactement un !
Si c'est parce que j'ai atteint les limites de ce que je peux faire. pow()
peut faire pour moi, existe-t-il une alternative qui puisse calculer cela ? J'ai besoin d'une fonction qui puisse calculer x^y
où x^y
est toujours inférieur à ULLONG_MAX.