#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 r6214872 = x;
        float r6214873 = 1;
        float r6214874 = r6214872 + r6214873;
        float r6214875 = cbrt(r6214874);
        float r6214876 = cbrt(r6214872);
        float r6214877 = r6214875 - r6214876;
        return r6214877;
}

double f_id(double x) {
        double r6214878 = x;
        double r6214879 = 1;
        double r6214880 = r6214878 + r6214879;
        double r6214881 = cbrt(r6214880);
        double r6214882 = cbrt(r6214878);
        double r6214883 = r6214881 - r6214882;
        return r6214883;
}


double f_of(float x) {
        float r6214884 = 1;
        float r6214885 = x;
        float r6214886 = r6214885 + r6214884;
        float r6214887 = cbrt(r6214886);
        float r6214888 = r6214887 * r6214887;
        float r6214889 = cbrt(r6214885);
        float r6214890 = r6214889 + r6214887;
        float r6214891 = r6214889 * r6214890;
        float r6214892 = r6214888 + r6214891;
        float r6214893 = r6214884 / r6214892;
        return r6214893;
}

double f_od(double x) {
        double r6214894 = 1;
        double r6214895 = x;
        double r6214896 = r6214895 + r6214894;
        double r6214897 = cbrt(r6214896);
        double r6214898 = r6214897 * r6214897;
        double r6214899 = cbrt(r6214895);
        double r6214900 = r6214899 + r6214897;
        double r6214901 = r6214899 * r6214900;
        double r6214902 = r6214898 + r6214901;
        double r6214903 = r6214894 / r6214902;
        return r6214903;
}

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 r6214904, r6214905, r6214906, r6214907, r6214908, r6214909;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r6214904);
        mpfr_init_set_str(r6214905, "1", 10, MPFR_RNDN);
        mpfr_init(r6214906);
        mpfr_init(r6214907);
        mpfr_init(r6214908);
        mpfr_init(r6214909);
}

double f_im(double x) {
        mpfr_set_d(r6214904, x, MPFR_RNDN);
        ;
        mpfr_add(r6214906, r6214904, r6214905, MPFR_RNDN);
        mpfr_cbrt(r6214907, r6214906, MPFR_RNDN);
        mpfr_cbrt(r6214908, r6214904, MPFR_RNDN);
        mpfr_sub(r6214909, r6214907, r6214908, MPFR_RNDN);
        return mpfr_get_d(r6214909, MPFR_RNDN);
}

static mpfr_t r6214910, r6214911, r6214912, r6214913, r6214914, r6214915, r6214916, r6214917, r6214918, r6214919;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r6214910, "1", 10, MPFR_RNDN);
        mpfr_init(r6214911);
        mpfr_init(r6214912);
        mpfr_init(r6214913);
        mpfr_init(r6214914);
        mpfr_init(r6214915);
        mpfr_init(r6214916);
        mpfr_init(r6214917);
        mpfr_init(r6214918);
        mpfr_init(r6214919);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r6214911, x, MPFR_RNDN);
        mpfr_add(r6214912, r6214911, r6214910, MPFR_RNDN);
        mpfr_cbrt(r6214913, r6214912, MPFR_RNDN);
        mpfr_mul(r6214914, r6214913, r6214913, MPFR_RNDN);
        mpfr_cbrt(r6214915, r6214911, MPFR_RNDN);
        mpfr_add(r6214916, r6214915, r6214913, MPFR_RNDN);
        mpfr_mul(r6214917, r6214915, r6214916, MPFR_RNDN);
        mpfr_add(r6214918, r6214914, r6214917, MPFR_RNDN);
        mpfr_div(r6214919, r6214910, r6214918, MPFR_RNDN);
        return mpfr_get_d(r6214919, MPFR_RNDN);
}

static mpfr_t r6214920, r6214921, r6214922, r6214923, r6214924, r6214925, r6214926, r6214927, r6214928, r6214929;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r6214920, "1", 10, MPFR_RNDN);
        mpfr_init(r6214921);
        mpfr_init(r6214922);
        mpfr_init(r6214923);
        mpfr_init(r6214924);
        mpfr_init(r6214925);
        mpfr_init(r6214926);
        mpfr_init(r6214927);
        mpfr_init(r6214928);
        mpfr_init(r6214929);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r6214921, x, MPFR_RNDN);
        mpfr_add(r6214922, r6214921, r6214920, MPFR_RNDN);
        mpfr_cbrt(r6214923, r6214922, MPFR_RNDN);
        mpfr_mul(r6214924, r6214923, r6214923, MPFR_RNDN);
        mpfr_cbrt(r6214925, r6214921, MPFR_RNDN);
        mpfr_add(r6214926, r6214925, r6214923, MPFR_RNDN);
        mpfr_mul(r6214927, r6214925, r6214926, MPFR_RNDN);
        mpfr_add(r6214928, r6214924, r6214927, MPFR_RNDN);
        mpfr_div(r6214929, r6214920, r6214928, MPFR_RNDN);
        return mpfr_get_d(r6214929, MPFR_RNDN);
}

