#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 r37364 = 1;
        float r37365 = x;
        float r37366 = r37365 + r37364;
        float r37367 = r37364 / r37366;
        float r37368 = r37364 / r37365;
        float r37369 = r37367 - r37368;
        return r37369;
}

double f_id(double x) {
        double r37370 = 1;
        double r37371 = x;
        double r37372 = r37371 + r37370;
        double r37373 = r37370 / r37372;
        double r37374 = r37370 / r37371;
        double r37375 = r37373 - r37374;
        return r37375;
}


double f_of(float x) {
        float r37376 = 1;
        float r37377 = -r37376;
        float r37378 = x;
        float r37379 = r37376 + r37378;
        float r37380 = r37377 / r37379;
        float r37381 = r37380 / r37378;
        return r37381;
}

double f_od(double x) {
        double r37382 = 1;
        double r37383 = -r37382;
        double r37384 = x;
        double r37385 = r37382 + r37384;
        double r37386 = r37383 / r37385;
        double r37387 = r37386 / r37384;
        return r37387;
}

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 r37388, r37389, r37390, r37391, r37392, r37393;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r37388, "1", 10, MPFR_RNDN);
        mpfr_init(r37389);
        mpfr_init(r37390);
        mpfr_init(r37391);
        mpfr_init(r37392);
        mpfr_init(r37393);
}

double f_im(double x) {
        ;
        mpfr_set_d(r37389, x, MPFR_RNDN);
        mpfr_add(r37390, r37389, r37388, MPFR_RNDN);
        mpfr_div(r37391, r37388, r37390, MPFR_RNDN);
        mpfr_div(r37392, r37388, r37389, MPFR_RNDN);
        mpfr_sub(r37393, r37391, r37392, MPFR_RNDN);
        return mpfr_get_d(r37393, MPFR_RNDN);
}

static mpfr_t r37394, r37395, r37396, r37397, r37398, r37399;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r37394, "1", 10, MPFR_RNDN);
        mpfr_init(r37395);
        mpfr_init(r37396);
        mpfr_init(r37397);
        mpfr_init(r37398);
        mpfr_init(r37399);
}

double f_fm(double x) {
        ;
        mpfr_neg(r37395, r37394, MPFR_RNDN);
        mpfr_set_d(r37396, x, MPFR_RNDN);
        mpfr_add(r37397, r37394, r37396, MPFR_RNDN);
        mpfr_div(r37398, r37395, r37397, MPFR_RNDN);
        mpfr_div(r37399, r37398, r37396, MPFR_RNDN);
        return mpfr_get_d(r37399, MPFR_RNDN);
}

static mpfr_t r37400, r37401, r37402, r37403, r37404, r37405;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r37400, "1", 10, MPFR_RNDN);
        mpfr_init(r37401);
        mpfr_init(r37402);
        mpfr_init(r37403);
        mpfr_init(r37404);
        mpfr_init(r37405);
}

double f_dm(double x) {
        ;
        mpfr_neg(r37401, r37400, MPFR_RNDN);
        mpfr_set_d(r37402, x, MPFR_RNDN);
        mpfr_add(r37403, r37400, r37402, MPFR_RNDN);
        mpfr_div(r37404, r37401, r37403, MPFR_RNDN);
        mpfr_div(r37405, r37404, r37402, MPFR_RNDN);
        return mpfr_get_d(r37405, MPFR_RNDN);
}

