#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 r58579 = 1;
        float r58580 = x;
        float r58581 = r58580 + r58579;
        float r58582 = r58579 / r58581;
        float r58583 = 2;
        float r58584 = r58583 / r58580;
        float r58585 = r58582 - r58584;
        float r58586 = r58580 - r58579;
        float r58587 = r58579 / r58586;
        float r58588 = r58585 + r58587;
        return r58588;
}

double f_id(double x) {
        double r58589 = 1;
        double r58590 = x;
        double r58591 = r58590 + r58589;
        double r58592 = r58589 / r58591;
        double r58593 = 2;
        double r58594 = r58593 / r58590;
        double r58595 = r58592 - r58594;
        double r58596 = r58590 - r58589;
        double r58597 = r58589 / r58596;
        double r58598 = r58595 + r58597;
        return r58598;
}


double f_of(float x) {
        float r58599 = 2;
        float r58600 = x;
        float r58601 = 3;
        float r58602 = pow(r58600, r58601);
        float r58603 = r58602 - r58600;
        float r58604 = r58599 / r58603;
        return r58604;
}

double f_od(double x) {
        double r58605 = 2;
        double r58606 = x;
        double r58607 = 3;
        double r58608 = pow(r58606, r58607);
        double r58609 = r58608 - r58606;
        double r58610 = r58605 / r58609;
        return r58610;
}

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 r58611, r58612, r58613, r58614, r58615, r58616, r58617, r58618, r58619, r58620;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r58611, "1", 10, MPFR_RNDN);
        mpfr_init(r58612);
        mpfr_init(r58613);
        mpfr_init(r58614);
        mpfr_init_set_str(r58615, "2", 10, MPFR_RNDN);
        mpfr_init(r58616);
        mpfr_init(r58617);
        mpfr_init(r58618);
        mpfr_init(r58619);
        mpfr_init(r58620);
}

double f_im(double x) {
        ;
        mpfr_set_d(r58612, x, MPFR_RNDN);
        mpfr_add(r58613, r58612, r58611, MPFR_RNDN);
        mpfr_div(r58614, r58611, r58613, MPFR_RNDN);
        ;
        mpfr_div(r58616, r58615, r58612, MPFR_RNDN);
        mpfr_sub(r58617, r58614, r58616, MPFR_RNDN);
        mpfr_sub(r58618, r58612, r58611, MPFR_RNDN);
        mpfr_div(r58619, r58611, r58618, MPFR_RNDN);
        mpfr_add(r58620, r58617, r58619, MPFR_RNDN);
        return mpfr_get_d(r58620, MPFR_RNDN);
}

static mpfr_t r58621, r58622, r58623, r58624, r58625, r58626;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r58621, "2", 10, MPFR_RNDN);
        mpfr_init(r58622);
        mpfr_init_set_str(r58623, "3", 10, MPFR_RNDN);
        mpfr_init(r58624);
        mpfr_init(r58625);
        mpfr_init(r58626);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r58622, x, MPFR_RNDN);
        ;
        mpfr_pow(r58624, r58622, r58623, MPFR_RNDN);
        mpfr_sub(r58625, r58624, r58622, MPFR_RNDN);
        mpfr_div(r58626, r58621, r58625, MPFR_RNDN);
        return mpfr_get_d(r58626, MPFR_RNDN);
}

static mpfr_t r58627, r58628, r58629, r58630, r58631, r58632;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r58627, "2", 10, MPFR_RNDN);
        mpfr_init(r58628);
        mpfr_init_set_str(r58629, "3", 10, MPFR_RNDN);
        mpfr_init(r58630);
        mpfr_init(r58631);
        mpfr_init(r58632);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r58628, x, MPFR_RNDN);
        ;
        mpfr_pow(r58630, r58628, r58629, MPFR_RNDN);
        mpfr_sub(r58631, r58630, r58628, MPFR_RNDN);
        mpfr_div(r58632, r58627, r58631, MPFR_RNDN);
        return mpfr_get_d(r58632, MPFR_RNDN);
}

