#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 r4502054 = 1.0f;
        float r4502055 = x;
        float r4502056 = r4502055 + r4502054;
        float r4502057 = r4502054 / r4502056;
        float r4502058 = 2.0f;
        float r4502059 = r4502058 / r4502055;
        float r4502060 = r4502057 - r4502059;
        float r4502061 = r4502055 - r4502054;
        float r4502062 = r4502054 / r4502061;
        float r4502063 = r4502060 + r4502062;
        return r4502063;
}

double f_id(double x) {
        double r4502064 = 1.0;
        double r4502065 = x;
        double r4502066 = r4502065 + r4502064;
        double r4502067 = r4502064 / r4502066;
        double r4502068 = 2.0;
        double r4502069 = r4502068 / r4502065;
        double r4502070 = r4502067 - r4502069;
        double r4502071 = r4502065 - r4502064;
        double r4502072 = r4502064 / r4502071;
        double r4502073 = r4502070 + r4502072;
        return r4502073;
}


double f_of(float x) {
        float r4502074 = 2.0f;
        float r4502075 = x;
        float r4502076 = 1.0f;
        float r4502077 = r4502075 + r4502076;
        float r4502078 = r4502077 * r4502075;
        float r4502079 = r4502075 - r4502076;
        float r4502080 = r4502078 * r4502079;
        float r4502081 = r4502074 / r4502080;
        return r4502081;
}

double f_od(double x) {
        double r4502082 = 2.0;
        double r4502083 = x;
        double r4502084 = 1.0;
        double r4502085 = r4502083 + r4502084;
        double r4502086 = r4502085 * r4502083;
        double r4502087 = r4502083 - r4502084;
        double r4502088 = r4502086 * r4502087;
        double r4502089 = r4502082 / r4502088;
        return r4502089;
}

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 r4502090, r4502091, r4502092, r4502093, r4502094, r4502095, r4502096, r4502097, r4502098, r4502099;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r4502090, "1", 10, MPFR_RNDN);
        mpfr_init(r4502091);
        mpfr_init(r4502092);
        mpfr_init(r4502093);
        mpfr_init_set_str(r4502094, "2", 10, MPFR_RNDN);
        mpfr_init(r4502095);
        mpfr_init(r4502096);
        mpfr_init(r4502097);
        mpfr_init(r4502098);
        mpfr_init(r4502099);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4502091, x, MPFR_RNDN);
        mpfr_add(r4502092, r4502091, r4502090, MPFR_RNDN);
        mpfr_div(r4502093, r4502090, r4502092, MPFR_RNDN);
        ;
        mpfr_div(r4502095, r4502094, r4502091, MPFR_RNDN);
        mpfr_sub(r4502096, r4502093, r4502095, MPFR_RNDN);
        mpfr_sub(r4502097, r4502091, r4502090, MPFR_RNDN);
        mpfr_div(r4502098, r4502090, r4502097, MPFR_RNDN);
        mpfr_add(r4502099, r4502096, r4502098, MPFR_RNDN);
        return mpfr_get_d(r4502099, MPFR_RNDN);
}

static mpfr_t r4502100, r4502101, r4502102, r4502103, r4502104, r4502105, r4502106, r4502107;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r4502100, "2", 10, MPFR_RNDN);
        mpfr_init(r4502101);
        mpfr_init_set_str(r4502102, "1", 10, MPFR_RNDN);
        mpfr_init(r4502103);
        mpfr_init(r4502104);
        mpfr_init(r4502105);
        mpfr_init(r4502106);
        mpfr_init(r4502107);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4502101, x, MPFR_RNDN);
        ;
        mpfr_add(r4502103, r4502101, r4502102, MPFR_RNDN);
        mpfr_mul(r4502104, r4502103, r4502101, MPFR_RNDN);
        mpfr_sub(r4502105, r4502101, r4502102, MPFR_RNDN);
        mpfr_mul(r4502106, r4502104, r4502105, MPFR_RNDN);
        mpfr_div(r4502107, r4502100, r4502106, MPFR_RNDN);
        return mpfr_get_d(r4502107, MPFR_RNDN);
}

static mpfr_t r4502108, r4502109, r4502110, r4502111, r4502112, r4502113, r4502114, r4502115;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r4502108, "2", 10, MPFR_RNDN);
        mpfr_init(r4502109);
        mpfr_init_set_str(r4502110, "1", 10, MPFR_RNDN);
        mpfr_init(r4502111);
        mpfr_init(r4502112);
        mpfr_init(r4502113);
        mpfr_init(r4502114);
        mpfr_init(r4502115);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4502109, x, MPFR_RNDN);
        ;
        mpfr_add(r4502111, r4502109, r4502110, MPFR_RNDN);
        mpfr_mul(r4502112, r4502111, r4502109, MPFR_RNDN);
        mpfr_sub(r4502113, r4502109, r4502110, MPFR_RNDN);
        mpfr_mul(r4502114, r4502112, r4502113, MPFR_RNDN);
        mpfr_div(r4502115, r4502108, r4502114, MPFR_RNDN);
        return mpfr_get_d(r4502115, MPFR_RNDN);
}

