#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 r36984 = x;
        float r36985 = 1;
        float r36986 = r36984 + r36985;
        float r36987 = cbrt(r36986);
        float r36988 = cbrt(r36984);
        float r36989 = r36987 - r36988;
        return r36989;
}

double f_id(double x) {
        double r36990 = x;
        double r36991 = 1;
        double r36992 = r36990 + r36991;
        double r36993 = cbrt(r36992);
        double r36994 = cbrt(r36990);
        double r36995 = r36993 - r36994;
        return r36995;
}


double f_of(float x) {
        float r36996 = 1;
        float r36997 = x;
        float r36998 = r36996 + r36997;
        float r36999 = cbrt(r36998);
        float r37000 = r36999 * r36999;
        float r37001 = cbrt(r36997);
        float r37002 = cbrt(r37001);
        float r37003 = r37002 * r37002;
        float r37004 = r37003 * r37002;
        float r37005 = r37004 + r36999;
        float r37006 = r37005 * r37001;
        float r37007 = r37000 + r37006;
        float r37008 = r36996 / r37007;
        return r37008;
}

double f_od(double x) {
        double r37009 = 1;
        double r37010 = x;
        double r37011 = r37009 + r37010;
        double r37012 = cbrt(r37011);
        double r37013 = r37012 * r37012;
        double r37014 = cbrt(r37010);
        double r37015 = cbrt(r37014);
        double r37016 = r37015 * r37015;
        double r37017 = r37016 * r37015;
        double r37018 = r37017 + r37012;
        double r37019 = r37018 * r37014;
        double r37020 = r37013 + r37019;
        double r37021 = r37009 / r37020;
        return r37021;
}

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 r37022, r37023, r37024, r37025, r37026, r37027;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r37022);
        mpfr_init_set_str(r37023, "1", 10, MPFR_RNDN);
        mpfr_init(r37024);
        mpfr_init(r37025);
        mpfr_init(r37026);
        mpfr_init(r37027);
}

double f_im(double x) {
        mpfr_set_d(r37022, x, MPFR_RNDN);
        ;
        mpfr_add(r37024, r37022, r37023, MPFR_RNDN);
        mpfr_cbrt(r37025, r37024, MPFR_RNDN);
        mpfr_cbrt(r37026, r37022, MPFR_RNDN);
        mpfr_sub(r37027, r37025, r37026, MPFR_RNDN);
        return mpfr_get_d(r37027, MPFR_RNDN);
}

static mpfr_t r37028, r37029, r37030, r37031, r37032, r37033, r37034, r37035, r37036, r37037, r37038, r37039, r37040;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37028, "1", 10, MPFR_RNDN);
        mpfr_init(r37029);
        mpfr_init(r37030);
        mpfr_init(r37031);
        mpfr_init(r37032);
        mpfr_init(r37033);
        mpfr_init(r37034);
        mpfr_init(r37035);
        mpfr_init(r37036);
        mpfr_init(r37037);
        mpfr_init(r37038);
        mpfr_init(r37039);
        mpfr_init(r37040);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r37029, x, MPFR_RNDN);
        mpfr_add(r37030, r37028, r37029, MPFR_RNDN);
        mpfr_cbrt(r37031, r37030, MPFR_RNDN);
        mpfr_mul(r37032, r37031, r37031, MPFR_RNDN);
        mpfr_cbrt(r37033, r37029, MPFR_RNDN);
        mpfr_cbrt(r37034, r37033, MPFR_RNDN);
        mpfr_mul(r37035, r37034, r37034, MPFR_RNDN);
        mpfr_mul(r37036, r37035, r37034, MPFR_RNDN);
        mpfr_add(r37037, r37036, r37031, MPFR_RNDN);
        mpfr_mul(r37038, r37037, r37033, MPFR_RNDN);
        mpfr_add(r37039, r37032, r37038, MPFR_RNDN);
        mpfr_div(r37040, r37028, r37039, MPFR_RNDN);
        return mpfr_get_d(r37040, MPFR_RNDN);
}

static mpfr_t r37041, r37042, r37043, r37044, r37045, r37046, r37047, r37048, r37049, r37050, r37051, r37052, r37053;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37041, "1", 10, MPFR_RNDN);
        mpfr_init(r37042);
        mpfr_init(r37043);
        mpfr_init(r37044);
        mpfr_init(r37045);
        mpfr_init(r37046);
        mpfr_init(r37047);
        mpfr_init(r37048);
        mpfr_init(r37049);
        mpfr_init(r37050);
        mpfr_init(r37051);
        mpfr_init(r37052);
        mpfr_init(r37053);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r37042, x, MPFR_RNDN);
        mpfr_add(r37043, r37041, r37042, MPFR_RNDN);
        mpfr_cbrt(r37044, r37043, MPFR_RNDN);
        mpfr_mul(r37045, r37044, r37044, MPFR_RNDN);
        mpfr_cbrt(r37046, r37042, MPFR_RNDN);
        mpfr_cbrt(r37047, r37046, MPFR_RNDN);
        mpfr_mul(r37048, r37047, r37047, MPFR_RNDN);
        mpfr_mul(r37049, r37048, r37047, MPFR_RNDN);
        mpfr_add(r37050, r37049, r37044, MPFR_RNDN);
        mpfr_mul(r37051, r37050, r37046, MPFR_RNDN);
        mpfr_add(r37052, r37045, r37051, MPFR_RNDN);
        mpfr_div(r37053, r37041, r37052, MPFR_RNDN);
        return mpfr_get_d(r37053, MPFR_RNDN);
}

