#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "2frac (problem 3.3.1)";

double f_if(float x) {
        float r5180656 = 1.0f;
        float r5180657 = x;
        float r5180658 = r5180657 + r5180656;
        float r5180659 = r5180656 / r5180658;
        float r5180660 = r5180656 / r5180657;
        float r5180661 = r5180659 - r5180660;
        return r5180661;
}

double f_id(double x) {
        double r5180662 = 1.0;
        double r5180663 = x;
        double r5180664 = r5180663 + r5180662;
        double r5180665 = r5180662 / r5180664;
        double r5180666 = r5180662 / r5180663;
        double r5180667 = r5180665 - r5180666;
        return r5180667;
}


double f_of(float x) {
        float r5180668 = -1.0f;
        float r5180669 = x;
        float r5180670 = r5180668 / r5180669;
        float r5180671 = 1.0f;
        float r5180672 = r5180671 + r5180669;
        float r5180673 = r5180670 / r5180672;
        return r5180673;
}

double f_od(double x) {
        double r5180674 = -1.0;
        double r5180675 = x;
        double r5180676 = r5180674 / r5180675;
        double r5180677 = 1.0;
        double r5180678 = r5180677 + r5180675;
        double r5180679 = r5180676 / r5180678;
        return r5180679;
}

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 r5180680, r5180681, r5180682, r5180683, r5180684, r5180685;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r5180680, "1", 10, MPFR_RNDN);
        mpfr_init(r5180681);
        mpfr_init(r5180682);
        mpfr_init(r5180683);
        mpfr_init(r5180684);
        mpfr_init(r5180685);
}

double f_im(double x) {
        ;
        mpfr_set_d(r5180681, x, MPFR_RNDN);
        mpfr_add(r5180682, r5180681, r5180680, MPFR_RNDN);
        mpfr_div(r5180683, r5180680, r5180682, MPFR_RNDN);
        mpfr_div(r5180684, r5180680, r5180681, MPFR_RNDN);
        mpfr_sub(r5180685, r5180683, r5180684, MPFR_RNDN);
        return mpfr_get_d(r5180685, MPFR_RNDN);
}

static mpfr_t r5180686, r5180687, r5180688, r5180689, r5180690, r5180691;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r5180686, "-1", 10, MPFR_RNDN);
        mpfr_init(r5180687);
        mpfr_init(r5180688);
        mpfr_init_set_str(r5180689, "1", 10, MPFR_RNDN);
        mpfr_init(r5180690);
        mpfr_init(r5180691);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r5180687, x, MPFR_RNDN);
        mpfr_div(r5180688, r5180686, r5180687, MPFR_RNDN);
        ;
        mpfr_add(r5180690, r5180689, r5180687, MPFR_RNDN);
        mpfr_div(r5180691, r5180688, r5180690, MPFR_RNDN);
        return mpfr_get_d(r5180691, MPFR_RNDN);
}

static mpfr_t r5180692, r5180693, r5180694, r5180695, r5180696, r5180697;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r5180692, "-1", 10, MPFR_RNDN);
        mpfr_init(r5180693);
        mpfr_init(r5180694);
        mpfr_init_set_str(r5180695, "1", 10, MPFR_RNDN);
        mpfr_init(r5180696);
        mpfr_init(r5180697);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r5180693, x, MPFR_RNDN);
        mpfr_div(r5180694, r5180692, r5180693, MPFR_RNDN);
        ;
        mpfr_add(r5180696, r5180695, r5180693, MPFR_RNDN);
        mpfr_div(r5180697, r5180694, r5180696, MPFR_RNDN);
        return mpfr_get_d(r5180697, MPFR_RNDN);
}

