GMP计算器陷入权力

时间:2015-12-17 09:37:48

标签: c calculator gmp

我刚刚编写了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;
}

1 个答案:

答案 0 :(得分:1)

mpf_pow_ui()的签名是

void mpf_pow_ui (mpf_t rop, const mpf_t op1, unsigned long int op2)

如果您需要浮点指数,请使用MPFR库,该库在GMP之上运行。