#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 r36831 = x;
        float r36832 = 1;
        float r36833 = r36831 + r36832;
        float r36834 = cbrt(r36833);
        float r36835 = cbrt(r36831);
        float r36836 = r36834 - r36835;
        return r36836;
}

double f_id(double x) {
        double r36837 = x;
        double r36838 = 1;
        double r36839 = r36837 + r36838;
        double r36840 = cbrt(r36839);
        double r36841 = cbrt(r36837);
        double r36842 = r36840 - r36841;
        return r36842;
}


double f_of(float x) {
        float r36843 = 1;
        float r36844 = x;
        float r36845 = r36843 + r36844;
        float r36846 = cbrt(r36845);
        float r36847 = r36846 * r36846;
        float r36848 = cbrt(r36844);
        float r36849 = cbrt(r36847);
        float r36850 = cbrt(r36846);
        float r36851 = r36849 * r36850;
        float r36852 = r36848 + r36851;
        float r36853 = r36852 * r36848;
        float r36854 = r36847 + r36853;
        float r36855 = r36843 / r36854;
        return r36855;
}

double f_od(double x) {
        double r36856 = 1;
        double r36857 = x;
        double r36858 = r36856 + r36857;
        double r36859 = cbrt(r36858);
        double r36860 = r36859 * r36859;
        double r36861 = cbrt(r36857);
        double r36862 = cbrt(r36860);
        double r36863 = cbrt(r36859);
        double r36864 = r36862 * r36863;
        double r36865 = r36861 + r36864;
        double r36866 = r36865 * r36861;
        double r36867 = r36860 + r36866;
        double r36868 = r36856 / r36867;
        return r36868;
}

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 r36869, r36870, r36871, r36872, r36873, r36874;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r36869);
        mpfr_init_set_str(r36870, "1", 10, MPFR_RNDN);
        mpfr_init(r36871);
        mpfr_init(r36872);
        mpfr_init(r36873);
        mpfr_init(r36874);
}

double f_im(double x) {
        mpfr_set_d(r36869, x, MPFR_RNDN);
        ;
        mpfr_add(r36871, r36869, r36870, MPFR_RNDN);
        mpfr_cbrt(r36872, r36871, MPFR_RNDN);
        mpfr_cbrt(r36873, r36869, MPFR_RNDN);
        mpfr_sub(r36874, r36872, r36873, MPFR_RNDN);
        return mpfr_get_d(r36874, MPFR_RNDN);
}

static mpfr_t r36875, r36876, r36877, r36878, r36879, r36880, r36881, r36882, r36883, r36884, r36885, r36886, r36887;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r36875, "1", 10, MPFR_RNDN);
        mpfr_init(r36876);
        mpfr_init(r36877);
        mpfr_init(r36878);
        mpfr_init(r36879);
        mpfr_init(r36880);
        mpfr_init(r36881);
        mpfr_init(r36882);
        mpfr_init(r36883);
        mpfr_init(r36884);
        mpfr_init(r36885);
        mpfr_init(r36886);
        mpfr_init(r36887);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r36876, x, MPFR_RNDN);
        mpfr_add(r36877, r36875, r36876, MPFR_RNDN);
        mpfr_cbrt(r36878, r36877, MPFR_RNDN);
        mpfr_mul(r36879, r36878, r36878, MPFR_RNDN);
        mpfr_cbrt(r36880, r36876, MPFR_RNDN);
        mpfr_cbrt(r36881, r36879, MPFR_RNDN);
        mpfr_cbrt(r36882, r36878, MPFR_RNDN);
        mpfr_mul(r36883, r36881, r36882, MPFR_RNDN);
        mpfr_add(r36884, r36880, r36883, MPFR_RNDN);
        mpfr_mul(r36885, r36884, r36880, MPFR_RNDN);
        mpfr_add(r36886, r36879, r36885, MPFR_RNDN);
        mpfr_div(r36887, r36875, r36886, MPFR_RNDN);
        return mpfr_get_d(r36887, MPFR_RNDN);
}

static mpfr_t r36888, r36889, r36890, r36891, r36892, r36893, r36894, r36895, r36896, r36897, r36898, r36899, r36900;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r36888, "1", 10, MPFR_RNDN);
        mpfr_init(r36889);
        mpfr_init(r36890);
        mpfr_init(r36891);
        mpfr_init(r36892);
        mpfr_init(r36893);
        mpfr_init(r36894);
        mpfr_init(r36895);
        mpfr_init(r36896);
        mpfr_init(r36897);
        mpfr_init(r36898);
        mpfr_init(r36899);
        mpfr_init(r36900);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r36889, x, MPFR_RNDN);
        mpfr_add(r36890, r36888, r36889, MPFR_RNDN);
        mpfr_cbrt(r36891, r36890, MPFR_RNDN);
        mpfr_mul(r36892, r36891, r36891, MPFR_RNDN);
        mpfr_cbrt(r36893, r36889, MPFR_RNDN);
        mpfr_cbrt(r36894, r36892, MPFR_RNDN);
        mpfr_cbrt(r36895, r36891, MPFR_RNDN);
        mpfr_mul(r36896, r36894, r36895, MPFR_RNDN);
        mpfr_add(r36897, r36893, r36896, MPFR_RNDN);
        mpfr_mul(r36898, r36897, r36893, MPFR_RNDN);
        mpfr_add(r36899, r36892, r36898, MPFR_RNDN);
        mpfr_div(r36900, r36888, r36899, MPFR_RNDN);
        return mpfr_get_d(r36900, MPFR_RNDN);
}

