#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 r58959 = 1;
        float r58960 = x;
        float r58961 = sqrt(r58960);
        float r58962 = r58959 / r58961;
        float r58963 = r58960 + r58959;
        float r58964 = sqrt(r58963);
        float r58965 = r58959 / r58964;
        float r58966 = r58962 - r58965;
        return r58966;
}

double f_id(double x) {
        double r58967 = 1;
        double r58968 = x;
        double r58969 = sqrt(r58968);
        double r58970 = r58967 / r58969;
        double r58971 = r58968 + r58967;
        double r58972 = sqrt(r58971);
        double r58973 = r58967 / r58972;
        double r58974 = r58970 - r58973;
        return r58974;
}


double f_of(float x) {
        float r58975 = 1;
        float r58976 = x;
        float r58977 = r58976 + r58975;
        float r58978 = sqrt(r58977);
        float r58979 = sqrt(r58976);
        float r58980 = r58978 + r58979;
        float r58981 = r58975 / r58980;
        float r58982 = cbrt(r58977);
        float r58983 = fabs(r58982);
        float r58984 = r58983 * r58979;
        float r58985 = sqrt(r58982);
        float r58986 = r58984 * r58985;
        float r58987 = r58981 / r58986;
        return r58987;
}

double f_od(double x) {
        double r58988 = 1;
        double r58989 = x;
        double r58990 = r58989 + r58988;
        double r58991 = sqrt(r58990);
        double r58992 = sqrt(r58989);
        double r58993 = r58991 + r58992;
        double r58994 = r58988 / r58993;
        double r58995 = cbrt(r58990);
        double r58996 = fabs(r58995);
        double r58997 = r58996 * r58992;
        double r58998 = sqrt(r58995);
        double r58999 = r58997 * r58998;
        double r59000 = r58994 / r58999;
        return r59000;
}

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 r59001, r59002, r59003, r59004, r59005, r59006, r59007, r59008;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r59001, "1", 10, MPFR_RNDN);
        mpfr_init(r59002);
        mpfr_init(r59003);
        mpfr_init(r59004);
        mpfr_init(r59005);
        mpfr_init(r59006);
        mpfr_init(r59007);
        mpfr_init(r59008);
}

double f_im(double x) {
        ;
        mpfr_set_d(r59002, x, MPFR_RNDN);
        mpfr_sqrt(r59003, r59002, MPFR_RNDN);
        mpfr_div(r59004, r59001, r59003, MPFR_RNDN);
        mpfr_add(r59005, r59002, r59001, MPFR_RNDN);
        mpfr_sqrt(r59006, r59005, MPFR_RNDN);
        mpfr_div(r59007, r59001, r59006, MPFR_RNDN);
        mpfr_sub(r59008, r59004, r59007, MPFR_RNDN);
        return mpfr_get_d(r59008, MPFR_RNDN);
}

static mpfr_t r59009, r59010, r59011, r59012, r59013, r59014, r59015, r59016, r59017, r59018, r59019, r59020, r59021;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r59009, "1", 10, MPFR_RNDN);
        mpfr_init(r59010);
        mpfr_init(r59011);
        mpfr_init(r59012);
        mpfr_init(r59013);
        mpfr_init(r59014);
        mpfr_init(r59015);
        mpfr_init(r59016);
        mpfr_init(r59017);
        mpfr_init(r59018);
        mpfr_init(r59019);
        mpfr_init(r59020);
        mpfr_init(r59021);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r59010, x, MPFR_RNDN);
        mpfr_add(r59011, r59010, r59009, MPFR_RNDN);
        mpfr_sqrt(r59012, r59011, MPFR_RNDN);
        mpfr_sqrt(r59013, r59010, MPFR_RNDN);
        mpfr_add(r59014, r59012, r59013, MPFR_RNDN);
        mpfr_div(r59015, r59009, r59014, MPFR_RNDN);
        mpfr_cbrt(r59016, r59011, MPFR_RNDN);
        mpfr_abs(r59017, r59016, MPFR_RNDN);
        mpfr_mul(r59018, r59017, r59013, MPFR_RNDN);
        mpfr_sqrt(r59019, r59016, MPFR_RNDN);
        mpfr_mul(r59020, r59018, r59019, MPFR_RNDN);
        mpfr_div(r59021, r59015, r59020, MPFR_RNDN);
        return mpfr_get_d(r59021, MPFR_RNDN);
}

static mpfr_t r59022, r59023, r59024, r59025, r59026, r59027, r59028, r59029, r59030, r59031, r59032, r59033, r59034;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r59022, "1", 10, MPFR_RNDN);
        mpfr_init(r59023);
        mpfr_init(r59024);
        mpfr_init(r59025);
        mpfr_init(r59026);
        mpfr_init(r59027);
        mpfr_init(r59028);
        mpfr_init(r59029);
        mpfr_init(r59030);
        mpfr_init(r59031);
        mpfr_init(r59032);
        mpfr_init(r59033);
        mpfr_init(r59034);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r59023, x, MPFR_RNDN);
        mpfr_add(r59024, r59023, r59022, MPFR_RNDN);
        mpfr_sqrt(r59025, r59024, MPFR_RNDN);
        mpfr_sqrt(r59026, r59023, MPFR_RNDN);
        mpfr_add(r59027, r59025, r59026, MPFR_RNDN);
        mpfr_div(r59028, r59022, r59027, MPFR_RNDN);
        mpfr_cbrt(r59029, r59024, MPFR_RNDN);
        mpfr_abs(r59030, r59029, MPFR_RNDN);
        mpfr_mul(r59031, r59030, r59026, MPFR_RNDN);
        mpfr_sqrt(r59032, r59029, MPFR_RNDN);
        mpfr_mul(r59033, r59031, r59032, MPFR_RNDN);
        mpfr_div(r59034, r59028, r59033, MPFR_RNDN);
        return mpfr_get_d(r59034, MPFR_RNDN);
}

