Библиотека MPFR: как добавить две переменные mprf_t и вывести результат?

Я ищу пример, иллюстрирующий mpfr библиотека, но я не могу найти ничего полезного.

Я хотел бы создать две переменные, которые могут содержать до 100 цифр плавающего числа.

Эти переменные должны быть инициализированы с использованием строки.

Затем я хотел бы добавить их и распечатать результат на экране.

Я нашел этот код:

#include <stdio.h>

#include <gmp.h>
#include <mpfr.h>

int main(void)
{
unsigned int i;
mpfr_t s, t, u;

mpfr_init2(t, 200);
mpfr_set_d(t, 1.0, GMP_RNDD);
mpfr_init2(s, 200);
mpfr_set_d(s, 1.0, GMP_RNDD);
mpfr_init2(u, 200);
for (i = 1; i <= 100; i++)
{
mpfr_mul_ui(t, t, i, GMP_RNDU);
mpfr_set_d(u, 1.0, GMP_RNDD);
mpfr_div(u, u, t, GMP_RNDD);
mpfr_add(s, s, u, GMP_RNDD);
}
printf("Sum is ");
mpfr_out_str(stdout, 10, 0, s, GMP_RNDD);
putchar('\n');
mpfr_clear(s);
mpfr_clear(t);
mpfr_clear(u);
return 0;
}

Затем я попробовал следующий код:

  #include <stdio.h>

#include <gmp.h>
#include <mpfr.h>

int main(void)
{
unsigned int i;
mpfr_t s, t, u;
//add numbers 1.456774343454354355435354325213 and
//14.456774343454354355435354325213
mpfr_init2(t, 200);
mpfr_set_d(t, 1.456774343454354355435354325213, GMP_RNDD);
mpfr_init2(s, 200);
mpfr_set_d(s, 14.456774343454354355435354325213, GMP_RNDD);
mpfr_init2(u, 200);
mpfr_add(u, s, t, GMP_RNDD);
printf("Sum is ");
mpfr_out_str(stdout, 10, 0, u, GMP_RNDD);
putchar('\n');
mpfr_clear(s);
mpfr_clear(t);
mpfr_clear(u);
return 0;
}

результат

Sum is 1.5913548686908708384990518425183836370706558227539062500000000e1

что не так должно быть как минимум 2

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]