#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 r11252 = x;
        float r11253 = 1;
        float r11254 = r11252 + r11253;
        float r11255 = sqrt(r11254);
        float r11256 = sqrt(r11252);
        float r11257 = r11255 - r11256;
        return r11257;
}

double f_id(double x) {
        double r11258 = x;
        double r11259 = 1;
        double r11260 = r11258 + r11259;
        double r11261 = sqrt(r11260);
        double r11262 = sqrt(r11258);
        double r11263 = r11261 - r11262;
        return r11263;
}


double f_of(float x) {
        float r11264 = 1;
        float r11265 = x;
        float r11266 = r11265 + r11264;
        float r11267 = sqrt(r11266);
        float r11268 = sqrt(r11267);
        float r11269 = r11268 * r11268;
        float r11270 = sqrt(r11265);
        float r11271 = r11269 + r11270;
        float r11272 = r11264 / r11271;
        return r11272;
}

double f_od(double x) {
        double r11273 = 1;
        double r11274 = x;
        double r11275 = r11274 + r11273;
        double r11276 = sqrt(r11275);
        double r11277 = sqrt(r11276);
        double r11278 = r11277 * r11277;
        double r11279 = sqrt(r11274);
        double r11280 = r11278 + r11279;
        double r11281 = r11273 / r11280;
        return r11281;
}

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 r11282, r11283, r11284, r11285, r11286, r11287;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11282);
        mpfr_init_set_str(r11283, "1", 10, MPFR_RNDN);
        mpfr_init(r11284);
        mpfr_init(r11285);
        mpfr_init(r11286);
        mpfr_init(r11287);
}

double f_im(double x) {
        mpfr_set_d(r11282, x, MPFR_RNDN);
        ;
        mpfr_add(r11284, r11282, r11283, MPFR_RNDN);
        mpfr_sqrt(r11285, r11284, MPFR_RNDN);
        mpfr_sqrt(r11286, r11282, MPFR_RNDN);
        mpfr_sub(r11287, r11285, r11286, MPFR_RNDN);
        return mpfr_get_d(r11287, MPFR_RNDN);
}

static mpfr_t r11288, r11289, r11290, r11291, r11292, r11293, r11294, r11295, r11296;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11288, "1", 10, MPFR_RNDN);
        mpfr_init(r11289);
        mpfr_init(r11290);
        mpfr_init(r11291);
        mpfr_init(r11292);
        mpfr_init(r11293);
        mpfr_init(r11294);
        mpfr_init(r11295);
        mpfr_init(r11296);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11289, x, MPFR_RNDN);
        mpfr_add(r11290, r11289, r11288, MPFR_RNDN);
        mpfr_sqrt(r11291, r11290, MPFR_RNDN);
        mpfr_sqrt(r11292, r11291, MPFR_RNDN);
        mpfr_mul(r11293, r11292, r11292, MPFR_RNDN);
        mpfr_sqrt(r11294, r11289, MPFR_RNDN);
        mpfr_add(r11295, r11293, r11294, MPFR_RNDN);
        mpfr_div(r11296, r11288, r11295, MPFR_RNDN);
        return mpfr_get_d(r11296, MPFR_RNDN);
}

static mpfr_t r11297, r11298, r11299, r11300, r11301, r11302, r11303, r11304, r11305;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11297, "1", 10, MPFR_RNDN);
        mpfr_init(r11298);
        mpfr_init(r11299);
        mpfr_init(r11300);
        mpfr_init(r11301);
        mpfr_init(r11302);
        mpfr_init(r11303);
        mpfr_init(r11304);
        mpfr_init(r11305);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11298, x, MPFR_RNDN);
        mpfr_add(r11299, r11298, r11297, MPFR_RNDN);
        mpfr_sqrt(r11300, r11299, MPFR_RNDN);
        mpfr_sqrt(r11301, r11300, MPFR_RNDN);
        mpfr_mul(r11302, r11301, r11301, MPFR_RNDN);
        mpfr_sqrt(r11303, r11298, MPFR_RNDN);
        mpfr_add(r11304, r11302, r11303, MPFR_RNDN);
        mpfr_div(r11305, r11297, r11304, MPFR_RNDN);
        return mpfr_get_d(r11305, MPFR_RNDN);
}

