#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 r9766 = x;
        float r9767 = 1;
        float r9768 = r9766 + r9767;
        float r9769 = cbrt(r9768);
        float r9770 = cbrt(r9766);
        float r9771 = r9769 - r9770;
        return r9771;
}

double f_id(double x) {
        double r9772 = x;
        double r9773 = 1;
        double r9774 = r9772 + r9773;
        double r9775 = cbrt(r9774);
        double r9776 = cbrt(r9772);
        double r9777 = r9775 - r9776;
        return r9777;
}


double f_of(float x) {
        float r9778 = 1;
        float r9779 = x;
        float r9780 = r9778 + r9779;
        float r9781 = cbrt(r9780);
        float r9782 = cbrt(r9779);
        float r9783 = r9781 + r9782;
        float r9784 = r9783 * r9782;
        float r9785 = r9781 * r9781;
        float r9786 = r9784 + r9785;
        float r9787 = r9778 / r9786;
        return r9787;
}

double f_od(double x) {
        double r9788 = 1;
        double r9789 = x;
        double r9790 = r9788 + r9789;
        double r9791 = cbrt(r9790);
        double r9792 = cbrt(r9789);
        double r9793 = r9791 + r9792;
        double r9794 = r9793 * r9792;
        double r9795 = r9791 * r9791;
        double r9796 = r9794 + r9795;
        double r9797 = r9788 / r9796;
        return r9797;
}

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 r9798, r9799, r9800, r9801, r9802, r9803;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9798);
        mpfr_init_set_str(r9799, "1", 10, MPFR_RNDN);
        mpfr_init(r9800);
        mpfr_init(r9801);
        mpfr_init(r9802);
        mpfr_init(r9803);
}

double f_im(double x) {
        mpfr_set_d(r9798, x, MPFR_RNDN);
        ;
        mpfr_add(r9800, r9798, r9799, MPFR_RNDN);
        mpfr_cbrt(r9801, r9800, MPFR_RNDN);
        mpfr_cbrt(r9802, r9798, MPFR_RNDN);
        mpfr_sub(r9803, r9801, r9802, MPFR_RNDN);
        return mpfr_get_d(r9803, MPFR_RNDN);
}

static mpfr_t r9804, r9805, r9806, r9807, r9808, r9809, r9810, r9811, r9812, r9813;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9804, "1", 10, MPFR_RNDN);
        mpfr_init(r9805);
        mpfr_init(r9806);
        mpfr_init(r9807);
        mpfr_init(r9808);
        mpfr_init(r9809);
        mpfr_init(r9810);
        mpfr_init(r9811);
        mpfr_init(r9812);
        mpfr_init(r9813);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r9805, x, MPFR_RNDN);
        mpfr_add(r9806, r9804, r9805, MPFR_RNDN);
        mpfr_cbrt(r9807, r9806, MPFR_RNDN);
        mpfr_cbrt(r9808, r9805, MPFR_RNDN);
        mpfr_add(r9809, r9807, r9808, MPFR_RNDN);
        mpfr_mul(r9810, r9809, r9808, MPFR_RNDN);
        mpfr_mul(r9811, r9807, r9807, MPFR_RNDN);
        mpfr_add(r9812, r9810, r9811, MPFR_RNDN);
        mpfr_div(r9813, r9804, r9812, MPFR_RNDN);
        return mpfr_get_d(r9813, MPFR_RNDN);
}

static mpfr_t r9814, r9815, r9816, r9817, r9818, r9819, r9820, r9821, r9822, r9823;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9814, "1", 10, MPFR_RNDN);
        mpfr_init(r9815);
        mpfr_init(r9816);
        mpfr_init(r9817);
        mpfr_init(r9818);
        mpfr_init(r9819);
        mpfr_init(r9820);
        mpfr_init(r9821);
        mpfr_init(r9822);
        mpfr_init(r9823);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r9815, x, MPFR_RNDN);
        mpfr_add(r9816, r9814, r9815, MPFR_RNDN);
        mpfr_cbrt(r9817, r9816, MPFR_RNDN);
        mpfr_cbrt(r9818, r9815, MPFR_RNDN);
        mpfr_add(r9819, r9817, r9818, MPFR_RNDN);
        mpfr_mul(r9820, r9819, r9818, MPFR_RNDN);
        mpfr_mul(r9821, r9817, r9817, MPFR_RNDN);
        mpfr_add(r9822, r9820, r9821, MPFR_RNDN);
        mpfr_div(r9823, r9814, r9822, MPFR_RNDN);
        return mpfr_get_d(r9823, MPFR_RNDN);
}

