#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 r11175 = x;
        float r11176 = 1;
        float r11177 = r11175 + r11176;
        float r11178 = sqrt(r11177);
        float r11179 = sqrt(r11175);
        float r11180 = r11178 - r11179;
        return r11180;
}

double f_id(double x) {
        double r11181 = x;
        double r11182 = 1;
        double r11183 = r11181 + r11182;
        double r11184 = sqrt(r11183);
        double r11185 = sqrt(r11181);
        double r11186 = r11184 - r11185;
        return r11186;
}


double f_of(float x) {
        float r11187 = 1;
        float r11188 = x;
        float r11189 = r11188 + r11187;
        float r11190 = sqrt(r11189);
        float r11191 = sqrt(r11188);
        float r11192 = r11190 + r11191;
        float r11193 = r11187 / r11192;
        float r11194 = sqrt(r11193);
        float r11195 = r11187 + r11188;
        float r11196 = cbrt(r11195);
        float r11197 = fabs(r11196);
        float r11198 = cbrt(r11189);
        float r11199 = sqrt(r11198);
        float r11200 = r11197 * r11199;
        float r11201 = r11200 + r11191;
        float r11202 = r11187 / r11201;
        float r11203 = sqrt(r11202);
        float r11204 = r11194 * r11203;
        return r11204;
}

double f_od(double x) {
        double r11205 = 1;
        double r11206 = x;
        double r11207 = r11206 + r11205;
        double r11208 = sqrt(r11207);
        double r11209 = sqrt(r11206);
        double r11210 = r11208 + r11209;
        double r11211 = r11205 / r11210;
        double r11212 = sqrt(r11211);
        double r11213 = r11205 + r11206;
        double r11214 = cbrt(r11213);
        double r11215 = fabs(r11214);
        double r11216 = cbrt(r11207);
        double r11217 = sqrt(r11216);
        double r11218 = r11215 * r11217;
        double r11219 = r11218 + r11209;
        double r11220 = r11205 / r11219;
        double r11221 = sqrt(r11220);
        double r11222 = r11212 * r11221;
        return r11222;
}

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 r11223, r11224, r11225, r11226, r11227, r11228;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r11223);
        mpfr_init_set_str(r11224, "1", 10, MPFR_RNDN);
        mpfr_init(r11225);
        mpfr_init(r11226);
        mpfr_init(r11227);
        mpfr_init(r11228);
}

double f_im(double x) {
        mpfr_set_d(r11223, x, MPFR_RNDN);
        ;
        mpfr_add(r11225, r11223, r11224, MPFR_RNDN);
        mpfr_sqrt(r11226, r11225, MPFR_RNDN);
        mpfr_sqrt(r11227, r11223, MPFR_RNDN);
        mpfr_sub(r11228, r11226, r11227, MPFR_RNDN);
        return mpfr_get_d(r11228, MPFR_RNDN);
}

static mpfr_t r11229, r11230, r11231, r11232, r11233, r11234, r11235, r11236, r11237, r11238, r11239, r11240, r11241, r11242, r11243, r11244, r11245, r11246;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11229, "1", 10, MPFR_RNDN);
        mpfr_init(r11230);
        mpfr_init(r11231);
        mpfr_init(r11232);
        mpfr_init(r11233);
        mpfr_init(r11234);
        mpfr_init(r11235);
        mpfr_init(r11236);
        mpfr_init(r11237);
        mpfr_init(r11238);
        mpfr_init(r11239);
        mpfr_init(r11240);
        mpfr_init(r11241);
        mpfr_init(r11242);
        mpfr_init(r11243);
        mpfr_init(r11244);
        mpfr_init(r11245);
        mpfr_init(r11246);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11230, x, MPFR_RNDN);
        mpfr_add(r11231, r11230, r11229, MPFR_RNDN);
        mpfr_sqrt(r11232, r11231, MPFR_RNDN);
        mpfr_sqrt(r11233, r11230, MPFR_RNDN);
        mpfr_add(r11234, r11232, r11233, MPFR_RNDN);
        mpfr_div(r11235, r11229, r11234, MPFR_RNDN);
        mpfr_sqrt(r11236, r11235, MPFR_RNDN);
        mpfr_add(r11237, r11229, r11230, MPFR_RNDN);
        mpfr_cbrt(r11238, r11237, MPFR_RNDN);
        mpfr_abs(r11239, r11238, MPFR_RNDN);
        mpfr_cbrt(r11240, r11231, MPFR_RNDN);
        mpfr_sqrt(r11241, r11240, MPFR_RNDN);
        mpfr_mul(r11242, r11239, r11241, MPFR_RNDN);
        mpfr_add(r11243, r11242, r11233, MPFR_RNDN);
        mpfr_div(r11244, r11229, r11243, MPFR_RNDN);
        mpfr_sqrt(r11245, r11244, MPFR_RNDN);
        mpfr_mul(r11246, r11236, r11245, MPFR_RNDN);
        return mpfr_get_d(r11246, MPFR_RNDN);
}

static mpfr_t r11247, r11248, r11249, r11250, r11251, r11252, r11253, r11254, r11255, r11256, r11257, r11258, r11259, r11260, r11261, r11262, r11263, r11264;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r11247, "1", 10, MPFR_RNDN);
        mpfr_init(r11248);
        mpfr_init(r11249);
        mpfr_init(r11250);
        mpfr_init(r11251);
        mpfr_init(r11252);
        mpfr_init(r11253);
        mpfr_init(r11254);
        mpfr_init(r11255);
        mpfr_init(r11256);
        mpfr_init(r11257);
        mpfr_init(r11258);
        mpfr_init(r11259);
        mpfr_init(r11260);
        mpfr_init(r11261);
        mpfr_init(r11262);
        mpfr_init(r11263);
        mpfr_init(r11264);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11248, x, MPFR_RNDN);
        mpfr_add(r11249, r11248, r11247, MPFR_RNDN);
        mpfr_sqrt(r11250, r11249, MPFR_RNDN);
        mpfr_sqrt(r11251, r11248, MPFR_RNDN);
        mpfr_add(r11252, r11250, r11251, MPFR_RNDN);
        mpfr_div(r11253, r11247, r11252, MPFR_RNDN);
        mpfr_sqrt(r11254, r11253, MPFR_RNDN);
        mpfr_add(r11255, r11247, r11248, MPFR_RNDN);
        mpfr_cbrt(r11256, r11255, MPFR_RNDN);
        mpfr_abs(r11257, r11256, MPFR_RNDN);
        mpfr_cbrt(r11258, r11249, MPFR_RNDN);
        mpfr_sqrt(r11259, r11258, MPFR_RNDN);
        mpfr_mul(r11260, r11257, r11259, MPFR_RNDN);
        mpfr_add(r11261, r11260, r11251, MPFR_RNDN);
        mpfr_div(r11262, r11247, r11261, MPFR_RNDN);
        mpfr_sqrt(r11263, r11262, MPFR_RNDN);
        mpfr_mul(r11264, r11254, r11263, MPFR_RNDN);
        return mpfr_get_d(r11264, MPFR_RNDN);
}

