#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 r6237543 = 1;
        float r6237544 = x;
        float r6237545 = r6237544 + r6237543;
        float r6237546 = r6237543 / r6237545;
        float r6237547 = r6237543 / r6237544;
        float r6237548 = r6237546 - r6237547;
        return r6237548;
}

double f_id(double x) {
        double r6237549 = 1;
        double r6237550 = x;
        double r6237551 = r6237550 + r6237549;
        double r6237552 = r6237549 / r6237551;
        double r6237553 = r6237549 / r6237550;
        double r6237554 = r6237552 - r6237553;
        return r6237554;
}


double f_of(float x) {
        float r6237555 = 1;
        float r6237556 = -r6237555;
        float r6237557 = x;
        float r6237558 = r6237557 + r6237555;
        float r6237559 = r6237556 / r6237558;
        float r6237560 = r6237559 / r6237557;
        return r6237560;
}

double f_od(double x) {
        double r6237561 = 1;
        double r6237562 = -r6237561;
        double r6237563 = x;
        double r6237564 = r6237563 + r6237561;
        double r6237565 = r6237562 / r6237564;
        double r6237566 = r6237565 / r6237563;
        return r6237566;
}

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 r6237567, r6237568, r6237569, r6237570, r6237571, r6237572;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r6237567, "1", 10, MPFR_RNDN);
        mpfr_init(r6237568);
        mpfr_init(r6237569);
        mpfr_init(r6237570);
        mpfr_init(r6237571);
        mpfr_init(r6237572);
}

double f_im(double x) {
        ;
        mpfr_set_d(r6237568, x, MPFR_RNDN);
        mpfr_add(r6237569, r6237568, r6237567, MPFR_RNDN);
        mpfr_div(r6237570, r6237567, r6237569, MPFR_RNDN);
        mpfr_div(r6237571, r6237567, r6237568, MPFR_RNDN);
        mpfr_sub(r6237572, r6237570, r6237571, MPFR_RNDN);
        return mpfr_get_d(r6237572, MPFR_RNDN);
}

static mpfr_t r6237573, r6237574, r6237575, r6237576, r6237577, r6237578;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r6237573, "1", 10, MPFR_RNDN);
        mpfr_init(r6237574);
        mpfr_init(r6237575);
        mpfr_init(r6237576);
        mpfr_init(r6237577);
        mpfr_init(r6237578);
}

double f_fm(double x) {
        ;
        mpfr_neg(r6237574, r6237573, MPFR_RNDN);
        mpfr_set_d(r6237575, x, MPFR_RNDN);
        mpfr_add(r6237576, r6237575, r6237573, MPFR_RNDN);
        mpfr_div(r6237577, r6237574, r6237576, MPFR_RNDN);
        mpfr_div(r6237578, r6237577, r6237575, MPFR_RNDN);
        return mpfr_get_d(r6237578, MPFR_RNDN);
}

static mpfr_t r6237579, r6237580, r6237581, r6237582, r6237583, r6237584;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(912);
        mpfr_init_set_str(r6237579, "1", 10, MPFR_RNDN);
        mpfr_init(r6237580);
        mpfr_init(r6237581);
        mpfr_init(r6237582);
        mpfr_init(r6237583);
        mpfr_init(r6237584);
}

double f_dm(double x) {
        ;
        mpfr_neg(r6237580, r6237579, MPFR_RNDN);
        mpfr_set_d(r6237581, x, MPFR_RNDN);
        mpfr_add(r6237582, r6237581, r6237579, MPFR_RNDN);
        mpfr_div(r6237583, r6237580, r6237582, MPFR_RNDN);
        mpfr_div(r6237584, r6237583, r6237581, MPFR_RNDN);
        return mpfr_get_d(r6237584, MPFR_RNDN);
}

