#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 r37376 = x;
        float r37377 = 1;
        float r37378 = r37376 + r37377;
        float r37379 = cbrt(r37378);
        float r37380 = cbrt(r37376);
        float r37381 = r37379 - r37380;
        return r37381;
}

double f_id(double x) {
        double r37382 = x;
        double r37383 = 1;
        double r37384 = r37382 + r37383;
        double r37385 = cbrt(r37384);
        double r37386 = cbrt(r37382);
        double r37387 = r37385 - r37386;
        return r37387;
}


double f_of(float x) {
        float r37388 = 1;
        float r37389 = x;
        float r37390 = r37388 + r37389;
        float r37391 = cbrt(r37390);
        float r37392 = r37391 * r37391;
        float r37393 = cbrt(r37389);
        float r37394 = cbrt(r37393);
        float r37395 = r37394 * r37394;
        float r37396 = r37395 * r37394;
        float r37397 = r37396 + r37391;
        float r37398 = r37397 * r37393;
        float r37399 = r37392 + r37398;
        float r37400 = r37388 / r37399;
        return r37400;
}

double f_od(double x) {
        double r37401 = 1;
        double r37402 = x;
        double r37403 = r37401 + r37402;
        double r37404 = cbrt(r37403);
        double r37405 = r37404 * r37404;
        double r37406 = cbrt(r37402);
        double r37407 = cbrt(r37406);
        double r37408 = r37407 * r37407;
        double r37409 = r37408 * r37407;
        double r37410 = r37409 + r37404;
        double r37411 = r37410 * r37406;
        double r37412 = r37405 + r37411;
        double r37413 = r37401 / r37412;
        return r37413;
}

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 r37414, r37415, r37416, r37417, r37418, r37419;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r37414);
        mpfr_init_set_str(r37415, "1", 10, MPFR_RNDN);
        mpfr_init(r37416);
        mpfr_init(r37417);
        mpfr_init(r37418);
        mpfr_init(r37419);
}

double f_im(double x) {
        mpfr_set_d(r37414, x, MPFR_RNDN);
        ;
        mpfr_add(r37416, r37414, r37415, MPFR_RNDN);
        mpfr_cbrt(r37417, r37416, MPFR_RNDN);
        mpfr_cbrt(r37418, r37414, MPFR_RNDN);
        mpfr_sub(r37419, r37417, r37418, MPFR_RNDN);
        return mpfr_get_d(r37419, MPFR_RNDN);
}

static mpfr_t r37420, r37421, r37422, r37423, r37424, r37425, r37426, r37427, r37428, r37429, r37430, r37431, r37432;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37420, "1", 10, MPFR_RNDN);
        mpfr_init(r37421);
        mpfr_init(r37422);
        mpfr_init(r37423);
        mpfr_init(r37424);
        mpfr_init(r37425);
        mpfr_init(r37426);
        mpfr_init(r37427);
        mpfr_init(r37428);
        mpfr_init(r37429);
        mpfr_init(r37430);
        mpfr_init(r37431);
        mpfr_init(r37432);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r37421, x, MPFR_RNDN);
        mpfr_add(r37422, r37420, r37421, MPFR_RNDN);
        mpfr_cbrt(r37423, r37422, MPFR_RNDN);
        mpfr_mul(r37424, r37423, r37423, MPFR_RNDN);
        mpfr_cbrt(r37425, r37421, MPFR_RNDN);
        mpfr_cbrt(r37426, r37425, MPFR_RNDN);
        mpfr_mul(r37427, r37426, r37426, MPFR_RNDN);
        mpfr_mul(r37428, r37427, r37426, MPFR_RNDN);
        mpfr_add(r37429, r37428, r37423, MPFR_RNDN);
        mpfr_mul(r37430, r37429, r37425, MPFR_RNDN);
        mpfr_add(r37431, r37424, r37430, MPFR_RNDN);
        mpfr_div(r37432, r37420, r37431, MPFR_RNDN);
        return mpfr_get_d(r37432, MPFR_RNDN);
}

static mpfr_t r37433, r37434, r37435, r37436, r37437, r37438, r37439, r37440, r37441, r37442, r37443, r37444, r37445;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37433, "1", 10, MPFR_RNDN);
        mpfr_init(r37434);
        mpfr_init(r37435);
        mpfr_init(r37436);
        mpfr_init(r37437);
        mpfr_init(r37438);
        mpfr_init(r37439);
        mpfr_init(r37440);
        mpfr_init(r37441);
        mpfr_init(r37442);
        mpfr_init(r37443);
        mpfr_init(r37444);
        mpfr_init(r37445);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r37434, x, MPFR_RNDN);
        mpfr_add(r37435, r37433, r37434, MPFR_RNDN);
        mpfr_cbrt(r37436, r37435, MPFR_RNDN);
        mpfr_mul(r37437, r37436, r37436, MPFR_RNDN);
        mpfr_cbrt(r37438, r37434, MPFR_RNDN);
        mpfr_cbrt(r37439, r37438, MPFR_RNDN);
        mpfr_mul(r37440, r37439, r37439, MPFR_RNDN);
        mpfr_mul(r37441, r37440, r37439, MPFR_RNDN);
        mpfr_add(r37442, r37441, r37436, MPFR_RNDN);
        mpfr_mul(r37443, r37442, r37438, MPFR_RNDN);
        mpfr_add(r37444, r37437, r37443, MPFR_RNDN);
        mpfr_div(r37445, r37433, r37444, MPFR_RNDN);
        return mpfr_get_d(r37445, MPFR_RNDN);
}

