#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 r58547 = 1;
        float r58548 = x;
        float r58549 = r58548 + r58547;
        float r58550 = r58547 / r58549;
        float r58551 = 2;
        float r58552 = r58551 / r58548;
        float r58553 = r58550 - r58552;
        float r58554 = r58548 - r58547;
        float r58555 = r58547 / r58554;
        float r58556 = r58553 + r58555;
        return r58556;
}

double f_id(double x) {
        double r58557 = 1;
        double r58558 = x;
        double r58559 = r58558 + r58557;
        double r58560 = r58557 / r58559;
        double r58561 = 2;
        double r58562 = r58561 / r58558;
        double r58563 = r58560 - r58562;
        double r58564 = r58558 - r58557;
        double r58565 = r58557 / r58564;
        double r58566 = r58563 + r58565;
        return r58566;
}


double f_of(float x) {
        float r58567 = 2;
        float r58568 = x;
        float r58569 = 3;
        float r58570 = pow(r58568, r58569);
        float r58571 = r58570 - r58568;
        float r58572 = r58567 / r58571;
        return r58572;
}

double f_od(double x) {
        double r58573 = 2;
        double r58574 = x;
        double r58575 = 3;
        double r58576 = pow(r58574, r58575);
        double r58577 = r58576 - r58574;
        double r58578 = r58573 / r58577;
        return r58578;
}

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 r58579, r58580, r58581, r58582, r58583, r58584, r58585, r58586, r58587, r58588;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r58579, "1", 10, MPFR_RNDN);
        mpfr_init(r58580);
        mpfr_init(r58581);
        mpfr_init(r58582);
        mpfr_init_set_str(r58583, "2", 10, MPFR_RNDN);
        mpfr_init(r58584);
        mpfr_init(r58585);
        mpfr_init(r58586);
        mpfr_init(r58587);
        mpfr_init(r58588);
}

double f_im(double x) {
        ;
        mpfr_set_d(r58580, x, MPFR_RNDN);
        mpfr_add(r58581, r58580, r58579, MPFR_RNDN);
        mpfr_div(r58582, r58579, r58581, MPFR_RNDN);
        ;
        mpfr_div(r58584, r58583, r58580, MPFR_RNDN);
        mpfr_sub(r58585, r58582, r58584, MPFR_RNDN);
        mpfr_sub(r58586, r58580, r58579, MPFR_RNDN);
        mpfr_div(r58587, r58579, r58586, MPFR_RNDN);
        mpfr_add(r58588, r58585, r58587, MPFR_RNDN);
        return mpfr_get_d(r58588, MPFR_RNDN);
}

static mpfr_t r58589, r58590, r58591, r58592, r58593, r58594;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r58589, "2", 10, MPFR_RNDN);
        mpfr_init(r58590);
        mpfr_init_set_str(r58591, "3", 10, MPFR_RNDN);
        mpfr_init(r58592);
        mpfr_init(r58593);
        mpfr_init(r58594);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r58590, x, MPFR_RNDN);
        ;
        mpfr_pow(r58592, r58590, r58591, MPFR_RNDN);
        mpfr_sub(r58593, r58592, r58590, MPFR_RNDN);
        mpfr_div(r58594, r58589, r58593, MPFR_RNDN);
        return mpfr_get_d(r58594, MPFR_RNDN);
}

static mpfr_t r58595, r58596, r58597, r58598, r58599, r58600;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r58595, "2", 10, MPFR_RNDN);
        mpfr_init(r58596);
        mpfr_init_set_str(r58597, "3", 10, MPFR_RNDN);
        mpfr_init(r58598);
        mpfr_init(r58599);
        mpfr_init(r58600);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r58596, x, MPFR_RNDN);
        ;
        mpfr_pow(r58598, r58596, r58597, MPFR_RNDN);
        mpfr_sub(r58599, r58598, r58596, MPFR_RNDN);
        mpfr_div(r58600, r58595, r58599, MPFR_RNDN);
        return mpfr_get_d(r58600, MPFR_RNDN);
}

