#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "2isqrt (example 3.6)";

double f_if(float x) {
        float r11391 = 1;
        float r11392 = x;
        float r11393 = sqrt(r11392);
        float r11394 = r11391 / r11393;
        float r11395 = r11392 + r11391;
        float r11396 = sqrt(r11395);
        float r11397 = r11391 / r11396;
        float r11398 = r11394 - r11397;
        return r11398;
}

double f_id(double x) {
        double r11399 = 1;
        double r11400 = x;
        double r11401 = sqrt(r11400);
        double r11402 = r11399 / r11401;
        double r11403 = r11400 + r11399;
        double r11404 = sqrt(r11403);
        double r11405 = r11399 / r11404;
        double r11406 = r11402 - r11405;
        return r11406;
}


double f_of(float x) {
        float r11407 = 1;
        float r11408 = x;
        float r11409 = r11408 + r11407;
        float r11410 = r11407 / r11409;
        float r11411 = sqrt(r11409);
        float r11412 = r11408 / r11411;
        float r11413 = sqrt(r11408);
        float r11414 = r11408 / r11413;
        float r11415 = r11412 + r11414;
        float r11416 = r11410 / r11415;
        float r11417 = sqrt(r11416);
        float r11418 = r11417 * r11417;
        return r11418;
}

double f_od(double x) {
        double r11419 = 1;
        double r11420 = x;
        double r11421 = r11420 + r11419;
        double r11422 = r11419 / r11421;
        double r11423 = sqrt(r11421);
        double r11424 = r11420 / r11423;
        double r11425 = sqrt(r11420);
        double r11426 = r11420 / r11425;
        double r11427 = r11424 + r11426;
        double r11428 = r11422 / r11427;
        double r11429 = sqrt(r11428);
        double r11430 = r11429 * r11429;
        return r11430;
}

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 r11431, r11432, r11433, r11434, r11435, r11436, r11437, r11438;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11431, "1", 10, MPFR_RNDN);
        mpfr_init(r11432);
        mpfr_init(r11433);
        mpfr_init(r11434);
        mpfr_init(r11435);
        mpfr_init(r11436);
        mpfr_init(r11437);
        mpfr_init(r11438);
}

double f_im(double x) {
        ;
        mpfr_set_d(r11432, x, MPFR_RNDN);
        mpfr_sqrt(r11433, r11432, MPFR_RNDN);
        mpfr_div(r11434, r11431, r11433, MPFR_RNDN);
        mpfr_add(r11435, r11432, r11431, MPFR_RNDN);
        mpfr_sqrt(r11436, r11435, MPFR_RNDN);
        mpfr_div(r11437, r11431, r11436, MPFR_RNDN);
        mpfr_sub(r11438, r11434, r11437, MPFR_RNDN);
        return mpfr_get_d(r11438, MPFR_RNDN);
}

static mpfr_t r11439, r11440, r11441, r11442, r11443, r11444, r11445, r11446, r11447, r11448, r11449, r11450;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11439, "1", 10, MPFR_RNDN);
        mpfr_init(r11440);
        mpfr_init(r11441);
        mpfr_init(r11442);
        mpfr_init(r11443);
        mpfr_init(r11444);
        mpfr_init(r11445);
        mpfr_init(r11446);
        mpfr_init(r11447);
        mpfr_init(r11448);
        mpfr_init(r11449);
        mpfr_init(r11450);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11440, x, MPFR_RNDN);
        mpfr_add(r11441, r11440, r11439, MPFR_RNDN);
        mpfr_div(r11442, r11439, r11441, MPFR_RNDN);
        mpfr_sqrt(r11443, r11441, MPFR_RNDN);
        mpfr_div(r11444, r11440, r11443, MPFR_RNDN);
        mpfr_sqrt(r11445, r11440, MPFR_RNDN);
        mpfr_div(r11446, r11440, r11445, MPFR_RNDN);
        mpfr_add(r11447, r11444, r11446, MPFR_RNDN);
        mpfr_div(r11448, r11442, r11447, MPFR_RNDN);
        mpfr_sqrt(r11449, r11448, MPFR_RNDN);
        mpfr_mul(r11450, r11449, r11449, MPFR_RNDN);
        return mpfr_get_d(r11450, MPFR_RNDN);
}

static mpfr_t r11451, r11452, r11453, r11454, r11455, r11456, r11457, r11458, r11459, r11460, r11461, r11462;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11451, "1", 10, MPFR_RNDN);
        mpfr_init(r11452);
        mpfr_init(r11453);
        mpfr_init(r11454);
        mpfr_init(r11455);
        mpfr_init(r11456);
        mpfr_init(r11457);
        mpfr_init(r11458);
        mpfr_init(r11459);
        mpfr_init(r11460);
        mpfr_init(r11461);
        mpfr_init(r11462);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11452, x, MPFR_RNDN);
        mpfr_add(r11453, r11452, r11451, MPFR_RNDN);
        mpfr_div(r11454, r11451, r11453, MPFR_RNDN);
        mpfr_sqrt(r11455, r11453, MPFR_RNDN);
        mpfr_div(r11456, r11452, r11455, MPFR_RNDN);
        mpfr_sqrt(r11457, r11452, MPFR_RNDN);
        mpfr_div(r11458, r11452, r11457, MPFR_RNDN);
        mpfr_add(r11459, r11456, r11458, MPFR_RNDN);
        mpfr_div(r11460, r11454, r11459, MPFR_RNDN);
        mpfr_sqrt(r11461, r11460, MPFR_RNDN);
        mpfr_mul(r11462, r11461, r11461, MPFR_RNDN);
        return mpfr_get_d(r11462, MPFR_RNDN);
}

