#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 r4416066 = 1;
        float r4416067 = x;
        float r4416068 = r4416067 + r4416066;
        float r4416069 = r4416066 / r4416068;
        float r4416070 = r4416066 / r4416067;
        float r4416071 = r4416069 - r4416070;
        return r4416071;
}

double f_id(double x) {
        double r4416072 = 1;
        double r4416073 = x;
        double r4416074 = r4416073 + r4416072;
        double r4416075 = r4416072 / r4416074;
        double r4416076 = r4416072 / r4416073;
        double r4416077 = r4416075 - r4416076;
        return r4416077;
}


double f_of(float x) {
        float r4416078 = 1;
        float r4416079 = -r4416078;
        float r4416080 = x;
        float r4416081 = r4416078 + r4416080;
        float r4416082 = r4416079 / r4416081;
        float r4416083 = r4416082 / r4416080;
        return r4416083;
}

double f_od(double x) {
        double r4416084 = 1;
        double r4416085 = -r4416084;
        double r4416086 = x;
        double r4416087 = r4416084 + r4416086;
        double r4416088 = r4416085 / r4416087;
        double r4416089 = r4416088 / r4416086;
        return r4416089;
}

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 r4416090, r4416091, r4416092, r4416093, r4416094, r4416095;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r4416090, "1", 10, MPFR_RNDN);
        mpfr_init(r4416091);
        mpfr_init(r4416092);
        mpfr_init(r4416093);
        mpfr_init(r4416094);
        mpfr_init(r4416095);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4416091, x, MPFR_RNDN);
        mpfr_add(r4416092, r4416091, r4416090, MPFR_RNDN);
        mpfr_div(r4416093, r4416090, r4416092, MPFR_RNDN);
        mpfr_div(r4416094, r4416090, r4416091, MPFR_RNDN);
        mpfr_sub(r4416095, r4416093, r4416094, MPFR_RNDN);
        return mpfr_get_d(r4416095, MPFR_RNDN);
}

static mpfr_t r4416096, r4416097, r4416098, r4416099, r4416100, r4416101;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r4416096, "1", 10, MPFR_RNDN);
        mpfr_init(r4416097);
        mpfr_init(r4416098);
        mpfr_init(r4416099);
        mpfr_init(r4416100);
        mpfr_init(r4416101);
}

double f_fm(double x) {
        ;
        mpfr_neg(r4416097, r4416096, MPFR_RNDN);
        mpfr_set_d(r4416098, x, MPFR_RNDN);
        mpfr_add(r4416099, r4416096, r4416098, MPFR_RNDN);
        mpfr_div(r4416100, r4416097, r4416099, MPFR_RNDN);
        mpfr_div(r4416101, r4416100, r4416098, MPFR_RNDN);
        return mpfr_get_d(r4416101, MPFR_RNDN);
}

static mpfr_t r4416102, r4416103, r4416104, r4416105, r4416106, r4416107;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r4416102, "1", 10, MPFR_RNDN);
        mpfr_init(r4416103);
        mpfr_init(r4416104);
        mpfr_init(r4416105);
        mpfr_init(r4416106);
        mpfr_init(r4416107);
}

double f_dm(double x) {
        ;
        mpfr_neg(r4416103, r4416102, MPFR_RNDN);
        mpfr_set_d(r4416104, x, MPFR_RNDN);
        mpfr_add(r4416105, r4416102, r4416104, MPFR_RNDN);
        mpfr_div(r4416106, r4416103, r4416105, MPFR_RNDN);
        mpfr_div(r4416107, r4416106, r4416104, MPFR_RNDN);
        return mpfr_get_d(r4416107, MPFR_RNDN);
}

