#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 r27273 = x;
        float r27274 = 1;
        float r27275 = r27273 + r27274;
        float r27276 = sqrt(r27275);
        float r27277 = sqrt(r27273);
        float r27278 = r27276 - r27277;
        return r27278;
}

double f_id(double x) {
        double r27279 = x;
        double r27280 = 1;
        double r27281 = r27279 + r27280;
        double r27282 = sqrt(r27281);
        double r27283 = sqrt(r27279);
        double r27284 = r27282 - r27283;
        return r27284;
}


double f_of(float x) {
        float r27285 = 1;
        float r27286 = x;
        float r27287 = r27286 + r27285;
        float r27288 = sqrt(r27287);
        float r27289 = sqrt(r27286);
        float r27290 = r27288 + r27289;
        float r27291 = r27285 / r27290;
        return r27291;
}

double f_od(double x) {
        double r27292 = 1;
        double r27293 = x;
        double r27294 = r27293 + r27292;
        double r27295 = sqrt(r27294);
        double r27296 = sqrt(r27293);
        double r27297 = r27295 + r27296;
        double r27298 = r27292 / r27297;
        return r27298;
}

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 r27299, r27300, r27301, r27302, r27303, r27304;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27299);
        mpfr_init_set_str(r27300, "1", 10, MPFR_RNDN);
        mpfr_init(r27301);
        mpfr_init(r27302);
        mpfr_init(r27303);
        mpfr_init(r27304);
}

double f_im(double x) {
        mpfr_set_d(r27299, x, MPFR_RNDN);
        ;
        mpfr_add(r27301, r27299, r27300, MPFR_RNDN);
        mpfr_sqrt(r27302, r27301, MPFR_RNDN);
        mpfr_sqrt(r27303, r27299, MPFR_RNDN);
        mpfr_sub(r27304, r27302, r27303, MPFR_RNDN);
        return mpfr_get_d(r27304, MPFR_RNDN);
}

static mpfr_t r27305, r27306, r27307, r27308, r27309, r27310, r27311;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27305, "1", 10, MPFR_RNDN);
        mpfr_init(r27306);
        mpfr_init(r27307);
        mpfr_init(r27308);
        mpfr_init(r27309);
        mpfr_init(r27310);
        mpfr_init(r27311);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r27306, x, MPFR_RNDN);
        mpfr_add(r27307, r27306, r27305, MPFR_RNDN);
        mpfr_sqrt(r27308, r27307, MPFR_RNDN);
        mpfr_sqrt(r27309, r27306, MPFR_RNDN);
        mpfr_add(r27310, r27308, r27309, MPFR_RNDN);
        mpfr_div(r27311, r27305, r27310, MPFR_RNDN);
        return mpfr_get_d(r27311, MPFR_RNDN);
}

static mpfr_t r27312, r27313, r27314, r27315, r27316, r27317, r27318;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27312, "1", 10, MPFR_RNDN);
        mpfr_init(r27313);
        mpfr_init(r27314);
        mpfr_init(r27315);
        mpfr_init(r27316);
        mpfr_init(r27317);
        mpfr_init(r27318);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r27313, x, MPFR_RNDN);
        mpfr_add(r27314, r27313, r27312, MPFR_RNDN);
        mpfr_sqrt(r27315, r27314, MPFR_RNDN);
        mpfr_sqrt(r27316, r27313, MPFR_RNDN);
        mpfr_add(r27317, r27315, r27316, MPFR_RNDN);
        mpfr_div(r27318, r27312, r27317, MPFR_RNDN);
        return mpfr_get_d(r27318, MPFR_RNDN);
}

