#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 r10447 = 1.0f;
        float r10448 = x;
        float r10449 = r10448 + r10447;
        float r10450 = r10447 / r10449;
        float r10451 = 2.0f;
        float r10452 = r10451 / r10448;
        float r10453 = r10450 - r10452;
        float r10454 = r10448 - r10447;
        float r10455 = r10447 / r10454;
        float r10456 = r10453 + r10455;
        return r10456;
}

double f_id(double x) {
        double r10457 = 1.0;
        double r10458 = x;
        double r10459 = r10458 + r10457;
        double r10460 = r10457 / r10459;
        double r10461 = 2.0;
        double r10462 = r10461 / r10458;
        double r10463 = r10460 - r10462;
        double r10464 = r10458 - r10457;
        double r10465 = r10457 / r10464;
        double r10466 = r10463 + r10465;
        return r10466;
}


double f_of(float x) {
        float r10467 = 2.0f;
        float r10468 = x;
        float r10469 = fma(r10468, r10468, r10468);
        float r10470 = r10467 / r10469;
        float r10471 = 1.0f;
        float r10472 = r10468 - r10471;
        float r10473 = r10470 / r10472;
        return r10473;
}

double f_od(double x) {
        double r10474 = 2.0;
        double r10475 = x;
        double r10476 = fma(r10475, r10475, r10475);
        double r10477 = r10474 / r10476;
        double r10478 = 1.0;
        double r10479 = r10475 - r10478;
        double r10480 = r10477 / r10479;
        return r10480;
}

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 r10481, r10482, r10483, r10484, r10485, r10486, r10487, r10488, r10489, r10490;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r10481, "1", 10, MPFR_RNDN);
        mpfr_init(r10482);
        mpfr_init(r10483);
        mpfr_init(r10484);
        mpfr_init_set_str(r10485, "2", 10, MPFR_RNDN);
        mpfr_init(r10486);
        mpfr_init(r10487);
        mpfr_init(r10488);
        mpfr_init(r10489);
        mpfr_init(r10490);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10482, x, MPFR_RNDN);
        mpfr_add(r10483, r10482, r10481, MPFR_RNDN);
        mpfr_div(r10484, r10481, r10483, MPFR_RNDN);
        ;
        mpfr_div(r10486, r10485, r10482, MPFR_RNDN);
        mpfr_sub(r10487, r10484, r10486, MPFR_RNDN);
        mpfr_sub(r10488, r10482, r10481, MPFR_RNDN);
        mpfr_div(r10489, r10481, r10488, MPFR_RNDN);
        mpfr_add(r10490, r10487, r10489, MPFR_RNDN);
        return mpfr_get_d(r10490, MPFR_RNDN);
}

static mpfr_t r10491, r10492, r10493, r10494, r10495, r10496, r10497;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r10491, "2", 10, MPFR_RNDN);
        mpfr_init(r10492);
        mpfr_init(r10493);
        mpfr_init(r10494);
        mpfr_init_set_str(r10495, "1", 10, MPFR_RNDN);
        mpfr_init(r10496);
        mpfr_init(r10497);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10492, x, MPFR_RNDN);
        mpfr_fma(r10493, r10492, r10492, r10492, MPFR_RNDN);
        mpfr_div(r10494, r10491, r10493, MPFR_RNDN);
        ;
        mpfr_sub(r10496, r10492, r10495, MPFR_RNDN);
        mpfr_div(r10497, r10494, r10496, MPFR_RNDN);
        return mpfr_get_d(r10497, MPFR_RNDN);
}

static mpfr_t r10498, r10499, r10500, r10501, r10502, r10503, r10504;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r10498, "2", 10, MPFR_RNDN);
        mpfr_init(r10499);
        mpfr_init(r10500);
        mpfr_init(r10501);
        mpfr_init_set_str(r10502, "1", 10, MPFR_RNDN);
        mpfr_init(r10503);
        mpfr_init(r10504);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10499, x, MPFR_RNDN);
        mpfr_fma(r10500, r10499, r10499, r10499, MPFR_RNDN);
        mpfr_div(r10501, r10498, r10500, MPFR_RNDN);
        ;
        mpfr_sub(r10503, r10499, r10502, MPFR_RNDN);
        mpfr_div(r10504, r10501, r10503, MPFR_RNDN);
        return mpfr_get_d(r10504, MPFR_RNDN);
}

