1
Je viens d'écrire le code pour une calculatrice gmp. L'addition et la multiplication fonctionnent impeccablement, mais en ce qui concerne l'exponentiation, elle arrête ou imprime un nombre infini de zéros. Comment utiliser la fonction d'alimentation gmp pour le faire fonctionner?Une calculatrice GMP est coincé avec des pouvoirs
gmptest.c
#include <stdio.h>
#include <gmp.h>
int main(int argc, char *argv[])
{
mpf_t x1;
mpf_t x2;
mpf_t result;
char operation;
char x_1[20];
char x_2[20];
printf("Choose between *,+ and ^\n");
scanf("%c\n", &operation);
fgets(x_1, sizeof(x_1), stdin);
fgets(x_2, sizeof(x_2), stdin);
mpf_init(x1);
mpf_init(x2);
mpf_init(result);
mpf_set_str(x1, x_1, 10);
mpf_set_str(x2, x_2, 10);
switch(operation) {
case '+':
mpf_add(result, x1, x2);
break;
case '^':
mpf_pow_ui(result, x1, x2);
break;
case '*':
mpf_mul(result, x1, x2);
break;
default:
printf("Error! operator is not correct");
break;
}
gmp_printf("%0.20Ff", x1);
printf(" %c ", operation);
gmp_printf("%0.20Ff", x2);
gmp_printf(" = %0.20Ff\n\n", result);
return 0;
}
Activez les avertissements du compilateur et faites attention à eux. Lisez également la documentation des fonctions que vous utilisez. Que signifie _ui dans le nom de votre fonction? –