#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 r11064 = 1;
        float r11065 = x;
        float r11066 = r11065 + r11064;
        float r11067 = r11064 / r11066;
        float r11068 = 2;
        float r11069 = r11068 / r11065;
        float r11070 = r11067 - r11069;
        float r11071 = r11065 - r11064;
        float r11072 = r11064 / r11071;
        float r11073 = r11070 + r11072;
        return r11073;
}

double f_id(double x) {
        double r11074 = 1;
        double r11075 = x;
        double r11076 = r11075 + r11074;
        double r11077 = r11074 / r11076;
        double r11078 = 2;
        double r11079 = r11078 / r11075;
        double r11080 = r11077 - r11079;
        double r11081 = r11075 - r11074;
        double r11082 = r11074 / r11081;
        double r11083 = r11080 + r11082;
        return r11083;
}


double f_of(float x) {
        float r11084 = 2;
        float r11085 = x;
        float r11086 = 1;
        float r11087 = r11085 - r11086;
        float r11088 = fma(r11085, r11085, r11085);
        float r11089 = r11087 * r11088;
        float r11090 = r11084 / r11089;
        return r11090;
}

double f_od(double x) {
        double r11091 = 2;
        double r11092 = x;
        double r11093 = 1;
        double r11094 = r11092 - r11093;
        double r11095 = fma(r11092, r11092, r11092);
        double r11096 = r11094 * r11095;
        double r11097 = r11091 / r11096;
        return r11097;
}

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 r11098, r11099, r11100, r11101, r11102, r11103, r11104, r11105, r11106, r11107;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11098, "1", 10, MPFR_RNDN);
        mpfr_init(r11099);
        mpfr_init(r11100);
        mpfr_init(r11101);
        mpfr_init_set_str(r11102, "2", 10, MPFR_RNDN);
        mpfr_init(r11103);
        mpfr_init(r11104);
        mpfr_init(r11105);
        mpfr_init(r11106);
        mpfr_init(r11107);
}

double f_im(double x) {
        ;
        mpfr_set_d(r11099, x, MPFR_RNDN);
        mpfr_add(r11100, r11099, r11098, MPFR_RNDN);
        mpfr_div(r11101, r11098, r11100, MPFR_RNDN);
        ;
        mpfr_div(r11103, r11102, r11099, MPFR_RNDN);
        mpfr_sub(r11104, r11101, r11103, MPFR_RNDN);
        mpfr_sub(r11105, r11099, r11098, MPFR_RNDN);
        mpfr_div(r11106, r11098, r11105, MPFR_RNDN);
        mpfr_add(r11107, r11104, r11106, MPFR_RNDN);
        return mpfr_get_d(r11107, MPFR_RNDN);
}

static mpfr_t r11108, r11109, r11110, r11111, r11112, r11113, r11114;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11108, "2", 10, MPFR_RNDN);
        mpfr_init(r11109);
        mpfr_init_set_str(r11110, "1", 10, MPFR_RNDN);
        mpfr_init(r11111);
        mpfr_init(r11112);
        mpfr_init(r11113);
        mpfr_init(r11114);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11109, x, MPFR_RNDN);
        ;
        mpfr_sub(r11111, r11109, r11110, MPFR_RNDN);
        mpfr_fma(r11112, r11109, r11109, r11109, MPFR_RNDN);
        mpfr_mul(r11113, r11111, r11112, MPFR_RNDN);
        mpfr_div(r11114, r11108, r11113, MPFR_RNDN);
        return mpfr_get_d(r11114, MPFR_RNDN);
}

static mpfr_t r11115, r11116, r11117, r11118, r11119, r11120, r11121;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11115, "2", 10, MPFR_RNDN);
        mpfr_init(r11116);
        mpfr_init_set_str(r11117, "1", 10, MPFR_RNDN);
        mpfr_init(r11118);
        mpfr_init(r11119);
        mpfr_init(r11120);
        mpfr_init(r11121);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11116, x, MPFR_RNDN);
        ;
        mpfr_sub(r11118, r11116, r11117, MPFR_RNDN);
        mpfr_fma(r11119, r11116, r11116, r11116, MPFR_RNDN);
        mpfr_mul(r11120, r11118, r11119, MPFR_RNDN);
        mpfr_div(r11121, r11115, r11120, MPFR_RNDN);
        return mpfr_get_d(r11121, MPFR_RNDN);
}

