#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 r4502290 = x;
        float r4502291 = 1.0f;
        float r4502292 = r4502290 + r4502291;
        float r4502293 = sqrt(r4502292);
        float r4502294 = sqrt(r4502290);
        float r4502295 = r4502293 - r4502294;
        return r4502295;
}

double f_id(double x) {
        double r4502296 = x;
        double r4502297 = 1.0;
        double r4502298 = r4502296 + r4502297;
        double r4502299 = sqrt(r4502298);
        double r4502300 = sqrt(r4502296);
        double r4502301 = r4502299 - r4502300;
        return r4502301;
}


double f_of(float x) {
        float r4502302 = x;
        float r4502303 = 1.0f;
        float r4502304 = r4502302 + r4502303;
        float r4502305 = sqrt(r4502304);
        float r4502306 = sqrt(r4502302);
        float r4502307 = r4502305 - r4502306;
        return r4502307;
}

double f_od(double x) {
        double r4502308 = x;
        double r4502309 = 1.0;
        double r4502310 = r4502308 + r4502309;
        double r4502311 = sqrt(r4502310);
        double r4502312 = sqrt(r4502308);
        double r4502313 = r4502311 - r4502312;
        return r4502313;
}

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 r4502314, r4502315, r4502316, r4502317, r4502318, r4502319;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4502314);
        mpfr_init_set_str(r4502315, "1", 10, MPFR_RNDN);
        mpfr_init(r4502316);
        mpfr_init(r4502317);
        mpfr_init(r4502318);
        mpfr_init(r4502319);
}

double f_im(double x) {
        mpfr_set_d(r4502314, x, MPFR_RNDN);
        ;
        mpfr_add(r4502316, r4502314, r4502315, MPFR_RNDN);
        mpfr_sqrt(r4502317, r4502316, MPFR_RNDN);
        mpfr_sqrt(r4502318, r4502314, MPFR_RNDN);
        mpfr_sub(r4502319, r4502317, r4502318, MPFR_RNDN);
        return mpfr_get_d(r4502319, MPFR_RNDN);
}

static mpfr_t r4502320, r4502321, r4502322, r4502323, r4502324, r4502325;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4502320);
        mpfr_init_set_str(r4502321, "1", 10, MPFR_RNDN);
        mpfr_init(r4502322);
        mpfr_init(r4502323);
        mpfr_init(r4502324);
        mpfr_init(r4502325);
}

double f_fm(double x) {
        mpfr_set_d(r4502320, x, MPFR_RNDN);
        ;
        mpfr_add(r4502322, r4502320, r4502321, MPFR_RNDN);
        mpfr_sqrt(r4502323, r4502322, MPFR_RNDN);
        mpfr_sqrt(r4502324, r4502320, MPFR_RNDN);
        mpfr_sub(r4502325, r4502323, r4502324, MPFR_RNDN);
        return mpfr_get_d(r4502325, MPFR_RNDN);
}

static mpfr_t r4502326, r4502327, r4502328, r4502329, r4502330, r4502331;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4502326);
        mpfr_init_set_str(r4502327, "1", 10, MPFR_RNDN);
        mpfr_init(r4502328);
        mpfr_init(r4502329);
        mpfr_init(r4502330);
        mpfr_init(r4502331);
}

double f_dm(double x) {
        mpfr_set_d(r4502326, x, MPFR_RNDN);
        ;
        mpfr_add(r4502328, r4502326, r4502327, MPFR_RNDN);
        mpfr_sqrt(r4502329, r4502328, MPFR_RNDN);
        mpfr_sqrt(r4502330, r4502326, MPFR_RNDN);
        mpfr_sub(r4502331, r4502329, r4502330, MPFR_RNDN);
        return mpfr_get_d(r4502331, MPFR_RNDN);
}

