#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Asymptote A";

double f_if(float x) {
        float r10709 = 1;
        float r10710 = x;
        float r10711 = r10710 + r10709;
        float r10712 = r10709 / r10711;
        float r10713 = r10710 - r10709;
        float r10714 = r10709 / r10713;
        float r10715 = r10712 - r10714;
        return r10715;
}

double f_id(double x) {
        double r10716 = 1;
        double r10717 = x;
        double r10718 = r10717 + r10716;
        double r10719 = r10716 / r10718;
        double r10720 = r10717 - r10716;
        double r10721 = r10716 / r10720;
        double r10722 = r10719 - r10721;
        return r10722;
}


double f_of(float x) {
        float r10723 = 1;
        float r10724 = r10723 + r10723;
        float r10725 = -r10724;
        float r10726 = x;
        float r10727 = r10726 + r10723;
        float r10728 = r10725 / r10727;
        float r10729 = r10726 - r10723;
        float r10730 = r10728 / r10729;
        return r10730;
}

double f_od(double x) {
        double r10731 = 1;
        double r10732 = r10731 + r10731;
        double r10733 = -r10732;
        double r10734 = x;
        double r10735 = r10734 + r10731;
        double r10736 = r10733 / r10735;
        double r10737 = r10734 - r10731;
        double r10738 = r10736 / r10737;
        return r10738;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r10739, r10740, r10741, r10742, r10743, r10744, r10745;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10739, "1", 10, MPFR_RNDN);
        mpfr_init(r10740);
        mpfr_init(r10741);
        mpfr_init(r10742);
        mpfr_init(r10743);
        mpfr_init(r10744);
        mpfr_init(r10745);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10740, x, MPFR_RNDN);
        mpfr_add(r10741, r10740, r10739, MPFR_RNDN);
        mpfr_div(r10742, r10739, r10741, MPFR_RNDN);
        mpfr_sub(r10743, r10740, r10739, MPFR_RNDN);
        mpfr_div(r10744, r10739, r10743, MPFR_RNDN);
        mpfr_sub(r10745, r10742, r10744, MPFR_RNDN);
        return mpfr_get_d(r10745, MPFR_RNDN);
}

static mpfr_t r10746, r10747, r10748, r10749, r10750, r10751, r10752, r10753;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10746, "1", 10, MPFR_RNDN);
        mpfr_init(r10747);
        mpfr_init(r10748);
        mpfr_init(r10749);
        mpfr_init(r10750);
        mpfr_init(r10751);
        mpfr_init(r10752);
        mpfr_init(r10753);
}

double f_fm(double x) {
        ;
        mpfr_add(r10747, r10746, r10746, MPFR_RNDN);
        mpfr_neg(r10748, r10747, MPFR_RNDN);
        mpfr_set_d(r10749, x, MPFR_RNDN);
        mpfr_add(r10750, r10749, r10746, MPFR_RNDN);
        mpfr_div(r10751, r10748, r10750, MPFR_RNDN);
        mpfr_sub(r10752, r10749, r10746, MPFR_RNDN);
        mpfr_div(r10753, r10751, r10752, MPFR_RNDN);
        return mpfr_get_d(r10753, MPFR_RNDN);
}

static mpfr_t r10754, r10755, r10756, r10757, r10758, r10759, r10760, r10761;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r10754, "1", 10, MPFR_RNDN);
        mpfr_init(r10755);
        mpfr_init(r10756);
        mpfr_init(r10757);
        mpfr_init(r10758);
        mpfr_init(r10759);
        mpfr_init(r10760);
        mpfr_init(r10761);
}

double f_dm(double x) {
        ;
        mpfr_add(r10755, r10754, r10754, MPFR_RNDN);
        mpfr_neg(r10756, r10755, MPFR_RNDN);
        mpfr_set_d(r10757, x, MPFR_RNDN);
        mpfr_add(r10758, r10757, r10754, MPFR_RNDN);
        mpfr_div(r10759, r10756, r10758, MPFR_RNDN);
        mpfr_sub(r10760, r10757, r10754, MPFR_RNDN);
        mpfr_div(r10761, r10759, r10760, MPFR_RNDN);
        return mpfr_get_d(r10761, MPFR_RNDN);
}

