#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "2sqrt (example 3.1)";

double f_if(float x) {
        float r58727 = x;
        float r58728 = 1;
        float r58729 = r58727 + r58728;
        float r58730 = sqrt(r58729);
        float r58731 = sqrt(r58727);
        float r58732 = r58730 - r58731;
        return r58732;
}

double f_id(double x) {
        double r58733 = x;
        double r58734 = 1;
        double r58735 = r58733 + r58734;
        double r58736 = sqrt(r58735);
        double r58737 = sqrt(r58733);
        double r58738 = r58736 - r58737;
        return r58738;
}


double f_of(float x) {
        float r58739 = 1;
        float r58740 = x;
        float r58741 = r58740 + r58739;
        float r58742 = sqrt(r58741);
        float r58743 = sqrt(r58740);
        float r58744 = r58742 + r58743;
        float r58745 = r58739 / r58744;
        return r58745;
}

double f_od(double x) {
        double r58746 = 1;
        double r58747 = x;
        double r58748 = r58747 + r58746;
        double r58749 = sqrt(r58748);
        double r58750 = sqrt(r58747);
        double r58751 = r58749 + r58750;
        double r58752 = r58746 / r58751;
        return r58752;
}

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 r58753, r58754, r58755, r58756, r58757, r58758;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r58753);
        mpfr_init_set_str(r58754, "1", 10, MPFR_RNDN);
        mpfr_init(r58755);
        mpfr_init(r58756);
        mpfr_init(r58757);
        mpfr_init(r58758);
}

double f_im(double x) {
        mpfr_set_d(r58753, x, MPFR_RNDN);
        ;
        mpfr_add(r58755, r58753, r58754, MPFR_RNDN);
        mpfr_sqrt(r58756, r58755, MPFR_RNDN);
        mpfr_sqrt(r58757, r58753, MPFR_RNDN);
        mpfr_sub(r58758, r58756, r58757, MPFR_RNDN);
        return mpfr_get_d(r58758, MPFR_RNDN);
}

static mpfr_t r58759, r58760, r58761, r58762, r58763, r58764, r58765;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r58759, "1", 10, MPFR_RNDN);
        mpfr_init(r58760);
        mpfr_init(r58761);
        mpfr_init(r58762);
        mpfr_init(r58763);
        mpfr_init(r58764);
        mpfr_init(r58765);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r58760, x, MPFR_RNDN);
        mpfr_add(r58761, r58760, r58759, MPFR_RNDN);
        mpfr_sqrt(r58762, r58761, MPFR_RNDN);
        mpfr_sqrt(r58763, r58760, MPFR_RNDN);
        mpfr_add(r58764, r58762, r58763, MPFR_RNDN);
        mpfr_div(r58765, r58759, r58764, MPFR_RNDN);
        return mpfr_get_d(r58765, MPFR_RNDN);
}

static mpfr_t r58766, r58767, r58768, r58769, r58770, r58771, r58772;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r58766, "1", 10, MPFR_RNDN);
        mpfr_init(r58767);
        mpfr_init(r58768);
        mpfr_init(r58769);
        mpfr_init(r58770);
        mpfr_init(r58771);
        mpfr_init(r58772);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r58767, x, MPFR_RNDN);
        mpfr_add(r58768, r58767, r58766, MPFR_RNDN);
        mpfr_sqrt(r58769, r58768, MPFR_RNDN);
        mpfr_sqrt(r58770, r58767, MPFR_RNDN);
        mpfr_add(r58771, r58769, r58770, MPFR_RNDN);
        mpfr_div(r58772, r58766, r58771, MPFR_RNDN);
        return mpfr_get_d(r58772, MPFR_RNDN);
}

