#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 r10924 = x;
        float r10925 = 1;
        float r10926 = r10924 + r10925;
        float r10927 = sqrt(r10926);
        float r10928 = sqrt(r10924);
        float r10929 = r10927 - r10928;
        return r10929;
}

double f_id(double x) {
        double r10930 = x;
        double r10931 = 1;
        double r10932 = r10930 + r10931;
        double r10933 = sqrt(r10932);
        double r10934 = sqrt(r10930);
        double r10935 = r10933 - r10934;
        return r10935;
}


double f_of(float x) {
        float r10936 = x;
        float r10937 = 1;
        float r10938 = r10936 + r10937;
        float r10939 = sqrt(r10938);
        float r10940 = sqrt(r10936);
        float r10941 = r10939 + r10940;
        float r10942 = sqrt(r10941);
        float r10943 = -1;
        float r10944 = r10943 - r10937;
        float r10945 = pow(r10942, r10944);
        return r10945;
}

double f_od(double x) {
        double r10946 = x;
        double r10947 = 1;
        double r10948 = r10946 + r10947;
        double r10949 = sqrt(r10948);
        double r10950 = sqrt(r10946);
        double r10951 = r10949 + r10950;
        double r10952 = sqrt(r10951);
        double r10953 = -1;
        double r10954 = r10953 - r10947;
        double r10955 = pow(r10952, r10954);
        return r10955;
}

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 r10956, r10957, r10958, r10959, r10960, r10961;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10956);
        mpfr_init_set_str(r10957, "1", 10, MPFR_RNDN);
        mpfr_init(r10958);
        mpfr_init(r10959);
        mpfr_init(r10960);
        mpfr_init(r10961);
}

double f_im(double x) {
        mpfr_set_d(r10956, x, MPFR_RNDN);
        ;
        mpfr_add(r10958, r10956, r10957, MPFR_RNDN);
        mpfr_sqrt(r10959, r10958, MPFR_RNDN);
        mpfr_sqrt(r10960, r10956, MPFR_RNDN);
        mpfr_sub(r10961, r10959, r10960, MPFR_RNDN);
        return mpfr_get_d(r10961, MPFR_RNDN);
}

static mpfr_t r10962, r10963, r10964, r10965, r10966, r10967, r10968, r10969, r10970, r10971;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10962);
        mpfr_init_set_str(r10963, "1", 10, MPFR_RNDN);
        mpfr_init(r10964);
        mpfr_init(r10965);
        mpfr_init(r10966);
        mpfr_init(r10967);
        mpfr_init(r10968);
        mpfr_init_set_str(r10969, "-1", 10, MPFR_RNDN);
        mpfr_init(r10970);
        mpfr_init(r10971);
}

double f_fm(double x) {
        mpfr_set_d(r10962, x, MPFR_RNDN);
        ;
        mpfr_add(r10964, r10962, r10963, MPFR_RNDN);
        mpfr_sqrt(r10965, r10964, MPFR_RNDN);
        mpfr_sqrt(r10966, r10962, MPFR_RNDN);
        mpfr_add(r10967, r10965, r10966, MPFR_RNDN);
        mpfr_sqrt(r10968, r10967, MPFR_RNDN);
        ;
        mpfr_sub(r10970, r10969, r10963, MPFR_RNDN);
        mpfr_pow(r10971, r10968, r10970, MPFR_RNDN);
        return mpfr_get_d(r10971, MPFR_RNDN);
}

static mpfr_t r10972, r10973, r10974, r10975, r10976, r10977, r10978, r10979, r10980, r10981;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10972);
        mpfr_init_set_str(r10973, "1", 10, MPFR_RNDN);
        mpfr_init(r10974);
        mpfr_init(r10975);
        mpfr_init(r10976);
        mpfr_init(r10977);
        mpfr_init(r10978);
        mpfr_init_set_str(r10979, "-1", 10, MPFR_RNDN);
        mpfr_init(r10980);
        mpfr_init(r10981);
}

double f_dm(double x) {
        mpfr_set_d(r10972, x, MPFR_RNDN);
        ;
        mpfr_add(r10974, r10972, r10973, MPFR_RNDN);
        mpfr_sqrt(r10975, r10974, MPFR_RNDN);
        mpfr_sqrt(r10976, r10972, MPFR_RNDN);
        mpfr_add(r10977, r10975, r10976, MPFR_RNDN);
        mpfr_sqrt(r10978, r10977, MPFR_RNDN);
        ;
        mpfr_sub(r10980, r10979, r10973, MPFR_RNDN);
        mpfr_pow(r10981, r10978, r10980, MPFR_RNDN);
        return mpfr_get_d(r10981, MPFR_RNDN);
}

