#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 r6216437 = 1;
        float r6216438 = x;
        float r6216439 = sqrt(r6216438);
        float r6216440 = r6216437 / r6216439;
        float r6216441 = r6216438 + r6216437;
        float r6216442 = sqrt(r6216441);
        float r6216443 = r6216437 / r6216442;
        float r6216444 = r6216440 - r6216443;
        return r6216444;
}

double f_id(double x) {
        double r6216445 = 1;
        double r6216446 = x;
        double r6216447 = sqrt(r6216446);
        double r6216448 = r6216445 / r6216447;
        double r6216449 = r6216446 + r6216445;
        double r6216450 = sqrt(r6216449);
        double r6216451 = r6216445 / r6216450;
        double r6216452 = r6216448 - r6216451;
        return r6216452;
}


double f_of(float x) {
        float r6216453 = 1;
        float r6216454 = x;
        float r6216455 = r6216454 + r6216453;
        float r6216456 = sqrt(r6216455);
        float r6216457 = sqrt(r6216454);
        float r6216458 = r6216456 + r6216457;
        float r6216459 = r6216453 / r6216458;
        float r6216460 = r6216458 * r6216458;
        float r6216461 = r6216459 / r6216460;
        float r6216462 = cbrt(r6216461);
        float r6216463 = r6216456 * r6216457;
        float r6216464 = r6216462 / r6216463;
        return r6216464;
}

double f_od(double x) {
        double r6216465 = 1;
        double r6216466 = x;
        double r6216467 = r6216466 + r6216465;
        double r6216468 = sqrt(r6216467);
        double r6216469 = sqrt(r6216466);
        double r6216470 = r6216468 + r6216469;
        double r6216471 = r6216465 / r6216470;
        double r6216472 = r6216470 * r6216470;
        double r6216473 = r6216471 / r6216472;
        double r6216474 = cbrt(r6216473);
        double r6216475 = r6216468 * r6216469;
        double r6216476 = r6216474 / r6216475;
        return r6216476;
}

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 r6216477, r6216478, r6216479, r6216480, r6216481, r6216482, r6216483, r6216484;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r6216477, "1", 10, MPFR_RNDN);
        mpfr_init(r6216478);
        mpfr_init(r6216479);
        mpfr_init(r6216480);
        mpfr_init(r6216481);
        mpfr_init(r6216482);
        mpfr_init(r6216483);
        mpfr_init(r6216484);
}

double f_im(double x) {
        ;
        mpfr_set_d(r6216478, x, MPFR_RNDN);
        mpfr_sqrt(r6216479, r6216478, MPFR_RNDN);
        mpfr_div(r6216480, r6216477, r6216479, MPFR_RNDN);
        mpfr_add(r6216481, r6216478, r6216477, MPFR_RNDN);
        mpfr_sqrt(r6216482, r6216481, MPFR_RNDN);
        mpfr_div(r6216483, r6216477, r6216482, MPFR_RNDN);
        mpfr_sub(r6216484, r6216480, r6216483, MPFR_RNDN);
        return mpfr_get_d(r6216484, MPFR_RNDN);
}

static mpfr_t r6216485, r6216486, r6216487, r6216488, r6216489, r6216490, r6216491, r6216492, r6216493, r6216494, r6216495, r6216496;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r6216485, "1", 10, MPFR_RNDN);
        mpfr_init(r6216486);
        mpfr_init(r6216487);
        mpfr_init(r6216488);
        mpfr_init(r6216489);
        mpfr_init(r6216490);
        mpfr_init(r6216491);
        mpfr_init(r6216492);
        mpfr_init(r6216493);
        mpfr_init(r6216494);
        mpfr_init(r6216495);
        mpfr_init(r6216496);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r6216486, x, MPFR_RNDN);
        mpfr_add(r6216487, r6216486, r6216485, MPFR_RNDN);
        mpfr_sqrt(r6216488, r6216487, MPFR_RNDN);
        mpfr_sqrt(r6216489, r6216486, MPFR_RNDN);
        mpfr_add(r6216490, r6216488, r6216489, MPFR_RNDN);
        mpfr_div(r6216491, r6216485, r6216490, MPFR_RNDN);
        mpfr_mul(r6216492, r6216490, r6216490, MPFR_RNDN);
        mpfr_div(r6216493, r6216491, r6216492, MPFR_RNDN);
        mpfr_cbrt(r6216494, r6216493, MPFR_RNDN);
        mpfr_mul(r6216495, r6216488, r6216489, MPFR_RNDN);
        mpfr_div(r6216496, r6216494, r6216495, MPFR_RNDN);
        return mpfr_get_d(r6216496, MPFR_RNDN);
}

static mpfr_t r6216497, r6216498, r6216499, r6216500, r6216501, r6216502, r6216503, r6216504, r6216505, r6216506, r6216507, r6216508;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r6216497, "1", 10, MPFR_RNDN);
        mpfr_init(r6216498);
        mpfr_init(r6216499);
        mpfr_init(r6216500);
        mpfr_init(r6216501);
        mpfr_init(r6216502);
        mpfr_init(r6216503);
        mpfr_init(r6216504);
        mpfr_init(r6216505);
        mpfr_init(r6216506);
        mpfr_init(r6216507);
        mpfr_init(r6216508);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r6216498, x, MPFR_RNDN);
        mpfr_add(r6216499, r6216498, r6216497, MPFR_RNDN);
        mpfr_sqrt(r6216500, r6216499, MPFR_RNDN);
        mpfr_sqrt(r6216501, r6216498, MPFR_RNDN);
        mpfr_add(r6216502, r6216500, r6216501, MPFR_RNDN);
        mpfr_div(r6216503, r6216497, r6216502, MPFR_RNDN);
        mpfr_mul(r6216504, r6216502, r6216502, MPFR_RNDN);
        mpfr_div(r6216505, r6216503, r6216504, MPFR_RNDN);
        mpfr_cbrt(r6216506, r6216505, MPFR_RNDN);
        mpfr_mul(r6216507, r6216500, r6216501, MPFR_RNDN);
        mpfr_div(r6216508, r6216506, r6216507, MPFR_RNDN);
        return mpfr_get_d(r6216508, MPFR_RNDN);
}

