#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 r9978 = x;
        float r9979 = 1;
        float r9980 = r9978 + r9979;
        float r9981 = cbrt(r9980);
        float r9982 = cbrt(r9978);
        float r9983 = r9981 - r9982;
        return r9983;
}

double f_id(double x) {
        double r9984 = x;
        double r9985 = 1;
        double r9986 = r9984 + r9985;
        double r9987 = cbrt(r9986);
        double r9988 = cbrt(r9984);
        double r9989 = r9987 - r9988;
        return r9989;
}


double f_of(float x) {
        float r9990 = 1;
        float r9991 = x;
        float r9992 = cbrt(r9991);
        float r9993 = r9991 + r9990;
        float r9994 = cbrt(r9993);
        float r9995 = r9994 + r9992;
        float r9996 = r9994 * r9994;
        float r9997 = cbrt(r9996);
        float r9998 = cbrt(r9994);
        float r9999 = r9997 * r9998;
        float r10000 = r9994 * r9999;
        float r10001 = fma(r9992, r9995, r10000);
        float r10002 = r9990 / r10001;
        return r10002;
}

double f_od(double x) {
        double r10003 = 1;
        double r10004 = x;
        double r10005 = cbrt(r10004);
        double r10006 = r10004 + r10003;
        double r10007 = cbrt(r10006);
        double r10008 = r10007 + r10005;
        double r10009 = r10007 * r10007;
        double r10010 = cbrt(r10009);
        double r10011 = cbrt(r10007);
        double r10012 = r10010 * r10011;
        double r10013 = r10007 * r10012;
        double r10014 = fma(r10005, r10008, r10013);
        double r10015 = r10003 / r10014;
        return r10015;
}

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 r10016, r10017, r10018, r10019, r10020, r10021;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10016);
        mpfr_init_set_str(r10017, "1", 10, MPFR_RNDN);
        mpfr_init(r10018);
        mpfr_init(r10019);
        mpfr_init(r10020);
        mpfr_init(r10021);
}

double f_im(double x) {
        mpfr_set_d(r10016, x, MPFR_RNDN);
        ;
        mpfr_add(r10018, r10016, r10017, MPFR_RNDN);
        mpfr_cbrt(r10019, r10018, MPFR_RNDN);
        mpfr_cbrt(r10020, r10016, MPFR_RNDN);
        mpfr_sub(r10021, r10019, r10020, MPFR_RNDN);
        return mpfr_get_d(r10021, MPFR_RNDN);
}

static mpfr_t r10022, r10023, r10024, r10025, r10026, r10027, r10028, r10029, r10030, r10031, r10032, r10033, r10034;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10022, "1", 10, MPFR_RNDN);
        mpfr_init(r10023);
        mpfr_init(r10024);
        mpfr_init(r10025);
        mpfr_init(r10026);
        mpfr_init(r10027);
        mpfr_init(r10028);
        mpfr_init(r10029);
        mpfr_init(r10030);
        mpfr_init(r10031);
        mpfr_init(r10032);
        mpfr_init(r10033);
        mpfr_init(r10034);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10023, x, MPFR_RNDN);
        mpfr_cbrt(r10024, r10023, MPFR_RNDN);
        mpfr_add(r10025, r10023, r10022, MPFR_RNDN);
        mpfr_cbrt(r10026, r10025, MPFR_RNDN);
        mpfr_add(r10027, r10026, r10024, MPFR_RNDN);
        mpfr_mul(r10028, r10026, r10026, MPFR_RNDN);
        mpfr_cbrt(r10029, r10028, MPFR_RNDN);
        mpfr_cbrt(r10030, r10026, MPFR_RNDN);
        mpfr_mul(r10031, r10029, r10030, MPFR_RNDN);
        mpfr_mul(r10032, r10026, r10031, MPFR_RNDN);
        mpfr_fma(r10033, r10024, r10027, r10032, MPFR_RNDN);
        mpfr_div(r10034, r10022, r10033, MPFR_RNDN);
        return mpfr_get_d(r10034, MPFR_RNDN);
}

static mpfr_t r10035, r10036, r10037, r10038, r10039, r10040, r10041, r10042, r10043, r10044, r10045, r10046, r10047;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10035, "1", 10, MPFR_RNDN);
        mpfr_init(r10036);
        mpfr_init(r10037);
        mpfr_init(r10038);
        mpfr_init(r10039);
        mpfr_init(r10040);
        mpfr_init(r10041);
        mpfr_init(r10042);
        mpfr_init(r10043);
        mpfr_init(r10044);
        mpfr_init(r10045);
        mpfr_init(r10046);
        mpfr_init(r10047);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10036, x, MPFR_RNDN);
        mpfr_cbrt(r10037, r10036, MPFR_RNDN);
        mpfr_add(r10038, r10036, r10035, MPFR_RNDN);
        mpfr_cbrt(r10039, r10038, MPFR_RNDN);
        mpfr_add(r10040, r10039, r10037, MPFR_RNDN);
        mpfr_mul(r10041, r10039, r10039, MPFR_RNDN);
        mpfr_cbrt(r10042, r10041, MPFR_RNDN);
        mpfr_cbrt(r10043, r10039, MPFR_RNDN);
        mpfr_mul(r10044, r10042, r10043, MPFR_RNDN);
        mpfr_mul(r10045, r10039, r10044, MPFR_RNDN);
        mpfr_fma(r10046, r10037, r10040, r10045, MPFR_RNDN);
        mpfr_div(r10047, r10035, r10046, MPFR_RNDN);
        return mpfr_get_d(r10047, MPFR_RNDN);
}

