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

char *name = "3frac (problem 3.3.3)";

double f_if(float x) {
        float r10695 = 1;
        float r10696 = x;
        float r10697 = r10696 + r10695;
        float r10698 = r10695 / r10697;
        float r10699 = 2;
        float r10700 = r10699 / r10696;
        float r10701 = r10698 - r10700;
        float r10702 = r10696 - r10695;
        float r10703 = r10695 / r10702;
        float r10704 = r10701 + r10703;
        return r10704;
}

double f_id(double x) {
        double r10705 = 1;
        double r10706 = x;
        double r10707 = r10706 + r10705;
        double r10708 = r10705 / r10707;
        double r10709 = 2;
        double r10710 = r10709 / r10706;
        double r10711 = r10708 - r10710;
        double r10712 = r10706 - r10705;
        double r10713 = r10705 / r10712;
        double r10714 = r10711 + r10713;
        return r10714;
}


double f_of(float x) {
        float r10715 = 2;
        float r10716 = x;
        float r10717 = fma(r10716, r10716, r10716);
        float r10718 = r10715 / r10717;
        float r10719 = 1;
        float r10720 = r10716 - r10719;
        float r10721 = r10718 / r10720;
        return r10721;
}

double f_od(double x) {
        double r10722 = 2;
        double r10723 = x;
        double r10724 = fma(r10723, r10723, r10723);
        double r10725 = r10722 / r10724;
        double r10726 = 1;
        double r10727 = r10723 - r10726;
        double r10728 = r10725 / r10727;
        return r10728;
}

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 r10729, r10730, r10731, r10732, r10733, r10734, r10735, r10736, r10737, r10738;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r10729, "1", 10, MPFR_RNDN);
        mpfr_init(r10730);
        mpfr_init(r10731);
        mpfr_init(r10732);
        mpfr_init_set_str(r10733, "2", 10, MPFR_RNDN);
        mpfr_init(r10734);
        mpfr_init(r10735);
        mpfr_init(r10736);
        mpfr_init(r10737);
        mpfr_init(r10738);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10730, x, MPFR_RNDN);
        mpfr_add(r10731, r10730, r10729, MPFR_RNDN);
        mpfr_div(r10732, r10729, r10731, MPFR_RNDN);
        ;
        mpfr_div(r10734, r10733, r10730, MPFR_RNDN);
        mpfr_sub(r10735, r10732, r10734, MPFR_RNDN);
        mpfr_sub(r10736, r10730, r10729, MPFR_RNDN);
        mpfr_div(r10737, r10729, r10736, MPFR_RNDN);
        mpfr_add(r10738, r10735, r10737, MPFR_RNDN);
        return mpfr_get_d(r10738, MPFR_RNDN);
}

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

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

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

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r10746, "2", 10, MPFR_RNDN);
        mpfr_init(r10747);
        mpfr_init(r10748);
        mpfr_init(r10749);
        mpfr_init_set_str(r10750, "1", 10, MPFR_RNDN);
        mpfr_init(r10751);
        mpfr_init(r10752);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10747, x, MPFR_RNDN);
        mpfr_fma(r10748, r10747, r10747, r10747, MPFR_RNDN);
        mpfr_div(r10749, r10746, r10748, MPFR_RNDN);
        ;
        mpfr_sub(r10751, r10747, r10750, MPFR_RNDN);
        mpfr_div(r10752, r10749, r10751, MPFR_RNDN);
        return mpfr_get_d(r10752, MPFR_RNDN);
}

