#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 r11447 = 1;
        float r11448 = x;
        float r11449 = sqrt(r11448);
        float r11450 = r11447 / r11449;
        float r11451 = r11448 + r11447;
        float r11452 = sqrt(r11451);
        float r11453 = r11447 / r11452;
        float r11454 = r11450 - r11453;
        return r11454;
}

double f_id(double x) {
        double r11455 = 1;
        double r11456 = x;
        double r11457 = sqrt(r11456);
        double r11458 = r11455 / r11457;
        double r11459 = r11456 + r11455;
        double r11460 = sqrt(r11459);
        double r11461 = r11455 / r11460;
        double r11462 = r11458 - r11461;
        return r11462;
}


double f_of(float x) {
        float r11463 = 1;
        float r11464 = x;
        float r11465 = r11463 + r11464;
        float r11466 = sqrt(r11465);
        float r11467 = sqrt(r11464);
        float r11468 = r11466 + r11467;
        float r11469 = r11463 / r11468;
        float r11470 = r11464 + r11463;
        float r11471 = cbrt(r11470);
        float r11472 = fabs(r11471);
        float r11473 = sqrt(r11471);
        float r11474 = r11472 * r11473;
        float r11475 = r11467 * r11474;
        float r11476 = r11469 / r11475;
        return r11476;
}

double f_od(double x) {
        double r11477 = 1;
        double r11478 = x;
        double r11479 = r11477 + r11478;
        double r11480 = sqrt(r11479);
        double r11481 = sqrt(r11478);
        double r11482 = r11480 + r11481;
        double r11483 = r11477 / r11482;
        double r11484 = r11478 + r11477;
        double r11485 = cbrt(r11484);
        double r11486 = fabs(r11485);
        double r11487 = sqrt(r11485);
        double r11488 = r11486 * r11487;
        double r11489 = r11481 * r11488;
        double r11490 = r11483 / r11489;
        return r11490;
}

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 r11491, r11492, r11493, r11494, r11495, r11496, r11497, r11498;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11491, "1", 10, MPFR_RNDN);
        mpfr_init(r11492);
        mpfr_init(r11493);
        mpfr_init(r11494);
        mpfr_init(r11495);
        mpfr_init(r11496);
        mpfr_init(r11497);
        mpfr_init(r11498);
}

double f_im(double x) {
        ;
        mpfr_set_d(r11492, x, MPFR_RNDN);
        mpfr_sqrt(r11493, r11492, MPFR_RNDN);
        mpfr_div(r11494, r11491, r11493, MPFR_RNDN);
        mpfr_add(r11495, r11492, r11491, MPFR_RNDN);
        mpfr_sqrt(r11496, r11495, MPFR_RNDN);
        mpfr_div(r11497, r11491, r11496, MPFR_RNDN);
        mpfr_sub(r11498, r11494, r11497, MPFR_RNDN);
        return mpfr_get_d(r11498, MPFR_RNDN);
}

static mpfr_t r11499, r11500, r11501, r11502, r11503, r11504, r11505, r11506, r11507, r11508, r11509, r11510, r11511, r11512;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11499, "1", 10, MPFR_RNDN);
        mpfr_init(r11500);
        mpfr_init(r11501);
        mpfr_init(r11502);
        mpfr_init(r11503);
        mpfr_init(r11504);
        mpfr_init(r11505);
        mpfr_init(r11506);
        mpfr_init(r11507);
        mpfr_init(r11508);
        mpfr_init(r11509);
        mpfr_init(r11510);
        mpfr_init(r11511);
        mpfr_init(r11512);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11500, x, MPFR_RNDN);
        mpfr_add(r11501, r11499, r11500, MPFR_RNDN);
        mpfr_sqrt(r11502, r11501, MPFR_RNDN);
        mpfr_sqrt(r11503, r11500, MPFR_RNDN);
        mpfr_add(r11504, r11502, r11503, MPFR_RNDN);
        mpfr_div(r11505, r11499, r11504, MPFR_RNDN);
        mpfr_add(r11506, r11500, r11499, MPFR_RNDN);
        mpfr_cbrt(r11507, r11506, MPFR_RNDN);
        mpfr_abs(r11508, r11507, MPFR_RNDN);
        mpfr_sqrt(r11509, r11507, MPFR_RNDN);
        mpfr_mul(r11510, r11508, r11509, MPFR_RNDN);
        mpfr_mul(r11511, r11503, r11510, MPFR_RNDN);
        mpfr_div(r11512, r11505, r11511, MPFR_RNDN);
        return mpfr_get_d(r11512, MPFR_RNDN);
}

static mpfr_t r11513, r11514, r11515, r11516, r11517, r11518, r11519, r11520, r11521, r11522, r11523, r11524, r11525, r11526;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11513, "1", 10, MPFR_RNDN);
        mpfr_init(r11514);
        mpfr_init(r11515);
        mpfr_init(r11516);
        mpfr_init(r11517);
        mpfr_init(r11518);
        mpfr_init(r11519);
        mpfr_init(r11520);
        mpfr_init(r11521);
        mpfr_init(r11522);
        mpfr_init(r11523);
        mpfr_init(r11524);
        mpfr_init(r11525);
        mpfr_init(r11526);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11514, x, MPFR_RNDN);
        mpfr_add(r11515, r11513, r11514, MPFR_RNDN);
        mpfr_sqrt(r11516, r11515, MPFR_RNDN);
        mpfr_sqrt(r11517, r11514, MPFR_RNDN);
        mpfr_add(r11518, r11516, r11517, MPFR_RNDN);
        mpfr_div(r11519, r11513, r11518, MPFR_RNDN);
        mpfr_add(r11520, r11514, r11513, MPFR_RNDN);
        mpfr_cbrt(r11521, r11520, MPFR_RNDN);
        mpfr_abs(r11522, r11521, MPFR_RNDN);
        mpfr_sqrt(r11523, r11521, MPFR_RNDN);
        mpfr_mul(r11524, r11522, r11523, MPFR_RNDN);
        mpfr_mul(r11525, r11517, r11524, MPFR_RNDN);
        mpfr_div(r11526, r11519, r11525, MPFR_RNDN);
        return mpfr_get_d(r11526, MPFR_RNDN);
}

