#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 r57590 = x;
        float r57591 = 1;
        float r57592 = r57590 + r57591;
        float r57593 = sqrt(r57592);
        float r57594 = sqrt(r57590);
        float r57595 = r57593 - r57594;
        return r57595;
}

double f_id(double x) {
        double r57596 = x;
        double r57597 = 1;
        double r57598 = r57596 + r57597;
        double r57599 = sqrt(r57598);
        double r57600 = sqrt(r57596);
        double r57601 = r57599 - r57600;
        return r57601;
}


double f_of(float x) {
        float r57602 = 1;
        float r57603 = x;
        float r57604 = r57603 + r57602;
        float r57605 = sqrt(r57604);
        float r57606 = sqrt(r57603);
        float r57607 = r57605 + r57606;
        float r57608 = r57602 / r57607;
        return r57608;
}

double f_od(double x) {
        double r57609 = 1;
        double r57610 = x;
        double r57611 = r57610 + r57609;
        double r57612 = sqrt(r57611);
        double r57613 = sqrt(r57610);
        double r57614 = r57612 + r57613;
        double r57615 = r57609 / r57614;
        return r57615;
}

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 r57616, r57617, r57618, r57619, r57620, r57621;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r57616);
        mpfr_init_set_str(r57617, "1", 10, MPFR_RNDN);
        mpfr_init(r57618);
        mpfr_init(r57619);
        mpfr_init(r57620);
        mpfr_init(r57621);
}

double f_im(double x) {
        mpfr_set_d(r57616, x, MPFR_RNDN);
        ;
        mpfr_add(r57618, r57616, r57617, MPFR_RNDN);
        mpfr_sqrt(r57619, r57618, MPFR_RNDN);
        mpfr_sqrt(r57620, r57616, MPFR_RNDN);
        mpfr_sub(r57621, r57619, r57620, MPFR_RNDN);
        return mpfr_get_d(r57621, MPFR_RNDN);
}

static mpfr_t r57622, r57623, r57624, r57625, r57626, r57627, r57628;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r57622, "1", 10, MPFR_RNDN);
        mpfr_init(r57623);
        mpfr_init(r57624);
        mpfr_init(r57625);
        mpfr_init(r57626);
        mpfr_init(r57627);
        mpfr_init(r57628);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r57623, x, MPFR_RNDN);
        mpfr_add(r57624, r57623, r57622, MPFR_RNDN);
        mpfr_sqrt(r57625, r57624, MPFR_RNDN);
        mpfr_sqrt(r57626, r57623, MPFR_RNDN);
        mpfr_add(r57627, r57625, r57626, MPFR_RNDN);
        mpfr_div(r57628, r57622, r57627, MPFR_RNDN);
        return mpfr_get_d(r57628, MPFR_RNDN);
}

static mpfr_t r57629, r57630, r57631, r57632, r57633, r57634, r57635;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r57629, "1", 10, MPFR_RNDN);
        mpfr_init(r57630);
        mpfr_init(r57631);
        mpfr_init(r57632);
        mpfr_init(r57633);
        mpfr_init(r57634);
        mpfr_init(r57635);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r57630, x, MPFR_RNDN);
        mpfr_add(r57631, r57630, r57629, MPFR_RNDN);
        mpfr_sqrt(r57632, r57631, MPFR_RNDN);
        mpfr_sqrt(r57633, r57630, MPFR_RNDN);
        mpfr_add(r57634, r57632, r57633, MPFR_RNDN);
        mpfr_div(r57635, r57629, r57634, MPFR_RNDN);
        return mpfr_get_d(r57635, MPFR_RNDN);
}

