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

char *name = "2cbrt (problem 3.3.4)";

double f_if(float x) {
        float r4416230 = x;
        float r4416231 = 1;
        float r4416232 = r4416230 + r4416231;
        float r4416233 = cbrt(r4416232);
        float r4416234 = cbrt(r4416230);
        float r4416235 = r4416233 - r4416234;
        return r4416235;
}

double f_id(double x) {
        double r4416236 = x;
        double r4416237 = 1;
        double r4416238 = r4416236 + r4416237;
        double r4416239 = cbrt(r4416238);
        double r4416240 = cbrt(r4416236);
        double r4416241 = r4416239 - r4416240;
        return r4416241;
}


double f_of(float x) {
        float r4416242 = 1;
        float r4416243 = x;
        float r4416244 = r4416243 + r4416242;
        float r4416245 = cbrt(r4416244);
        float r4416246 = cbrt(r4416243);
        float r4416247 = r4416246 + r4416245;
        float r4416248 = r4416245 * r4416247;
        float r4416249 = r4416246 * r4416246;
        float r4416250 = r4416248 + r4416249;
        float r4416251 = r4416242 / r4416250;
        return r4416251;
}

double f_od(double x) {
        double r4416252 = 1;
        double r4416253 = x;
        double r4416254 = r4416253 + r4416252;
        double r4416255 = cbrt(r4416254);
        double r4416256 = cbrt(r4416253);
        double r4416257 = r4416256 + r4416255;
        double r4416258 = r4416255 * r4416257;
        double r4416259 = r4416256 * r4416256;
        double r4416260 = r4416258 + r4416259;
        double r4416261 = r4416252 / r4416260;
        return r4416261;
}

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 r4416262, r4416263, r4416264, r4416265, r4416266, r4416267;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4416262);
        mpfr_init_set_str(r4416263, "1", 10, MPFR_RNDN);
        mpfr_init(r4416264);
        mpfr_init(r4416265);
        mpfr_init(r4416266);
        mpfr_init(r4416267);
}

double f_im(double x) {
        mpfr_set_d(r4416262, x, MPFR_RNDN);
        ;
        mpfr_add(r4416264, r4416262, r4416263, MPFR_RNDN);
        mpfr_cbrt(r4416265, r4416264, MPFR_RNDN);
        mpfr_cbrt(r4416266, r4416262, MPFR_RNDN);
        mpfr_sub(r4416267, r4416265, r4416266, MPFR_RNDN);
        return mpfr_get_d(r4416267, MPFR_RNDN);
}

static mpfr_t r4416268, r4416269, r4416270, r4416271, r4416272, r4416273, r4416274, r4416275, r4416276, r4416277;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4416268, "1", 10, MPFR_RNDN);
        mpfr_init(r4416269);
        mpfr_init(r4416270);
        mpfr_init(r4416271);
        mpfr_init(r4416272);
        mpfr_init(r4416273);
        mpfr_init(r4416274);
        mpfr_init(r4416275);
        mpfr_init(r4416276);
        mpfr_init(r4416277);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4416269, x, MPFR_RNDN);
        mpfr_add(r4416270, r4416269, r4416268, MPFR_RNDN);
        mpfr_cbrt(r4416271, r4416270, MPFR_RNDN);
        mpfr_cbrt(r4416272, r4416269, MPFR_RNDN);
        mpfr_add(r4416273, r4416272, r4416271, MPFR_RNDN);
        mpfr_mul(r4416274, r4416271, r4416273, MPFR_RNDN);
        mpfr_mul(r4416275, r4416272, r4416272, MPFR_RNDN);
        mpfr_add(r4416276, r4416274, r4416275, MPFR_RNDN);
        mpfr_div(r4416277, r4416268, r4416276, MPFR_RNDN);
        return mpfr_get_d(r4416277, MPFR_RNDN);
}

static mpfr_t r4416278, r4416279, r4416280, r4416281, r4416282, r4416283, r4416284, r4416285, r4416286, r4416287;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4416278, "1", 10, MPFR_RNDN);
        mpfr_init(r4416279);
        mpfr_init(r4416280);
        mpfr_init(r4416281);
        mpfr_init(r4416282);
        mpfr_init(r4416283);
        mpfr_init(r4416284);
        mpfr_init(r4416285);
        mpfr_init(r4416286);
        mpfr_init(r4416287);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4416279, x, MPFR_RNDN);
        mpfr_add(r4416280, r4416279, r4416278, MPFR_RNDN);
        mpfr_cbrt(r4416281, r4416280, MPFR_RNDN);
        mpfr_cbrt(r4416282, r4416279, MPFR_RNDN);
        mpfr_add(r4416283, r4416282, r4416281, MPFR_RNDN);
        mpfr_mul(r4416284, r4416281, r4416283, MPFR_RNDN);
        mpfr_mul(r4416285, r4416282, r4416282, MPFR_RNDN);
        mpfr_add(r4416286, r4416284, r4416285, MPFR_RNDN);
        mpfr_div(r4416287, r4416278, r4416286, MPFR_RNDN);
        return mpfr_get_d(r4416287, MPFR_RNDN);
}

