我刚刚编写了gmp计算器的代码。加法和乘法工作无可挑剔,但就指数而言,它会停止或打印无限数量的零。
如何使用gmp power函数使其工作?
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;
}
答案 0 :(得分:1)
mpf_pow_ui()
的签名是
void mpf_pow_ui (mpf_t rop, const mpf_t op1, unsigned long int op2)
如果您需要浮点指数,请使用MPFR库,该库在GMP之上运行。