#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 r37212 = 1;
        float r37213 = x;
        float r37214 = r37213 + r37212;
        float r37215 = r37212 / r37214;
        float r37216 = r37212 / r37213;
        float r37217 = r37215 - r37216;
        return r37217;
}

double f_id(double x) {
        double r37218 = 1;
        double r37219 = x;
        double r37220 = r37219 + r37218;
        double r37221 = r37218 / r37220;
        double r37222 = r37218 / r37219;
        double r37223 = r37221 - r37222;
        return r37223;
}


double f_of(float x) {
        float r37224 = 1;
        float r37225 = -r37224;
        float r37226 = x;
        float r37227 = r37224 + r37226;
        float r37228 = r37225 / r37227;
        float r37229 = r37228 / r37226;
        return r37229;
}

double f_od(double x) {
        double r37230 = 1;
        double r37231 = -r37230;
        double r37232 = x;
        double r37233 = r37230 + r37232;
        double r37234 = r37231 / r37233;
        double r37235 = r37234 / r37232;
        return r37235;
}

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 r37236, r37237, r37238, r37239, r37240, r37241;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r37236, "1", 10, MPFR_RNDN);
        mpfr_init(r37237);
        mpfr_init(r37238);
        mpfr_init(r37239);
        mpfr_init(r37240);
        mpfr_init(r37241);
}

double f_im(double x) {
        ;
        mpfr_set_d(r37237, x, MPFR_RNDN);
        mpfr_add(r37238, r37237, r37236, MPFR_RNDN);
        mpfr_div(r37239, r37236, r37238, MPFR_RNDN);
        mpfr_div(r37240, r37236, r37237, MPFR_RNDN);
        mpfr_sub(r37241, r37239, r37240, MPFR_RNDN);
        return mpfr_get_d(r37241, MPFR_RNDN);
}

static mpfr_t r37242, r37243, r37244, r37245, r37246, r37247;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r37242, "1", 10, MPFR_RNDN);
        mpfr_init(r37243);
        mpfr_init(r37244);
        mpfr_init(r37245);
        mpfr_init(r37246);
        mpfr_init(r37247);
}

double f_fm(double x) {
        ;
        mpfr_neg(r37243, r37242, MPFR_RNDN);
        mpfr_set_d(r37244, x, MPFR_RNDN);
        mpfr_add(r37245, r37242, r37244, MPFR_RNDN);
        mpfr_div(r37246, r37243, r37245, MPFR_RNDN);
        mpfr_div(r37247, r37246, r37244, MPFR_RNDN);
        return mpfr_get_d(r37247, MPFR_RNDN);
}

static mpfr_t r37248, r37249, r37250, r37251, r37252, r37253;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r37248, "1", 10, MPFR_RNDN);
        mpfr_init(r37249);
        mpfr_init(r37250);
        mpfr_init(r37251);
        mpfr_init(r37252);
        mpfr_init(r37253);
}

double f_dm(double x) {
        ;
        mpfr_neg(r37249, r37248, MPFR_RNDN);
        mpfr_set_d(r37250, x, MPFR_RNDN);
        mpfr_add(r37251, r37248, r37250, MPFR_RNDN);
        mpfr_div(r37252, r37249, r37251, MPFR_RNDN);
        mpfr_div(r37253, r37252, r37250, MPFR_RNDN);
        return mpfr_get_d(r37253, MPFR_RNDN);
}

