#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 r11259 = x;
        float r11260 = 1;
        float r11261 = r11259 + r11260;
        float r11262 = sqrt(r11261);
        float r11263 = sqrt(r11259);
        float r11264 = r11262 - r11263;
        return r11264;
}

double f_id(double x) {
        double r11265 = x;
        double r11266 = 1;
        double r11267 = r11265 + r11266;
        double r11268 = sqrt(r11267);
        double r11269 = sqrt(r11265);
        double r11270 = r11268 - r11269;
        return r11270;
}


double f_of(float x) {
        float r11271 = 1;
        float r11272 = x;
        float r11273 = r11272 + r11271;
        float r11274 = sqrt(r11273);
        float r11275 = sqrt(r11274);
        float r11276 = r11275 * r11275;
        float r11277 = sqrt(r11272);
        float r11278 = r11276 + r11277;
        float r11279 = r11271 / r11278;
        return r11279;
}

double f_od(double x) {
        double r11280 = 1;
        double r11281 = x;
        double r11282 = r11281 + r11280;
        double r11283 = sqrt(r11282);
        double r11284 = sqrt(r11283);
        double r11285 = r11284 * r11284;
        double r11286 = sqrt(r11281);
        double r11287 = r11285 + r11286;
        double r11288 = r11280 / r11287;
        return r11288;
}

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 r11289, r11290, r11291, r11292, r11293, r11294;

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

double f_im(double x) {
        mpfr_set_d(r11289, x, MPFR_RNDN);
        ;
        mpfr_add(r11291, r11289, r11290, MPFR_RNDN);
        mpfr_sqrt(r11292, r11291, MPFR_RNDN);
        mpfr_sqrt(r11293, r11289, MPFR_RNDN);
        mpfr_sub(r11294, r11292, r11293, MPFR_RNDN);
        return mpfr_get_d(r11294, MPFR_RNDN);
}

static mpfr_t r11295, r11296, r11297, r11298, r11299, r11300, r11301, r11302, r11303;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11295, "1", 10, MPFR_RNDN);
        mpfr_init(r11296);
        mpfr_init(r11297);
        mpfr_init(r11298);
        mpfr_init(r11299);
        mpfr_init(r11300);
        mpfr_init(r11301);
        mpfr_init(r11302);
        mpfr_init(r11303);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11296, x, MPFR_RNDN);
        mpfr_add(r11297, r11296, r11295, MPFR_RNDN);
        mpfr_sqrt(r11298, r11297, MPFR_RNDN);
        mpfr_sqrt(r11299, r11298, MPFR_RNDN);
        mpfr_mul(r11300, r11299, r11299, MPFR_RNDN);
        mpfr_sqrt(r11301, r11296, MPFR_RNDN);
        mpfr_add(r11302, r11300, r11301, MPFR_RNDN);
        mpfr_div(r11303, r11295, r11302, MPFR_RNDN);
        return mpfr_get_d(r11303, MPFR_RNDN);
}

static mpfr_t r11304, r11305, r11306, r11307, r11308, r11309, r11310, r11311, r11312;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11304, "1", 10, MPFR_RNDN);
        mpfr_init(r11305);
        mpfr_init(r11306);
        mpfr_init(r11307);
        mpfr_init(r11308);
        mpfr_init(r11309);
        mpfr_init(r11310);
        mpfr_init(r11311);
        mpfr_init(r11312);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11305, x, MPFR_RNDN);
        mpfr_add(r11306, r11305, r11304, MPFR_RNDN);
        mpfr_sqrt(r11307, r11306, MPFR_RNDN);
        mpfr_sqrt(r11308, r11307, MPFR_RNDN);
        mpfr_mul(r11309, r11308, r11308, MPFR_RNDN);
        mpfr_sqrt(r11310, r11305, MPFR_RNDN);
        mpfr_add(r11311, r11309, r11310, MPFR_RNDN);
        mpfr_div(r11312, r11304, r11311, MPFR_RNDN);
        return mpfr_get_d(r11312, MPFR_RNDN);
}

