#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 r27211 = x;
        float r27212 = 1;
        float r27213 = r27211 + r27212;
        float r27214 = sqrt(r27213);
        float r27215 = sqrt(r27211);
        float r27216 = r27214 - r27215;
        return r27216;
}

double f_id(double x) {
        double r27217 = x;
        double r27218 = 1;
        double r27219 = r27217 + r27218;
        double r27220 = sqrt(r27219);
        double r27221 = sqrt(r27217);
        double r27222 = r27220 - r27221;
        return r27222;
}


double f_of(float x) {
        float r27223 = 1;
        float r27224 = x;
        float r27225 = r27224 + r27223;
        float r27226 = sqrt(r27225);
        float r27227 = sqrt(r27224);
        float r27228 = r27226 + r27227;
        float r27229 = r27223 / r27228;
        return r27229;
}

double f_od(double x) {
        double r27230 = 1;
        double r27231 = x;
        double r27232 = r27231 + r27230;
        double r27233 = sqrt(r27232);
        double r27234 = sqrt(r27231);
        double r27235 = r27233 + r27234;
        double r27236 = r27230 / r27235;
        return r27236;
}

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 r27237, r27238, r27239, r27240, r27241, r27242;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27237);
        mpfr_init_set_str(r27238, "1", 10, MPFR_RNDN);
        mpfr_init(r27239);
        mpfr_init(r27240);
        mpfr_init(r27241);
        mpfr_init(r27242);
}

double f_im(double x) {
        mpfr_set_d(r27237, x, MPFR_RNDN);
        ;
        mpfr_add(r27239, r27237, r27238, MPFR_RNDN);
        mpfr_sqrt(r27240, r27239, MPFR_RNDN);
        mpfr_sqrt(r27241, r27237, MPFR_RNDN);
        mpfr_sub(r27242, r27240, r27241, MPFR_RNDN);
        return mpfr_get_d(r27242, MPFR_RNDN);
}

static mpfr_t r27243, r27244, r27245, r27246, r27247, r27248, r27249;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27243, "1", 10, MPFR_RNDN);
        mpfr_init(r27244);
        mpfr_init(r27245);
        mpfr_init(r27246);
        mpfr_init(r27247);
        mpfr_init(r27248);
        mpfr_init(r27249);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r27244, x, MPFR_RNDN);
        mpfr_add(r27245, r27244, r27243, MPFR_RNDN);
        mpfr_sqrt(r27246, r27245, MPFR_RNDN);
        mpfr_sqrt(r27247, r27244, MPFR_RNDN);
        mpfr_add(r27248, r27246, r27247, MPFR_RNDN);
        mpfr_div(r27249, r27243, r27248, MPFR_RNDN);
        return mpfr_get_d(r27249, MPFR_RNDN);
}

static mpfr_t r27250, r27251, r27252, r27253, r27254, r27255, r27256;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27250, "1", 10, MPFR_RNDN);
        mpfr_init(r27251);
        mpfr_init(r27252);
        mpfr_init(r27253);
        mpfr_init(r27254);
        mpfr_init(r27255);
        mpfr_init(r27256);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r27251, x, MPFR_RNDN);
        mpfr_add(r27252, r27251, r27250, MPFR_RNDN);
        mpfr_sqrt(r27253, r27252, MPFR_RNDN);
        mpfr_sqrt(r27254, r27251, MPFR_RNDN);
        mpfr_add(r27255, r27253, r27254, MPFR_RNDN);
        mpfr_div(r27256, r27250, r27255, MPFR_RNDN);
        return mpfr_get_d(r27256, MPFR_RNDN);
}

