The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
TYPEMAP
mpfr_t T_MPFR
SV_TO_MPFR T_SV_TO_MPFR

OUTPUT
T_MPFR
    {
        char buf[STR_MPFR_BUFSIZ];
        SV *fmt_sv = get_sv( "DateTime::Util::Astro::MPFR_FORMAT", 0 );
        char *fmt = fmt_sv ? SvPV_nolen(fmt_sv) : "%.64RNf";

        mpfr_snprintf(buf, STR_MPFR_BUFSIZ, fmt, $var);
        sv_setpv($arg, buf);
        mpfr_clear( $var );
    }

INPUT
T_SV_TO_MPFR
    {
        char *buf = SvPV_nolen($arg);
        mpfr_init_set_str( $var, buf, 10, GMP_RNDN );
    }