#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 r11870749 = 1;
        float r11870750 = x;
        float r11870751 = r11870750 + r11870749;
        float r11870752 = r11870749 / r11870751;
        float r11870753 = r11870749 / r11870750;
        float r11870754 = r11870752 - r11870753;
        return r11870754;
}

double f_id(double x) {
        double r11870755 = 1;
        double r11870756 = x;
        double r11870757 = r11870756 + r11870755;
        double r11870758 = r11870755 / r11870757;
        double r11870759 = r11870755 / r11870756;
        double r11870760 = r11870758 - r11870759;
        return r11870760;
}


double f_of(float x) {
        float r11870761 = 1;
        float r11870762 = -r11870761;
        float r11870763 = x;
        float r11870764 = r11870761 + r11870763;
        float r11870765 = r11870762 / r11870764;
        float r11870766 = r11870765 / r11870763;
        return r11870766;
}

double f_od(double x) {
        double r11870767 = 1;
        double r11870768 = -r11870767;
        double r11870769 = x;
        double r11870770 = r11870767 + r11870769;
        double r11870771 = r11870768 / r11870770;
        double r11870772 = r11870771 / r11870769;
        return r11870772;
}

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 r11870773, r11870774, r11870775, r11870776, r11870777, r11870778;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r11870773, "1", 10, MPFR_RNDN);
        mpfr_init(r11870774);
        mpfr_init(r11870775);
        mpfr_init(r11870776);
        mpfr_init(r11870777);
        mpfr_init(r11870778);
}

double f_im(double x) {
        ;
        mpfr_set_d(r11870774, x, MPFR_RNDN);
        mpfr_add(r11870775, r11870774, r11870773, MPFR_RNDN);
        mpfr_div(r11870776, r11870773, r11870775, MPFR_RNDN);
        mpfr_div(r11870777, r11870773, r11870774, MPFR_RNDN);
        mpfr_sub(r11870778, r11870776, r11870777, MPFR_RNDN);
        return mpfr_get_d(r11870778, MPFR_RNDN);
}

static mpfr_t r11870779, r11870780, r11870781, r11870782, r11870783, r11870784;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r11870779, "1", 10, MPFR_RNDN);
        mpfr_init(r11870780);
        mpfr_init(r11870781);
        mpfr_init(r11870782);
        mpfr_init(r11870783);
        mpfr_init(r11870784);
}

double f_fm(double x) {
        ;
        mpfr_neg(r11870780, r11870779, MPFR_RNDN);
        mpfr_set_d(r11870781, x, MPFR_RNDN);
        mpfr_add(r11870782, r11870779, r11870781, MPFR_RNDN);
        mpfr_div(r11870783, r11870780, r11870782, MPFR_RNDN);
        mpfr_div(r11870784, r11870783, r11870781, MPFR_RNDN);
        return mpfr_get_d(r11870784, MPFR_RNDN);
}

static mpfr_t r11870785, r11870786, r11870787, r11870788, r11870789, r11870790;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r11870785, "1", 10, MPFR_RNDN);
        mpfr_init(r11870786);
        mpfr_init(r11870787);
        mpfr_init(r11870788);
        mpfr_init(r11870789);
        mpfr_init(r11870790);
}

double f_dm(double x) {
        ;
        mpfr_neg(r11870786, r11870785, MPFR_RNDN);
        mpfr_set_d(r11870787, x, MPFR_RNDN);
        mpfr_add(r11870788, r11870785, r11870787, MPFR_RNDN);
        mpfr_div(r11870789, r11870786, r11870788, MPFR_RNDN);
        mpfr_div(r11870790, r11870789, r11870787, MPFR_RNDN);
        return mpfr_get_d(r11870790, MPFR_RNDN);
}

