#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 r4874978 = x;
        float r4874979 = 1.0f;
        float r4874980 = r4874978 + r4874979;
        float r4874981 = cbrt(r4874980);
        float r4874982 = cbrt(r4874978);
        float r4874983 = r4874981 - r4874982;
        return r4874983;
}

double f_id(double x) {
        double r4874984 = x;
        double r4874985 = 1.0;
        double r4874986 = r4874984 + r4874985;
        double r4874987 = cbrt(r4874986);
        double r4874988 = cbrt(r4874984);
        double r4874989 = r4874987 - r4874988;
        return r4874989;
}


double f_of(float x) {
        float r4874990 = 1.0f;
        float r4874991 = x;
        float r4874992 = r4874990 + r4874991;
        float r4874993 = cbrt(r4874992);
        float r4874994 = r4874993 * r4874993;
        float r4874995 = cbrt(r4874994);
        float r4874996 = cbrt(r4874993);
        float r4874997 = r4874995 * r4874996;
        float r4874998 = cbrt(r4874997);
        float r4874999 = r4874995 * r4874998;
        float r4875000 = r4874993 * r4874999;
        float r4875001 = cbrt(r4874991);
        float r4875002 = r4875001 + r4874993;
        float r4875003 = r4875002 * r4875001;
        float r4875004 = r4875000 + r4875003;
        float r4875005 = r4874990 / r4875004;
        return r4875005;
}

double f_od(double x) {
        double r4875006 = 1.0;
        double r4875007 = x;
        double r4875008 = r4875006 + r4875007;
        double r4875009 = cbrt(r4875008);
        double r4875010 = r4875009 * r4875009;
        double r4875011 = cbrt(r4875010);
        double r4875012 = cbrt(r4875009);
        double r4875013 = r4875011 * r4875012;
        double r4875014 = cbrt(r4875013);
        double r4875015 = r4875011 * r4875014;
        double r4875016 = r4875009 * r4875015;
        double r4875017 = cbrt(r4875007);
        double r4875018 = r4875017 + r4875009;
        double r4875019 = r4875018 * r4875017;
        double r4875020 = r4875016 + r4875019;
        double r4875021 = r4875006 / r4875020;
        return r4875021;
}

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 r4875022, r4875023, r4875024, r4875025, r4875026, r4875027;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r4875022);
        mpfr_init_set_str(r4875023, "1", 10, MPFR_RNDN);
        mpfr_init(r4875024);
        mpfr_init(r4875025);
        mpfr_init(r4875026);
        mpfr_init(r4875027);
}

double f_im(double x) {
        mpfr_set_d(r4875022, x, MPFR_RNDN);
        ;
        mpfr_add(r4875024, r4875022, r4875023, MPFR_RNDN);
        mpfr_cbrt(r4875025, r4875024, MPFR_RNDN);
        mpfr_cbrt(r4875026, r4875022, MPFR_RNDN);
        mpfr_sub(r4875027, r4875025, r4875026, MPFR_RNDN);
        return mpfr_get_d(r4875027, MPFR_RNDN);
}

static mpfr_t r4875028, r4875029, r4875030, r4875031, r4875032, r4875033, r4875034, r4875035, r4875036, r4875037, r4875038, r4875039, r4875040, r4875041, r4875042, r4875043;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4875028, "1", 10, MPFR_RNDN);
        mpfr_init(r4875029);
        mpfr_init(r4875030);
        mpfr_init(r4875031);
        mpfr_init(r4875032);
        mpfr_init(r4875033);
        mpfr_init(r4875034);
        mpfr_init(r4875035);
        mpfr_init(r4875036);
        mpfr_init(r4875037);
        mpfr_init(r4875038);
        mpfr_init(r4875039);
        mpfr_init(r4875040);
        mpfr_init(r4875041);
        mpfr_init(r4875042);
        mpfr_init(r4875043);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4875029, x, MPFR_RNDN);
        mpfr_add(r4875030, r4875028, r4875029, MPFR_RNDN);
        mpfr_cbrt(r4875031, r4875030, MPFR_RNDN);
        mpfr_mul(r4875032, r4875031, r4875031, MPFR_RNDN);
        mpfr_cbrt(r4875033, r4875032, MPFR_RNDN);
        mpfr_cbrt(r4875034, r4875031, MPFR_RNDN);
        mpfr_mul(r4875035, r4875033, r4875034, MPFR_RNDN);
        mpfr_cbrt(r4875036, r4875035, MPFR_RNDN);
        mpfr_mul(r4875037, r4875033, r4875036, MPFR_RNDN);
        mpfr_mul(r4875038, r4875031, r4875037, MPFR_RNDN);
        mpfr_cbrt(r4875039, r4875029, MPFR_RNDN);
        mpfr_add(r4875040, r4875039, r4875031, MPFR_RNDN);
        mpfr_mul(r4875041, r4875040, r4875039, MPFR_RNDN);
        mpfr_add(r4875042, r4875038, r4875041, MPFR_RNDN);
        mpfr_div(r4875043, r4875028, r4875042, MPFR_RNDN);
        return mpfr_get_d(r4875043, MPFR_RNDN);
}

static mpfr_t r4875044, r4875045, r4875046, r4875047, r4875048, r4875049, r4875050, r4875051, r4875052, r4875053, r4875054, r4875055, r4875056, r4875057, r4875058, r4875059;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r4875044, "1", 10, MPFR_RNDN);
        mpfr_init(r4875045);
        mpfr_init(r4875046);
        mpfr_init(r4875047);
        mpfr_init(r4875048);
        mpfr_init(r4875049);
        mpfr_init(r4875050);
        mpfr_init(r4875051);
        mpfr_init(r4875052);
        mpfr_init(r4875053);
        mpfr_init(r4875054);
        mpfr_init(r4875055);
        mpfr_init(r4875056);
        mpfr_init(r4875057);
        mpfr_init(r4875058);
        mpfr_init(r4875059);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4875045, x, MPFR_RNDN);
        mpfr_add(r4875046, r4875044, r4875045, MPFR_RNDN);
        mpfr_cbrt(r4875047, r4875046, MPFR_RNDN);
        mpfr_mul(r4875048, r4875047, r4875047, MPFR_RNDN);
        mpfr_cbrt(r4875049, r4875048, MPFR_RNDN);
        mpfr_cbrt(r4875050, r4875047, MPFR_RNDN);
        mpfr_mul(r4875051, r4875049, r4875050, MPFR_RNDN);
        mpfr_cbrt(r4875052, r4875051, MPFR_RNDN);
        mpfr_mul(r4875053, r4875049, r4875052, MPFR_RNDN);
        mpfr_mul(r4875054, r4875047, r4875053, MPFR_RNDN);
        mpfr_cbrt(r4875055, r4875045, MPFR_RNDN);
        mpfr_add(r4875056, r4875055, r4875047, MPFR_RNDN);
        mpfr_mul(r4875057, r4875056, r4875055, MPFR_RNDN);
        mpfr_add(r4875058, r4875054, r4875057, MPFR_RNDN);
        mpfr_div(r4875059, r4875044, r4875058, MPFR_RNDN);
        return mpfr_get_d(r4875059, MPFR_RNDN);
}

