#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 r4499939 = 2.0f;
        float r4499940 = x;
        float r4499941 = r4499939 * r4499940;
        float r4499942 = exp(r4499941);
        float r4499943 = 1.0f;
        float r4499944 = r4499942 - r4499943;
        float r4499945 = exp(r4499940);
        float r4499946 = r4499945 - r4499943;
        float r4499947 = r4499944 / r4499946;
        float r4499948 = sqrt(r4499947);
        return r4499948;
}

double f_id(double x) {
        double r4499949 = 2.0;
        double r4499950 = x;
        double r4499951 = r4499949 * r4499950;
        double r4499952 = exp(r4499951);
        double r4499953 = 1.0;
        double r4499954 = r4499952 - r4499953;
        double r4499955 = exp(r4499950);
        double r4499956 = r4499955 - r4499953;
        double r4499957 = r4499954 / r4499956;
        double r4499958 = sqrt(r4499957);
        return r4499958;
}


double f_of(float x) {
        float r4499959 = 1.0f;
        float r4499960 = x;
        float r4499961 = exp(r4499960);
        float r4499962 = r4499959 + r4499961;
        float r4499963 = r4499962 / r4499959;
        float r4499964 = sqrt(r4499963);
        return r4499964;
}

double f_od(double x) {
        double r4499965 = 1.0;
        double r4499966 = x;
        double r4499967 = exp(r4499966);
        double r4499968 = r4499965 + r4499967;
        double r4499969 = r4499968 / r4499965;
        double r4499970 = sqrt(r4499969);
        return r4499970;
}

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 r4499971, r4499972, r4499973, r4499974, r4499975, r4499976, r4499977, r4499978, r4499979, r4499980;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4499971, "2", 10, MPFR_RNDN);
        mpfr_init(r4499972);
        mpfr_init(r4499973);
        mpfr_init(r4499974);
        mpfr_init_set_str(r4499975, "1", 10, MPFR_RNDN);
        mpfr_init(r4499976);
        mpfr_init(r4499977);
        mpfr_init(r4499978);
        mpfr_init(r4499979);
        mpfr_init(r4499980);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4499972, x, MPFR_RNDN);
        mpfr_mul(r4499973, r4499971, r4499972, MPFR_RNDN);
        mpfr_exp(r4499974, r4499973, MPFR_RNDN);
        ;
        mpfr_sub(r4499976, r4499974, r4499975, MPFR_RNDN);
        mpfr_exp(r4499977, r4499972, MPFR_RNDN);
        mpfr_sub(r4499978, r4499977, r4499975, MPFR_RNDN);
        mpfr_div(r4499979, r4499976, r4499978, MPFR_RNDN);
        mpfr_sqrt(r4499980, r4499979, MPFR_RNDN);
        return mpfr_get_d(r4499980, MPFR_RNDN);
}

static mpfr_t r4499981, r4499982, r4499983, r4499984, r4499985, r4499986;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4499981, "1", 10, MPFR_RNDN);
        mpfr_init(r4499982);
        mpfr_init(r4499983);
        mpfr_init(r4499984);
        mpfr_init(r4499985);
        mpfr_init(r4499986);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4499982, x, MPFR_RNDN);
        mpfr_exp(r4499983, r4499982, MPFR_RNDN);
        mpfr_add(r4499984, r4499981, r4499983, MPFR_RNDN);
        mpfr_div(r4499985, r4499984, r4499981, MPFR_RNDN);
        mpfr_sqrt(r4499986, r4499985, MPFR_RNDN);
        return mpfr_get_d(r4499986, MPFR_RNDN);
}

static mpfr_t r4499987, r4499988, r4499989, r4499990, r4499991, r4499992;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4499987, "1", 10, MPFR_RNDN);
        mpfr_init(r4499988);
        mpfr_init(r4499989);
        mpfr_init(r4499990);
        mpfr_init(r4499991);
        mpfr_init(r4499992);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4499988, x, MPFR_RNDN);
        mpfr_exp(r4499989, r4499988, MPFR_RNDN);
        mpfr_add(r4499990, r4499987, r4499989, MPFR_RNDN);
        mpfr_div(r4499991, r4499990, r4499987, MPFR_RNDN);
        mpfr_sqrt(r4499992, r4499991, MPFR_RNDN);
        return mpfr_get_d(r4499992, MPFR_RNDN);
}

