#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 r9379 = x;
        float r9380 = 1.0f;
        float r9381 = r9379 + r9380;
        float r9382 = cbrt(r9381);
        float r9383 = cbrt(r9379);
        float r9384 = r9382 - r9383;
        return r9384;
}

double f_id(double x) {
        double r9385 = x;
        double r9386 = 1.0;
        double r9387 = r9385 + r9386;
        double r9388 = cbrt(r9387);
        double r9389 = cbrt(r9385);
        double r9390 = r9388 - r9389;
        return r9390;
}


double f_of(float x) {
        float r9391 = 1.0f;
        float r9392 = x;
        float r9393 = r9392 + r9391;
        float r9394 = cbrt(r9393);
        float r9395 = cbrt(r9392);
        float r9396 = r9394 * r9395;
        float r9397 = r9395 * r9395;
        float r9398 = r9396 + r9397;
        float r9399 = r9394 * r9394;
        float r9400 = r9398 + r9399;
        float r9401 = r9391 / r9400;
        return r9401;
}

double f_od(double x) {
        double r9402 = 1.0;
        double r9403 = x;
        double r9404 = r9403 + r9402;
        double r9405 = cbrt(r9404);
        double r9406 = cbrt(r9403);
        double r9407 = r9405 * r9406;
        double r9408 = r9406 * r9406;
        double r9409 = r9407 + r9408;
        double r9410 = r9405 * r9405;
        double r9411 = r9409 + r9410;
        double r9412 = r9402 / r9411;
        return r9412;
}

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 r9413, r9414, r9415, r9416, r9417, r9418;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9413);
        mpfr_init_set_str(r9414, "1", 10, MPFR_RNDN);
        mpfr_init(r9415);
        mpfr_init(r9416);
        mpfr_init(r9417);
        mpfr_init(r9418);
}

double f_im(double x) {
        mpfr_set_d(r9413, x, MPFR_RNDN);
        ;
        mpfr_add(r9415, r9413, r9414, MPFR_RNDN);
        mpfr_cbrt(r9416, r9415, MPFR_RNDN);
        mpfr_cbrt(r9417, r9413, MPFR_RNDN);
        mpfr_sub(r9418, r9416, r9417, MPFR_RNDN);
        return mpfr_get_d(r9418, MPFR_RNDN);
}

static mpfr_t r9419, r9420, r9421, r9422, r9423, r9424, r9425, r9426, r9427, r9428, r9429;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9419, "1", 10, MPFR_RNDN);
        mpfr_init(r9420);
        mpfr_init(r9421);
        mpfr_init(r9422);
        mpfr_init(r9423);
        mpfr_init(r9424);
        mpfr_init(r9425);
        mpfr_init(r9426);
        mpfr_init(r9427);
        mpfr_init(r9428);
        mpfr_init(r9429);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r9420, x, MPFR_RNDN);
        mpfr_add(r9421, r9420, r9419, MPFR_RNDN);
        mpfr_cbrt(r9422, r9421, MPFR_RNDN);
        mpfr_cbrt(r9423, r9420, MPFR_RNDN);
        mpfr_mul(r9424, r9422, r9423, MPFR_RNDN);
        mpfr_mul(r9425, r9423, r9423, MPFR_RNDN);
        mpfr_add(r9426, r9424, r9425, MPFR_RNDN);
        mpfr_mul(r9427, r9422, r9422, MPFR_RNDN);
        mpfr_add(r9428, r9426, r9427, MPFR_RNDN);
        mpfr_div(r9429, r9419, r9428, MPFR_RNDN);
        return mpfr_get_d(r9429, MPFR_RNDN);
}

static mpfr_t r9430, r9431, r9432, r9433, r9434, r9435, r9436, r9437, r9438, r9439, r9440;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9430, "1", 10, MPFR_RNDN);
        mpfr_init(r9431);
        mpfr_init(r9432);
        mpfr_init(r9433);
        mpfr_init(r9434);
        mpfr_init(r9435);
        mpfr_init(r9436);
        mpfr_init(r9437);
        mpfr_init(r9438);
        mpfr_init(r9439);
        mpfr_init(r9440);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r9431, x, MPFR_RNDN);
        mpfr_add(r9432, r9431, r9430, MPFR_RNDN);
        mpfr_cbrt(r9433, r9432, MPFR_RNDN);
        mpfr_cbrt(r9434, r9431, MPFR_RNDN);
        mpfr_mul(r9435, r9433, r9434, MPFR_RNDN);
        mpfr_mul(r9436, r9434, r9434, MPFR_RNDN);
        mpfr_add(r9437, r9435, r9436, MPFR_RNDN);
        mpfr_mul(r9438, r9433, r9433, MPFR_RNDN);
        mpfr_add(r9439, r9437, r9438, MPFR_RNDN);
        mpfr_div(r9440, r9430, r9439, MPFR_RNDN);
        return mpfr_get_d(r9440, MPFR_RNDN);
}

