#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 r11872230 = 1;
        float r11872231 = x;
        float r11872232 = r11872231 + r11872230;
        float r11872233 = r11872230 / r11872232;
        float r11872234 = 2;
        float r11872235 = r11872234 / r11872231;
        float r11872236 = r11872233 - r11872235;
        float r11872237 = r11872231 - r11872230;
        float r11872238 = r11872230 / r11872237;
        float r11872239 = r11872236 + r11872238;
        return r11872239;
}

double f_id(double x) {
        double r11872240 = 1;
        double r11872241 = x;
        double r11872242 = r11872241 + r11872240;
        double r11872243 = r11872240 / r11872242;
        double r11872244 = 2;
        double r11872245 = r11872244 / r11872241;
        double r11872246 = r11872243 - r11872245;
        double r11872247 = r11872241 - r11872240;
        double r11872248 = r11872240 / r11872247;
        double r11872249 = r11872246 + r11872248;
        return r11872249;
}


double f_of(float x) {
        float r11872250 = 2;
        float r11872251 = x;
        float r11872252 = 1;
        float r11872253 = r11872251 + r11872252;
        float r11872254 = r11872253 * r11872251;
        float r11872255 = r11872251 - r11872252;
        float r11872256 = r11872254 * r11872255;
        float r11872257 = r11872250 / r11872256;
        return r11872257;
}

double f_od(double x) {
        double r11872258 = 2;
        double r11872259 = x;
        double r11872260 = 1;
        double r11872261 = r11872259 + r11872260;
        double r11872262 = r11872261 * r11872259;
        double r11872263 = r11872259 - r11872260;
        double r11872264 = r11872262 * r11872263;
        double r11872265 = r11872258 / r11872264;
        return r11872265;
}

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 r11872266, r11872267, r11872268, r11872269, r11872270, r11872271, r11872272, r11872273, r11872274, r11872275;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r11872266, "1", 10, MPFR_RNDN);
        mpfr_init(r11872267);
        mpfr_init(r11872268);
        mpfr_init(r11872269);
        mpfr_init_set_str(r11872270, "2", 10, MPFR_RNDN);
        mpfr_init(r11872271);
        mpfr_init(r11872272);
        mpfr_init(r11872273);
        mpfr_init(r11872274);
        mpfr_init(r11872275);
}

double f_im(double x) {
        ;
        mpfr_set_d(r11872267, x, MPFR_RNDN);
        mpfr_add(r11872268, r11872267, r11872266, MPFR_RNDN);
        mpfr_div(r11872269, r11872266, r11872268, MPFR_RNDN);
        ;
        mpfr_div(r11872271, r11872270, r11872267, MPFR_RNDN);
        mpfr_sub(r11872272, r11872269, r11872271, MPFR_RNDN);
        mpfr_sub(r11872273, r11872267, r11872266, MPFR_RNDN);
        mpfr_div(r11872274, r11872266, r11872273, MPFR_RNDN);
        mpfr_add(r11872275, r11872272, r11872274, MPFR_RNDN);
        return mpfr_get_d(r11872275, MPFR_RNDN);
}

static mpfr_t r11872276, r11872277, r11872278, r11872279, r11872280, r11872281, r11872282, r11872283;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r11872276, "2", 10, MPFR_RNDN);
        mpfr_init(r11872277);
        mpfr_init_set_str(r11872278, "1", 10, MPFR_RNDN);
        mpfr_init(r11872279);
        mpfr_init(r11872280);
        mpfr_init(r11872281);
        mpfr_init(r11872282);
        mpfr_init(r11872283);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11872277, x, MPFR_RNDN);
        ;
        mpfr_add(r11872279, r11872277, r11872278, MPFR_RNDN);
        mpfr_mul(r11872280, r11872279, r11872277, MPFR_RNDN);
        mpfr_sub(r11872281, r11872277, r11872278, MPFR_RNDN);
        mpfr_mul(r11872282, r11872280, r11872281, MPFR_RNDN);
        mpfr_div(r11872283, r11872276, r11872282, MPFR_RNDN);
        return mpfr_get_d(r11872283, MPFR_RNDN);
}

static mpfr_t r11872284, r11872285, r11872286, r11872287, r11872288, r11872289, r11872290, r11872291;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r11872284, "2", 10, MPFR_RNDN);
        mpfr_init(r11872285);
        mpfr_init_set_str(r11872286, "1", 10, MPFR_RNDN);
        mpfr_init(r11872287);
        mpfr_init(r11872288);
        mpfr_init(r11872289);
        mpfr_init(r11872290);
        mpfr_init(r11872291);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11872285, x, MPFR_RNDN);
        ;
        mpfr_add(r11872287, r11872285, r11872286, MPFR_RNDN);
        mpfr_mul(r11872288, r11872287, r11872285, MPFR_RNDN);
        mpfr_sub(r11872289, r11872285, r11872286, MPFR_RNDN);
        mpfr_mul(r11872290, r11872288, r11872289, MPFR_RNDN);
        mpfr_div(r11872291, r11872284, r11872290, MPFR_RNDN);
        return mpfr_get_d(r11872291, MPFR_RNDN);
}

