В этом GNU MPFR 4.0.2 я обнаружил:
Тип данных C для таких объектов - mpfr_t, внутренне определенный как одноэлементный массив структура (так что при передаче в качестве аргумента функции фактически передается указатель), а mpfr_ptr - это тип данных C, представляющий указатель на эту структуру.
И at 5.1 функция инициализации :
Объект mpfr_t должен быть инициализирован перед сохранением в нем первого значения. Для этой цели используются функции mpfr_init и mpfr_init2.
Function: void mpfr_init2 (mpfr_t x, mpfr_prec_t prec)
Инициализировать x, установить его точность равной точно до c бит и значение NaN. (Предупреждение: вместо этого соответствующая функция MPF инициализируется нулем.)
Обычно переменная должна инициализироваться только один раз или, по крайней мере, очищаться с помощью mpfr_clear между инициализациями. Чтобы изменить точность переменной, которая уже была инициализирована, используйте mpfr_set_pre c. Точность pre c должна быть целым числом между MPFR_PREC_MIN и MPFR_PREC_MAX (в противном случае поведение не определено).
Function: void mpfr_inits2 (mpfr_prec_t prec, mpfr_t x, ...)
Инициализировать все переменные mpfr_t заданной переменной аргумент va_list, установить их точность должна быть точно до c бит, а их значение - до NaN. См. Mpfr_init2 для более подробной информации. Предполагается, что va_list состоит только из типа mpfr_t (или эквивалентно mpfr_ptr). Он начинается с x и заканчивается при обнаружении нулевого указателя (тип которого также должен быть mpfr_ptr).
Один пример:
{
mpfr_t x, y;
mpfr_init (x); /* use default precision */
mpfr_init2 (y, 256); /* precision exactly 256 bits */
…
/* When the program is about to exit, do ... */
mpfr_clear (x);
mpfr_clear (y);
mpfr_free_cache (); /* free the cache for constants like pi */
}
Надеюсь, это поможет вам.