#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 r11440 = 1;
        float r11441 = x;
        float r11442 = sqrt(r11441);
        float r11443 = r11440 / r11442;
        float r11444 = r11441 + r11440;
        float r11445 = sqrt(r11444);
        float r11446 = r11440 / r11445;
        float r11447 = r11443 - r11446;
        return r11447;
}

double f_id(double x) {
        double r11448 = 1;
        double r11449 = x;
        double r11450 = sqrt(r11449);
        double r11451 = r11448 / r11450;
        double r11452 = r11449 + r11448;
        double r11453 = sqrt(r11452);
        double r11454 = r11448 / r11453;
        double r11455 = r11451 - r11454;
        return r11455;
}


double f_of(float x) {
        float r11456 = 1;
        float r11457 = x;
        float r11458 = r11456 + r11457;
        float r11459 = sqrt(r11458);
        float r11460 = sqrt(r11457);
        float r11461 = r11459 + r11460;
        float r11462 = r11456 / r11461;
        float r11463 = r11457 + r11456;
        float r11464 = cbrt(r11463);
        float r11465 = fabs(r11464);
        float r11466 = sqrt(r11464);
        float r11467 = r11465 * r11466;
        float r11468 = r11460 * r11467;
        float r11469 = r11462 / r11468;
        return r11469;
}

double f_od(double x) {
        double r11470 = 1;
        double r11471 = x;
        double r11472 = r11470 + r11471;
        double r11473 = sqrt(r11472);
        double r11474 = sqrt(r11471);
        double r11475 = r11473 + r11474;
        double r11476 = r11470 / r11475;
        double r11477 = r11471 + r11470;
        double r11478 = cbrt(r11477);
        double r11479 = fabs(r11478);
        double r11480 = sqrt(r11478);
        double r11481 = r11479 * r11480;
        double r11482 = r11474 * r11481;
        double r11483 = r11476 / r11482;
        return r11483;
}

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 r11484, r11485, r11486, r11487, r11488, r11489, r11490, r11491;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11484, "1", 10, MPFR_RNDN);
        mpfr_init(r11485);
        mpfr_init(r11486);
        mpfr_init(r11487);
        mpfr_init(r11488);
        mpfr_init(r11489);
        mpfr_init(r11490);
        mpfr_init(r11491);
}

double f_im(double x) {
        ;
        mpfr_set_d(r11485, x, MPFR_RNDN);
        mpfr_sqrt(r11486, r11485, MPFR_RNDN);
        mpfr_div(r11487, r11484, r11486, MPFR_RNDN);
        mpfr_add(r11488, r11485, r11484, MPFR_RNDN);
        mpfr_sqrt(r11489, r11488, MPFR_RNDN);
        mpfr_div(r11490, r11484, r11489, MPFR_RNDN);
        mpfr_sub(r11491, r11487, r11490, MPFR_RNDN);
        return mpfr_get_d(r11491, MPFR_RNDN);
}

static mpfr_t r11492, r11493, r11494, r11495, r11496, r11497, r11498, r11499, r11500, r11501, r11502, r11503, r11504, r11505;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11492, "1", 10, MPFR_RNDN);
        mpfr_init(r11493);
        mpfr_init(r11494);
        mpfr_init(r11495);
        mpfr_init(r11496);
        mpfr_init(r11497);
        mpfr_init(r11498);
        mpfr_init(r11499);
        mpfr_init(r11500);
        mpfr_init(r11501);
        mpfr_init(r11502);
        mpfr_init(r11503);
        mpfr_init(r11504);
        mpfr_init(r11505);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11493, x, MPFR_RNDN);
        mpfr_add(r11494, r11492, r11493, MPFR_RNDN);
        mpfr_sqrt(r11495, r11494, MPFR_RNDN);
        mpfr_sqrt(r11496, r11493, MPFR_RNDN);
        mpfr_add(r11497, r11495, r11496, MPFR_RNDN);
        mpfr_div(r11498, r11492, r11497, MPFR_RNDN);
        mpfr_add(r11499, r11493, r11492, MPFR_RNDN);
        mpfr_cbrt(r11500, r11499, MPFR_RNDN);
        mpfr_abs(r11501, r11500, MPFR_RNDN);
        mpfr_sqrt(r11502, r11500, MPFR_RNDN);
        mpfr_mul(r11503, r11501, r11502, MPFR_RNDN);
        mpfr_mul(r11504, r11496, r11503, MPFR_RNDN);
        mpfr_div(r11505, r11498, r11504, MPFR_RNDN);
        return mpfr_get_d(r11505, MPFR_RNDN);
}

static mpfr_t r11506, r11507, r11508, r11509, r11510, r11511, r11512, r11513, r11514, r11515, r11516, r11517, r11518, r11519;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r11506, "1", 10, MPFR_RNDN);
        mpfr_init(r11507);
        mpfr_init(r11508);
        mpfr_init(r11509);
        mpfr_init(r11510);
        mpfr_init(r11511);
        mpfr_init(r11512);
        mpfr_init(r11513);
        mpfr_init(r11514);
        mpfr_init(r11515);
        mpfr_init(r11516);
        mpfr_init(r11517);
        mpfr_init(r11518);
        mpfr_init(r11519);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11507, x, MPFR_RNDN);
        mpfr_add(r11508, r11506, r11507, MPFR_RNDN);
        mpfr_sqrt(r11509, r11508, MPFR_RNDN);
        mpfr_sqrt(r11510, r11507, MPFR_RNDN);
        mpfr_add(r11511, r11509, r11510, MPFR_RNDN);
        mpfr_div(r11512, r11506, r11511, MPFR_RNDN);
        mpfr_add(r11513, r11507, r11506, MPFR_RNDN);
        mpfr_cbrt(r11514, r11513, MPFR_RNDN);
        mpfr_abs(r11515, r11514, MPFR_RNDN);
        mpfr_sqrt(r11516, r11514, MPFR_RNDN);
        mpfr_mul(r11517, r11515, r11516, MPFR_RNDN);
        mpfr_mul(r11518, r11510, r11517, MPFR_RNDN);
        mpfr_div(r11519, r11512, r11518, MPFR_RNDN);
        return mpfr_get_d(r11519, MPFR_RNDN);
}

