#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 r10863 = x;
        float r10864 = 1;
        float r10865 = r10863 + r10864;
        float r10866 = sqrt(r10865);
        float r10867 = sqrt(r10863);
        float r10868 = r10866 - r10867;
        return r10868;
}

double f_id(double x) {
        double r10869 = x;
        double r10870 = 1;
        double r10871 = r10869 + r10870;
        double r10872 = sqrt(r10871);
        double r10873 = sqrt(r10869);
        double r10874 = r10872 - r10873;
        return r10874;
}


double f_of(float x) {
        float r10875 = 1;
        float r10876 = x;
        float r10877 = r10876 + r10875;
        float r10878 = sqrt(r10877);
        float r10879 = sqrt(r10876);
        float r10880 = r10878 + r10879;
        float r10881 = r10875 / r10880;
        return r10881;
}

double f_od(double x) {
        double r10882 = 1;
        double r10883 = x;
        double r10884 = r10883 + r10882;
        double r10885 = sqrt(r10884);
        double r10886 = sqrt(r10883);
        double r10887 = r10885 + r10886;
        double r10888 = r10882 / r10887;
        return r10888;
}

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 r10889, r10890, r10891, r10892, r10893, r10894;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10889);
        mpfr_init_set_str(r10890, "1", 10, MPFR_RNDN);
        mpfr_init(r10891);
        mpfr_init(r10892);
        mpfr_init(r10893);
        mpfr_init(r10894);
}

double f_im(double x) {
        mpfr_set_d(r10889, x, MPFR_RNDN);
        ;
        mpfr_add(r10891, r10889, r10890, MPFR_RNDN);
        mpfr_sqrt(r10892, r10891, MPFR_RNDN);
        mpfr_sqrt(r10893, r10889, MPFR_RNDN);
        mpfr_sub(r10894, r10892, r10893, MPFR_RNDN);
        return mpfr_get_d(r10894, MPFR_RNDN);
}

static mpfr_t r10895, r10896, r10897, r10898, r10899, r10900, r10901;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10895, "1", 10, MPFR_RNDN);
        mpfr_init(r10896);
        mpfr_init(r10897);
        mpfr_init(r10898);
        mpfr_init(r10899);
        mpfr_init(r10900);
        mpfr_init(r10901);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10896, x, MPFR_RNDN);
        mpfr_add(r10897, r10896, r10895, MPFR_RNDN);
        mpfr_sqrt(r10898, r10897, MPFR_RNDN);
        mpfr_sqrt(r10899, r10896, MPFR_RNDN);
        mpfr_add(r10900, r10898, r10899, MPFR_RNDN);
        mpfr_div(r10901, r10895, r10900, MPFR_RNDN);
        return mpfr_get_d(r10901, MPFR_RNDN);
}

static mpfr_t r10902, r10903, r10904, r10905, r10906, r10907, r10908;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10902, "1", 10, MPFR_RNDN);
        mpfr_init(r10903);
        mpfr_init(r10904);
        mpfr_init(r10905);
        mpfr_init(r10906);
        mpfr_init(r10907);
        mpfr_init(r10908);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10903, x, MPFR_RNDN);
        mpfr_add(r10904, r10903, r10902, MPFR_RNDN);
        mpfr_sqrt(r10905, r10904, MPFR_RNDN);
        mpfr_sqrt(r10906, r10903, MPFR_RNDN);
        mpfr_add(r10907, r10905, r10906, MPFR_RNDN);
        mpfr_div(r10908, r10902, r10907, MPFR_RNDN);
        return mpfr_get_d(r10908, MPFR_RNDN);
}

