#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 r10458 = 1.0f;
        float r10459 = x;
        float r10460 = r10459 + r10458;
        float r10461 = r10458 / r10460;
        float r10462 = 2.0f;
        float r10463 = r10462 / r10459;
        float r10464 = r10461 - r10463;
        float r10465 = r10459 - r10458;
        float r10466 = r10458 / r10465;
        float r10467 = r10464 + r10466;
        return r10467;
}

double f_id(double x) {
        double r10468 = 1.0;
        double r10469 = x;
        double r10470 = r10469 + r10468;
        double r10471 = r10468 / r10470;
        double r10472 = 2.0;
        double r10473 = r10472 / r10469;
        double r10474 = r10471 - r10473;
        double r10475 = r10469 - r10468;
        double r10476 = r10468 / r10475;
        double r10477 = r10474 + r10476;
        return r10477;
}


double f_of(float x) {
        float r10478 = 2.0f;
        float r10479 = x;
        float r10480 = fma(r10479, r10479, r10479);
        float r10481 = r10478 / r10480;
        float r10482 = 1.0f;
        float r10483 = r10479 - r10482;
        float r10484 = r10481 / r10483;
        return r10484;
}

double f_od(double x) {
        double r10485 = 2.0;
        double r10486 = x;
        double r10487 = fma(r10486, r10486, r10486);
        double r10488 = r10485 / r10487;
        double r10489 = 1.0;
        double r10490 = r10486 - r10489;
        double r10491 = r10488 / r10490;
        return r10491;
}

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 r10492, r10493, r10494, r10495, r10496, r10497, r10498, r10499, r10500, r10501;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r10492, "1", 10, MPFR_RNDN);
        mpfr_init(r10493);
        mpfr_init(r10494);
        mpfr_init(r10495);
        mpfr_init_set_str(r10496, "2", 10, MPFR_RNDN);
        mpfr_init(r10497);
        mpfr_init(r10498);
        mpfr_init(r10499);
        mpfr_init(r10500);
        mpfr_init(r10501);
}

double f_im(double x) {
        ;
        mpfr_set_d(r10493, x, MPFR_RNDN);
        mpfr_add(r10494, r10493, r10492, MPFR_RNDN);
        mpfr_div(r10495, r10492, r10494, MPFR_RNDN);
        ;
        mpfr_div(r10497, r10496, r10493, MPFR_RNDN);
        mpfr_sub(r10498, r10495, r10497, MPFR_RNDN);
        mpfr_sub(r10499, r10493, r10492, MPFR_RNDN);
        mpfr_div(r10500, r10492, r10499, MPFR_RNDN);
        mpfr_add(r10501, r10498, r10500, MPFR_RNDN);
        return mpfr_get_d(r10501, MPFR_RNDN);
}

static mpfr_t r10502, r10503, r10504, r10505, r10506, r10507, r10508;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r10502, "2", 10, MPFR_RNDN);
        mpfr_init(r10503);
        mpfr_init(r10504);
        mpfr_init(r10505);
        mpfr_init_set_str(r10506, "1", 10, MPFR_RNDN);
        mpfr_init(r10507);
        mpfr_init(r10508);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10503, x, MPFR_RNDN);
        mpfr_fma(r10504, r10503, r10503, r10503, MPFR_RNDN);
        mpfr_div(r10505, r10502, r10504, MPFR_RNDN);
        ;
        mpfr_sub(r10507, r10503, r10506, MPFR_RNDN);
        mpfr_div(r10508, r10505, r10507, MPFR_RNDN);
        return mpfr_get_d(r10508, MPFR_RNDN);
}

static mpfr_t r10509, r10510, r10511, r10512, r10513, r10514, r10515;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r10509, "2", 10, MPFR_RNDN);
        mpfr_init(r10510);
        mpfr_init(r10511);
        mpfr_init(r10512);
        mpfr_init_set_str(r10513, "1", 10, MPFR_RNDN);
        mpfr_init(r10514);
        mpfr_init(r10515);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10510, x, MPFR_RNDN);
        mpfr_fma(r10511, r10510, r10510, r10510, MPFR_RNDN);
        mpfr_div(r10512, r10509, r10511, MPFR_RNDN);
        ;
        mpfr_sub(r10514, r10510, r10513, MPFR_RNDN);
        mpfr_div(r10515, r10512, r10514, MPFR_RNDN);
        return mpfr_get_d(r10515, MPFR_RNDN);
}

