#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 r11869897 = 2;
        float r11869898 = x;
        float r11869899 = r11869897 * r11869898;
        float r11869900 = exp(r11869899);
        float r11869901 = 1;
        float r11869902 = r11869900 - r11869901;
        float r11869903 = exp(r11869898);
        float r11869904 = r11869903 - r11869901;
        float r11869905 = r11869902 / r11869904;
        float r11869906 = sqrt(r11869905);
        return r11869906;
}

double f_id(double x) {
        double r11869907 = 2;
        double r11869908 = x;
        double r11869909 = r11869907 * r11869908;
        double r11869910 = exp(r11869909);
        double r11869911 = 1;
        double r11869912 = r11869910 - r11869911;
        double r11869913 = exp(r11869908);
        double r11869914 = r11869913 - r11869911;
        double r11869915 = r11869912 / r11869914;
        double r11869916 = sqrt(r11869915);
        return r11869916;
}


double f_of(float x) {
        float r11869917 = 1;
        float r11869918 = x;
        float r11869919 = exp(r11869918);
        float r11869920 = r11869917 + r11869919;
        float r11869921 = r11869920 / r11869917;
        float r11869922 = sqrt(r11869921);
        return r11869922;
}

double f_od(double x) {
        double r11869923 = 1;
        double r11869924 = x;
        double r11869925 = exp(r11869924);
        double r11869926 = r11869923 + r11869925;
        double r11869927 = r11869926 / r11869923;
        double r11869928 = sqrt(r11869927);
        return r11869928;
}

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 r11869929, r11869930, r11869931, r11869932, r11869933, r11869934, r11869935, r11869936, r11869937, r11869938;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r11869929, "2", 10, MPFR_RNDN);
        mpfr_init(r11869930);
        mpfr_init(r11869931);
        mpfr_init(r11869932);
        mpfr_init_set_str(r11869933, "1", 10, MPFR_RNDN);
        mpfr_init(r11869934);
        mpfr_init(r11869935);
        mpfr_init(r11869936);
        mpfr_init(r11869937);
        mpfr_init(r11869938);
}

double f_im(double x) {
        ;
        mpfr_set_d(r11869930, x, MPFR_RNDN);
        mpfr_mul(r11869931, r11869929, r11869930, MPFR_RNDN);
        mpfr_exp(r11869932, r11869931, MPFR_RNDN);
        ;
        mpfr_sub(r11869934, r11869932, r11869933, MPFR_RNDN);
        mpfr_exp(r11869935, r11869930, MPFR_RNDN);
        mpfr_sub(r11869936, r11869935, r11869933, MPFR_RNDN);
        mpfr_div(r11869937, r11869934, r11869936, MPFR_RNDN);
        mpfr_sqrt(r11869938, r11869937, MPFR_RNDN);
        return mpfr_get_d(r11869938, MPFR_RNDN);
}

static mpfr_t r11869939, r11869940, r11869941, r11869942, r11869943, r11869944;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r11869939, "1", 10, MPFR_RNDN);
        mpfr_init(r11869940);
        mpfr_init(r11869941);
        mpfr_init(r11869942);
        mpfr_init(r11869943);
        mpfr_init(r11869944);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11869940, x, MPFR_RNDN);
        mpfr_exp(r11869941, r11869940, MPFR_RNDN);
        mpfr_add(r11869942, r11869939, r11869941, MPFR_RNDN);
        mpfr_div(r11869943, r11869942, r11869939, MPFR_RNDN);
        mpfr_sqrt(r11869944, r11869943, MPFR_RNDN);
        return mpfr_get_d(r11869944, MPFR_RNDN);
}

static mpfr_t r11869945, r11869946, r11869947, r11869948, r11869949, r11869950;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r11869945, "1", 10, MPFR_RNDN);
        mpfr_init(r11869946);
        mpfr_init(r11869947);
        mpfr_init(r11869948);
        mpfr_init(r11869949);
        mpfr_init(r11869950);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11869946, x, MPFR_RNDN);
        mpfr_exp(r11869947, r11869946, MPFR_RNDN);
        mpfr_add(r11869948, r11869945, r11869947, MPFR_RNDN);
        mpfr_div(r11869949, r11869948, r11869945, MPFR_RNDN);
        mpfr_sqrt(r11869950, r11869949, MPFR_RNDN);
        return mpfr_get_d(r11869950, MPFR_RNDN);
}

