#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 r4941390 = x;
        float r4941391 = 1.0f;
        float r4941392 = r4941390 + r4941391;
        float r4941393 = sqrt(r4941392);
        float r4941394 = sqrt(r4941390);
        float r4941395 = r4941393 - r4941394;
        return r4941395;
}

double f_id(double x) {
        double r4941396 = x;
        double r4941397 = 1.0;
        double r4941398 = r4941396 + r4941397;
        double r4941399 = sqrt(r4941398);
        double r4941400 = sqrt(r4941396);
        double r4941401 = r4941399 - r4941400;
        return r4941401;
}


double f_of(float x) {
        float r4941402 = x;
        float r4941403 = 1.0f;
        float r4941404 = r4941402 + r4941403;
        float r4941405 = sqrt(r4941404);
        float r4941406 = sqrt(r4941402);
        float r4941407 = r4941405 - r4941406;
        return r4941407;
}

double f_od(double x) {
        double r4941408 = x;
        double r4941409 = 1.0;
        double r4941410 = r4941408 + r4941409;
        double r4941411 = sqrt(r4941410);
        double r4941412 = sqrt(r4941408);
        double r4941413 = r4941411 - r4941412;
        return r4941413;
}

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 r4941414, r4941415, r4941416, r4941417, r4941418, r4941419;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4941414);
        mpfr_init_set_str(r4941415, "1", 10, MPFR_RNDN);
        mpfr_init(r4941416);
        mpfr_init(r4941417);
        mpfr_init(r4941418);
        mpfr_init(r4941419);
}

double f_im(double x) {
        mpfr_set_d(r4941414, x, MPFR_RNDN);
        ;
        mpfr_add(r4941416, r4941414, r4941415, MPFR_RNDN);
        mpfr_sqrt(r4941417, r4941416, MPFR_RNDN);
        mpfr_sqrt(r4941418, r4941414, MPFR_RNDN);
        mpfr_sub(r4941419, r4941417, r4941418, MPFR_RNDN);
        return mpfr_get_d(r4941419, MPFR_RNDN);
}

static mpfr_t r4941420, r4941421, r4941422, r4941423, r4941424, r4941425;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4941420);
        mpfr_init_set_str(r4941421, "1", 10, MPFR_RNDN);
        mpfr_init(r4941422);
        mpfr_init(r4941423);
        mpfr_init(r4941424);
        mpfr_init(r4941425);
}

double f_fm(double x) {
        mpfr_set_d(r4941420, x, MPFR_RNDN);
        ;
        mpfr_add(r4941422, r4941420, r4941421, MPFR_RNDN);
        mpfr_sqrt(r4941423, r4941422, MPFR_RNDN);
        mpfr_sqrt(r4941424, r4941420, MPFR_RNDN);
        mpfr_sub(r4941425, r4941423, r4941424, MPFR_RNDN);
        return mpfr_get_d(r4941425, MPFR_RNDN);
}

static mpfr_t r4941426, r4941427, r4941428, r4941429, r4941430, r4941431;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4941426);
        mpfr_init_set_str(r4941427, "1", 10, MPFR_RNDN);
        mpfr_init(r4941428);
        mpfr_init(r4941429);
        mpfr_init(r4941430);
        mpfr_init(r4941431);
}

double f_dm(double x) {
        mpfr_set_d(r4941426, x, MPFR_RNDN);
        ;
        mpfr_add(r4941428, r4941426, r4941427, MPFR_RNDN);
        mpfr_sqrt(r4941429, r4941428, MPFR_RNDN);
        mpfr_sqrt(r4941430, r4941426, MPFR_RNDN);
        mpfr_sub(r4941431, r4941429, r4941430, MPFR_RNDN);
        return mpfr_get_d(r4941431, MPFR_RNDN);
}

