#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "sqrtexp (problem 3.4.4)";

double f_if(float x) {
        float r4415230 = 2;
        float r4415231 = x;
        float r4415232 = r4415230 * r4415231;
        float r4415233 = exp(r4415232);
        float r4415234 = 1;
        float r4415235 = r4415233 - r4415234;
        float r4415236 = exp(r4415231);
        float r4415237 = r4415236 - r4415234;
        float r4415238 = r4415235 / r4415237;
        float r4415239 = sqrt(r4415238);
        return r4415239;
}

double f_id(double x) {
        double r4415240 = 2;
        double r4415241 = x;
        double r4415242 = r4415240 * r4415241;
        double r4415243 = exp(r4415242);
        double r4415244 = 1;
        double r4415245 = r4415243 - r4415244;
        double r4415246 = exp(r4415241);
        double r4415247 = r4415246 - r4415244;
        double r4415248 = r4415245 / r4415247;
        double r4415249 = sqrt(r4415248);
        return r4415249;
}


double f_of(float x) {
        float r4415250 = 1;
        float r4415251 = x;
        float r4415252 = exp(r4415251);
        float r4415253 = r4415250 + r4415252;
        float r4415254 = r4415253 / r4415250;
        float r4415255 = sqrt(r4415254);
        return r4415255;
}

double f_od(double x) {
        double r4415256 = 1;
        double r4415257 = x;
        double r4415258 = exp(r4415257);
        double r4415259 = r4415256 + r4415258;
        double r4415260 = r4415259 / r4415256;
        double r4415261 = sqrt(r4415260);
        return r4415261;
}

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 r4415262, r4415263, r4415264, r4415265, r4415266, r4415267, r4415268, r4415269, r4415270, r4415271;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4415262, "2", 10, MPFR_RNDN);
        mpfr_init(r4415263);
        mpfr_init(r4415264);
        mpfr_init(r4415265);
        mpfr_init_set_str(r4415266, "1", 10, MPFR_RNDN);
        mpfr_init(r4415267);
        mpfr_init(r4415268);
        mpfr_init(r4415269);
        mpfr_init(r4415270);
        mpfr_init(r4415271);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4415263, x, MPFR_RNDN);
        mpfr_mul(r4415264, r4415262, r4415263, MPFR_RNDN);
        mpfr_exp(r4415265, r4415264, MPFR_RNDN);
        ;
        mpfr_sub(r4415267, r4415265, r4415266, MPFR_RNDN);
        mpfr_exp(r4415268, r4415263, MPFR_RNDN);
        mpfr_sub(r4415269, r4415268, r4415266, MPFR_RNDN);
        mpfr_div(r4415270, r4415267, r4415269, MPFR_RNDN);
        mpfr_sqrt(r4415271, r4415270, MPFR_RNDN);
        return mpfr_get_d(r4415271, MPFR_RNDN);
}

static mpfr_t r4415272, r4415273, r4415274, r4415275, r4415276, r4415277;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4415272, "1", 10, MPFR_RNDN);
        mpfr_init(r4415273);
        mpfr_init(r4415274);
        mpfr_init(r4415275);
        mpfr_init(r4415276);
        mpfr_init(r4415277);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4415273, x, MPFR_RNDN);
        mpfr_exp(r4415274, r4415273, MPFR_RNDN);
        mpfr_add(r4415275, r4415272, r4415274, MPFR_RNDN);
        mpfr_div(r4415276, r4415275, r4415272, MPFR_RNDN);
        mpfr_sqrt(r4415277, r4415276, MPFR_RNDN);
        return mpfr_get_d(r4415277, MPFR_RNDN);
}

static mpfr_t r4415278, r4415279, r4415280, r4415281, r4415282, r4415283;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4415278, "1", 10, MPFR_RNDN);
        mpfr_init(r4415279);
        mpfr_init(r4415280);
        mpfr_init(r4415281);
        mpfr_init(r4415282);
        mpfr_init(r4415283);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4415279, x, MPFR_RNDN);
        mpfr_exp(r4415280, r4415279, MPFR_RNDN);
        mpfr_add(r4415281, r4415278, r4415280, MPFR_RNDN);
        mpfr_div(r4415282, r4415281, r4415278, MPFR_RNDN);
        mpfr_sqrt(r4415283, r4415282, MPFR_RNDN);
        return mpfr_get_d(r4415283, MPFR_RNDN);
}

