#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 r9958 = x;
        float r9959 = 1;
        float r9960 = r9958 + r9959;
        float r9961 = cbrt(r9960);
        float r9962 = cbrt(r9958);
        float r9963 = r9961 - r9962;
        return r9963;
}

double f_id(double x) {
        double r9964 = x;
        double r9965 = 1;
        double r9966 = r9964 + r9965;
        double r9967 = cbrt(r9966);
        double r9968 = cbrt(r9964);
        double r9969 = r9967 - r9968;
        return r9969;
}


double f_of(float x) {
        float r9970 = 1;
        float r9971 = x;
        float r9972 = cbrt(r9971);
        float r9973 = r9971 + r9970;
        float r9974 = cbrt(r9973);
        float r9975 = cbrt(r9972);
        float r9976 = r9975 * r9975;
        float r9977 = r9976 * r9975;
        float r9978 = r9974 + r9977;
        float r9979 = r9974 * r9974;
        float r9980 = fma(r9972, r9978, r9979);
        float r9981 = r9970 / r9980;
        return r9981;
}

double f_od(double x) {
        double r9982 = 1;
        double r9983 = x;
        double r9984 = cbrt(r9983);
        double r9985 = r9983 + r9982;
        double r9986 = cbrt(r9985);
        double r9987 = cbrt(r9984);
        double r9988 = r9987 * r9987;
        double r9989 = r9988 * r9987;
        double r9990 = r9986 + r9989;
        double r9991 = r9986 * r9986;
        double r9992 = fma(r9984, r9990, r9991);
        double r9993 = r9982 / r9992;
        return r9993;
}

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 r9994, r9995, r9996, r9997, r9998, r9999;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9994);
        mpfr_init_set_str(r9995, "1", 10, MPFR_RNDN);
        mpfr_init(r9996);
        mpfr_init(r9997);
        mpfr_init(r9998);
        mpfr_init(r9999);
}

double f_im(double x) {
        mpfr_set_d(r9994, x, MPFR_RNDN);
        ;
        mpfr_add(r9996, r9994, r9995, MPFR_RNDN);
        mpfr_cbrt(r9997, r9996, MPFR_RNDN);
        mpfr_cbrt(r9998, r9994, MPFR_RNDN);
        mpfr_sub(r9999, r9997, r9998, MPFR_RNDN);
        return mpfr_get_d(r9999, MPFR_RNDN);
}

static mpfr_t r10000, r10001, r10002, r10003, r10004, r10005, r10006, r10007, r10008, r10009, r10010, r10011;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10000, "1", 10, MPFR_RNDN);
        mpfr_init(r10001);
        mpfr_init(r10002);
        mpfr_init(r10003);
        mpfr_init(r10004);
        mpfr_init(r10005);
        mpfr_init(r10006);
        mpfr_init(r10007);
        mpfr_init(r10008);
        mpfr_init(r10009);
        mpfr_init(r10010);
        mpfr_init(r10011);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10001, x, MPFR_RNDN);
        mpfr_cbrt(r10002, r10001, MPFR_RNDN);
        mpfr_add(r10003, r10001, r10000, MPFR_RNDN);
        mpfr_cbrt(r10004, r10003, MPFR_RNDN);
        mpfr_cbrt(r10005, r10002, MPFR_RNDN);
        mpfr_mul(r10006, r10005, r10005, MPFR_RNDN);
        mpfr_mul(r10007, r10006, r10005, MPFR_RNDN);
        mpfr_add(r10008, r10004, r10007, MPFR_RNDN);
        mpfr_mul(r10009, r10004, r10004, MPFR_RNDN);
        mpfr_fma(r10010, r10002, r10008, r10009, MPFR_RNDN);
        mpfr_div(r10011, r10000, r10010, MPFR_RNDN);
        return mpfr_get_d(r10011, MPFR_RNDN);
}

static mpfr_t r10012, r10013, r10014, r10015, r10016, r10017, r10018, r10019, r10020, r10021, r10022, r10023;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10012, "1", 10, MPFR_RNDN);
        mpfr_init(r10013);
        mpfr_init(r10014);
        mpfr_init(r10015);
        mpfr_init(r10016);
        mpfr_init(r10017);
        mpfr_init(r10018);
        mpfr_init(r10019);
        mpfr_init(r10020);
        mpfr_init(r10021);
        mpfr_init(r10022);
        mpfr_init(r10023);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10013, x, MPFR_RNDN);
        mpfr_cbrt(r10014, r10013, MPFR_RNDN);
        mpfr_add(r10015, r10013, r10012, MPFR_RNDN);
        mpfr_cbrt(r10016, r10015, MPFR_RNDN);
        mpfr_cbrt(r10017, r10014, MPFR_RNDN);
        mpfr_mul(r10018, r10017, r10017, MPFR_RNDN);
        mpfr_mul(r10019, r10018, r10017, MPFR_RNDN);
        mpfr_add(r10020, r10016, r10019, MPFR_RNDN);
        mpfr_mul(r10021, r10016, r10016, MPFR_RNDN);
        mpfr_fma(r10022, r10014, r10020, r10021, MPFR_RNDN);
        mpfr_div(r10023, r10012, r10022, MPFR_RNDN);
        return mpfr_get_d(r10023, MPFR_RNDN);
}

