#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 r9630 = 1;
        float r9631 = x;
        float r9632 = r9631 + r9630;
        float r9633 = r9630 / r9632;
        float r9634 = r9630 / r9631;
        float r9635 = r9633 - r9634;
        return r9635;
}

double f_id(double x) {
        double r9636 = 1;
        double r9637 = x;
        double r9638 = r9637 + r9636;
        double r9639 = r9636 / r9638;
        double r9640 = r9636 / r9637;
        double r9641 = r9639 - r9640;
        return r9641;
}


double f_of(float x) {
        float r9642 = 1;
        float r9643 = -r9642;
        float r9644 = x;
        float r9645 = fma(r9644, r9644, r9644);
        float r9646 = r9643 / r9645;
        return r9646;
}

double f_od(double x) {
        double r9647 = 1;
        double r9648 = -r9647;
        double r9649 = x;
        double r9650 = fma(r9649, r9649, r9649);
        double r9651 = r9648 / r9650;
        return r9651;
}

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 r9652, r9653, r9654, r9655, r9656, r9657;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r9652, "1", 10, MPFR_RNDN);
        mpfr_init(r9653);
        mpfr_init(r9654);
        mpfr_init(r9655);
        mpfr_init(r9656);
        mpfr_init(r9657);
}

double f_im(double x) {
        ;
        mpfr_set_d(r9653, x, MPFR_RNDN);
        mpfr_add(r9654, r9653, r9652, MPFR_RNDN);
        mpfr_div(r9655, r9652, r9654, MPFR_RNDN);
        mpfr_div(r9656, r9652, r9653, MPFR_RNDN);
        mpfr_sub(r9657, r9655, r9656, MPFR_RNDN);
        return mpfr_get_d(r9657, MPFR_RNDN);
}

static mpfr_t r9658, r9659, r9660, r9661, r9662;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r9658, "1", 10, MPFR_RNDN);
        mpfr_init(r9659);
        mpfr_init(r9660);
        mpfr_init(r9661);
        mpfr_init(r9662);
}

double f_fm(double x) {
        ;
        mpfr_neg(r9659, r9658, MPFR_RNDN);
        mpfr_set_d(r9660, x, MPFR_RNDN);
        mpfr_fma(r9661, r9660, r9660, r9660, MPFR_RNDN);
        mpfr_div(r9662, r9659, r9661, MPFR_RNDN);
        return mpfr_get_d(r9662, MPFR_RNDN);
}

static mpfr_t r9663, r9664, r9665, r9666, r9667;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r9663, "1", 10, MPFR_RNDN);
        mpfr_init(r9664);
        mpfr_init(r9665);
        mpfr_init(r9666);
        mpfr_init(r9667);
}

double f_dm(double x) {
        ;
        mpfr_neg(r9664, r9663, MPFR_RNDN);
        mpfr_set_d(r9665, x, MPFR_RNDN);
        mpfr_fma(r9666, r9665, r9665, r9665, MPFR_RNDN);
        mpfr_div(r9667, r9664, r9666, MPFR_RNDN);
        return mpfr_get_d(r9667, MPFR_RNDN);
}

