#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 r58693 = 1;
        float r58694 = x;
        float r58695 = r58694 + r58693;
        float r58696 = r58693 / r58695;
        float r58697 = 2;
        float r58698 = r58697 / r58694;
        float r58699 = r58696 - r58698;
        float r58700 = r58694 - r58693;
        float r58701 = r58693 / r58700;
        float r58702 = r58699 + r58701;
        return r58702;
}

double f_id(double x) {
        double r58703 = 1;
        double r58704 = x;
        double r58705 = r58704 + r58703;
        double r58706 = r58703 / r58705;
        double r58707 = 2;
        double r58708 = r58707 / r58704;
        double r58709 = r58706 - r58708;
        double r58710 = r58704 - r58703;
        double r58711 = r58703 / r58710;
        double r58712 = r58709 + r58711;
        return r58712;
}


double f_of(float x) {
        float r58713 = 2;
        float r58714 = x;
        float r58715 = 3;
        float r58716 = pow(r58714, r58715);
        float r58717 = r58716 - r58714;
        float r58718 = r58713 / r58717;
        return r58718;
}

double f_od(double x) {
        double r58719 = 2;
        double r58720 = x;
        double r58721 = 3;
        double r58722 = pow(r58720, r58721);
        double r58723 = r58722 - r58720;
        double r58724 = r58719 / r58723;
        return r58724;
}

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 r58725, r58726, r58727, r58728, r58729, r58730, r58731, r58732, r58733, r58734;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r58725, "1", 10, MPFR_RNDN);
        mpfr_init(r58726);
        mpfr_init(r58727);
        mpfr_init(r58728);
        mpfr_init_set_str(r58729, "2", 10, MPFR_RNDN);
        mpfr_init(r58730);
        mpfr_init(r58731);
        mpfr_init(r58732);
        mpfr_init(r58733);
        mpfr_init(r58734);
}

double f_im(double x) {
        ;
        mpfr_set_d(r58726, x, MPFR_RNDN);
        mpfr_add(r58727, r58726, r58725, MPFR_RNDN);
        mpfr_div(r58728, r58725, r58727, MPFR_RNDN);
        ;
        mpfr_div(r58730, r58729, r58726, MPFR_RNDN);
        mpfr_sub(r58731, r58728, r58730, MPFR_RNDN);
        mpfr_sub(r58732, r58726, r58725, MPFR_RNDN);
        mpfr_div(r58733, r58725, r58732, MPFR_RNDN);
        mpfr_add(r58734, r58731, r58733, MPFR_RNDN);
        return mpfr_get_d(r58734, MPFR_RNDN);
}

static mpfr_t r58735, r58736, r58737, r58738, r58739, r58740;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r58735, "2", 10, MPFR_RNDN);
        mpfr_init(r58736);
        mpfr_init_set_str(r58737, "3", 10, MPFR_RNDN);
        mpfr_init(r58738);
        mpfr_init(r58739);
        mpfr_init(r58740);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r58736, x, MPFR_RNDN);
        ;
        mpfr_pow(r58738, r58736, r58737, MPFR_RNDN);
        mpfr_sub(r58739, r58738, r58736, MPFR_RNDN);
        mpfr_div(r58740, r58735, r58739, MPFR_RNDN);
        return mpfr_get_d(r58740, MPFR_RNDN);
}

static mpfr_t r58741, r58742, r58743, r58744, r58745, r58746;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r58741, "2", 10, MPFR_RNDN);
        mpfr_init(r58742);
        mpfr_init_set_str(r58743, "3", 10, MPFR_RNDN);
        mpfr_init(r58744);
        mpfr_init(r58745);
        mpfr_init(r58746);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r58742, x, MPFR_RNDN);
        ;
        mpfr_pow(r58744, r58742, r58743, MPFR_RNDN);
        mpfr_sub(r58745, r58744, r58742, MPFR_RNDN);
        mpfr_div(r58746, r58741, r58745, MPFR_RNDN);
        return mpfr_get_d(r58746, MPFR_RNDN);
}

