#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 r37107 = x;
        float r37108 = 1;
        float r37109 = r37107 + r37108;
        float r37110 = cbrt(r37109);
        float r37111 = cbrt(r37107);
        float r37112 = r37110 - r37111;
        return r37112;
}

double f_id(double x) {
        double r37113 = x;
        double r37114 = 1;
        double r37115 = r37113 + r37114;
        double r37116 = cbrt(r37115);
        double r37117 = cbrt(r37113);
        double r37118 = r37116 - r37117;
        return r37118;
}


double f_of(float x) {
        float r37119 = 1;
        float r37120 = x;
        float r37121 = r37119 + r37120;
        float r37122 = cbrt(r37121);
        float r37123 = r37122 * r37122;
        float r37124 = cbrt(r37120);
        float r37125 = cbrt(r37123);
        float r37126 = cbrt(r37122);
        float r37127 = r37125 * r37126;
        float r37128 = r37124 + r37127;
        float r37129 = r37128 * r37124;
        float r37130 = r37123 + r37129;
        float r37131 = r37119 / r37130;
        return r37131;
}

double f_od(double x) {
        double r37132 = 1;
        double r37133 = x;
        double r37134 = r37132 + r37133;
        double r37135 = cbrt(r37134);
        double r37136 = r37135 * r37135;
        double r37137 = cbrt(r37133);
        double r37138 = cbrt(r37136);
        double r37139 = cbrt(r37135);
        double r37140 = r37138 * r37139;
        double r37141 = r37137 + r37140;
        double r37142 = r37141 * r37137;
        double r37143 = r37136 + r37142;
        double r37144 = r37132 / r37143;
        return r37144;
}

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 r37145, r37146, r37147, r37148, r37149, r37150;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r37145);
        mpfr_init_set_str(r37146, "1", 10, MPFR_RNDN);
        mpfr_init(r37147);
        mpfr_init(r37148);
        mpfr_init(r37149);
        mpfr_init(r37150);
}

double f_im(double x) {
        mpfr_set_d(r37145, x, MPFR_RNDN);
        ;
        mpfr_add(r37147, r37145, r37146, MPFR_RNDN);
        mpfr_cbrt(r37148, r37147, MPFR_RNDN);
        mpfr_cbrt(r37149, r37145, MPFR_RNDN);
        mpfr_sub(r37150, r37148, r37149, MPFR_RNDN);
        return mpfr_get_d(r37150, MPFR_RNDN);
}

static mpfr_t r37151, r37152, r37153, r37154, r37155, r37156, r37157, r37158, r37159, r37160, r37161, r37162, r37163;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37151, "1", 10, MPFR_RNDN);
        mpfr_init(r37152);
        mpfr_init(r37153);
        mpfr_init(r37154);
        mpfr_init(r37155);
        mpfr_init(r37156);
        mpfr_init(r37157);
        mpfr_init(r37158);
        mpfr_init(r37159);
        mpfr_init(r37160);
        mpfr_init(r37161);
        mpfr_init(r37162);
        mpfr_init(r37163);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r37152, x, MPFR_RNDN);
        mpfr_add(r37153, r37151, r37152, MPFR_RNDN);
        mpfr_cbrt(r37154, r37153, MPFR_RNDN);
        mpfr_mul(r37155, r37154, r37154, MPFR_RNDN);
        mpfr_cbrt(r37156, r37152, MPFR_RNDN);
        mpfr_cbrt(r37157, r37155, MPFR_RNDN);
        mpfr_cbrt(r37158, r37154, MPFR_RNDN);
        mpfr_mul(r37159, r37157, r37158, MPFR_RNDN);
        mpfr_add(r37160, r37156, r37159, MPFR_RNDN);
        mpfr_mul(r37161, r37160, r37156, MPFR_RNDN);
        mpfr_add(r37162, r37155, r37161, MPFR_RNDN);
        mpfr_div(r37163, r37151, r37162, MPFR_RNDN);
        return mpfr_get_d(r37163, MPFR_RNDN);
}

static mpfr_t r37164, r37165, r37166, r37167, r37168, r37169, r37170, r37171, r37172, r37173, r37174, r37175, r37176;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37164, "1", 10, MPFR_RNDN);
        mpfr_init(r37165);
        mpfr_init(r37166);
        mpfr_init(r37167);
        mpfr_init(r37168);
        mpfr_init(r37169);
        mpfr_init(r37170);
        mpfr_init(r37171);
        mpfr_init(r37172);
        mpfr_init(r37173);
        mpfr_init(r37174);
        mpfr_init(r37175);
        mpfr_init(r37176);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r37165, x, MPFR_RNDN);
        mpfr_add(r37166, r37164, r37165, MPFR_RNDN);
        mpfr_cbrt(r37167, r37166, MPFR_RNDN);
        mpfr_mul(r37168, r37167, r37167, MPFR_RNDN);
        mpfr_cbrt(r37169, r37165, MPFR_RNDN);
        mpfr_cbrt(r37170, r37168, MPFR_RNDN);
        mpfr_cbrt(r37171, r37167, MPFR_RNDN);
        mpfr_mul(r37172, r37170, r37171, MPFR_RNDN);
        mpfr_add(r37173, r37169, r37172, MPFR_RNDN);
        mpfr_mul(r37174, r37173, r37169, MPFR_RNDN);
        mpfr_add(r37175, r37168, r37174, MPFR_RNDN);
        mpfr_div(r37176, r37164, r37175, MPFR_RNDN);
        return mpfr_get_d(r37176, MPFR_RNDN);
}

