#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 r27764 = x;
        float r27765 = 1;
        float r27766 = r27764 + r27765;
        float r27767 = sqrt(r27766);
        float r27768 = sqrt(r27764);
        float r27769 = r27767 - r27768;
        return r27769;
}

double f_id(double x) {
        double r27770 = x;
        double r27771 = 1;
        double r27772 = r27770 + r27771;
        double r27773 = sqrt(r27772);
        double r27774 = sqrt(r27770);
        double r27775 = r27773 - r27774;
        return r27775;
}


double f_of(float x) {
        float r27776 = x;
        float r27777 = 1;
        float r27778 = r27776 + r27777;
        float r27779 = sqrt(r27778);
        float r27780 = sqrt(r27776);
        float r27781 = r27779 - r27780;
        return r27781;
}

double f_od(double x) {
        double r27782 = x;
        double r27783 = 1;
        double r27784 = r27782 + r27783;
        double r27785 = sqrt(r27784);
        double r27786 = sqrt(r27782);
        double r27787 = r27785 - r27786;
        return r27787;
}

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 r27788, r27789, r27790, r27791, r27792, r27793;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27788);
        mpfr_init_set_str(r27789, "1", 10, MPFR_RNDN);
        mpfr_init(r27790);
        mpfr_init(r27791);
        mpfr_init(r27792);
        mpfr_init(r27793);
}

double f_im(double x) {
        mpfr_set_d(r27788, x, MPFR_RNDN);
        ;
        mpfr_add(r27790, r27788, r27789, MPFR_RNDN);
        mpfr_sqrt(r27791, r27790, MPFR_RNDN);
        mpfr_sqrt(r27792, r27788, MPFR_RNDN);
        mpfr_sub(r27793, r27791, r27792, MPFR_RNDN);
        return mpfr_get_d(r27793, MPFR_RNDN);
}

static mpfr_t r27794, r27795, r27796, r27797, r27798, r27799;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27794);
        mpfr_init_set_str(r27795, "1", 10, MPFR_RNDN);
        mpfr_init(r27796);
        mpfr_init(r27797);
        mpfr_init(r27798);
        mpfr_init(r27799);
}

double f_fm(double x) {
        mpfr_set_d(r27794, x, MPFR_RNDN);
        ;
        mpfr_add(r27796, r27794, r27795, MPFR_RNDN);
        mpfr_sqrt(r27797, r27796, MPFR_RNDN);
        mpfr_sqrt(r27798, r27794, MPFR_RNDN);
        mpfr_sub(r27799, r27797, r27798, MPFR_RNDN);
        return mpfr_get_d(r27799, MPFR_RNDN);
}

static mpfr_t r27800, r27801, r27802, r27803, r27804, r27805;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27800);
        mpfr_init_set_str(r27801, "1", 10, MPFR_RNDN);
        mpfr_init(r27802);
        mpfr_init(r27803);
        mpfr_init(r27804);
        mpfr_init(r27805);
}

double f_dm(double x) {
        mpfr_set_d(r27800, x, MPFR_RNDN);
        ;
        mpfr_add(r27802, r27800, r27801, MPFR_RNDN);
        mpfr_sqrt(r27803, r27802, MPFR_RNDN);
        mpfr_sqrt(r27804, r27800, MPFR_RNDN);
        mpfr_sub(r27805, r27803, r27804, MPFR_RNDN);
        return mpfr_get_d(r27805, MPFR_RNDN);
}

