#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "math.cube on complex, imaginary part";

double f_if(float x_re, float x_im) {
        float r9497 = x_re;
        float r9498 = r9497 * r9497;
        float r9499 = x_im;
        float r9500 = r9499 * r9499;
        float r9501 = r9498 - r9500;
        float r9502 = r9501 * r9499;
        float r9503 = r9497 * r9499;
        float r9504 = r9499 * r9497;
        float r9505 = r9503 + r9504;
        float r9506 = r9505 * r9497;
        float r9507 = r9502 + r9506;
        return r9507;
}

double f_id(double x_re, double x_im) {
        double r9508 = x_re;
        double r9509 = r9508 * r9508;
        double r9510 = x_im;
        double r9511 = r9510 * r9510;
        double r9512 = r9509 - r9511;
        double r9513 = r9512 * r9510;
        double r9514 = r9508 * r9510;
        double r9515 = r9510 * r9508;
        double r9516 = r9514 + r9515;
        double r9517 = r9516 * r9508;
        double r9518 = r9513 + r9517;
        return r9518;
}


double f_of(float x_re, float x_im) {
        float r9519 = x_re;
        float r9520 = x_im;
        float r9521 = r9519 + r9520;
        float r9522 = r9519 - r9520;
        float r9523 = r9522 * r9520;
        float r9524 = r9521 * r9523;
        float r9525 = cbrt(r9524);
        float r9526 = r9525 * r9525;
        float r9527 = r9526 * r9525;
        float r9528 = r9519 * r9520;
        float r9529 = r9520 * r9519;
        float r9530 = r9528 + r9529;
        float r9531 = r9530 * r9519;
        float r9532 = r9527 + r9531;
        return r9532;
}

double f_od(double x_re, double x_im) {
        double r9533 = x_re;
        double r9534 = x_im;
        double r9535 = r9533 + r9534;
        double r9536 = r9533 - r9534;
        double r9537 = r9536 * r9534;
        double r9538 = r9535 * r9537;
        double r9539 = cbrt(r9538);
        double r9540 = r9539 * r9539;
        double r9541 = r9540 * r9539;
        double r9542 = r9533 * r9534;
        double r9543 = r9534 * r9533;
        double r9544 = r9542 + r9543;
        double r9545 = r9544 * r9533;
        double r9546 = r9541 + r9545;
        return r9546;
}

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 r9547, r9548, r9549, r9550, r9551, r9552, r9553, r9554, r9555, r9556, r9557;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9547);
        mpfr_init(r9548);
        mpfr_init(r9549);
        mpfr_init(r9550);
        mpfr_init(r9551);
        mpfr_init(r9552);
        mpfr_init(r9553);
        mpfr_init(r9554);
        mpfr_init(r9555);
        mpfr_init(r9556);
        mpfr_init(r9557);
}

double f_im(double x_re, double x_im) {
        mpfr_set_d(r9547, x_re, MPFR_RNDN);
        mpfr_mul(r9548, r9547, r9547, MPFR_RNDN);
        mpfr_set_d(r9549, x_im, MPFR_RNDN);
        mpfr_mul(r9550, r9549, r9549, MPFR_RNDN);
        mpfr_sub(r9551, r9548, r9550, MPFR_RNDN);
        mpfr_mul(r9552, r9551, r9549, MPFR_RNDN);
        mpfr_mul(r9553, r9547, r9549, MPFR_RNDN);
        mpfr_mul(r9554, r9549, r9547, MPFR_RNDN);
        mpfr_add(r9555, r9553, r9554, MPFR_RNDN);
        mpfr_mul(r9556, r9555, r9547, MPFR_RNDN);
        mpfr_add(r9557, r9552, r9556, MPFR_RNDN);
        return mpfr_get_d(r9557, MPFR_RNDN);
}

static mpfr_t r9558, r9559, r9560, r9561, r9562, r9563, r9564, r9565, r9566, r9567, r9568, r9569, r9570, r9571;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9558);
        mpfr_init(r9559);
        mpfr_init(r9560);
        mpfr_init(r9561);
        mpfr_init(r9562);
        mpfr_init(r9563);
        mpfr_init(r9564);
        mpfr_init(r9565);
        mpfr_init(r9566);
        mpfr_init(r9567);
        mpfr_init(r9568);
        mpfr_init(r9569);
        mpfr_init(r9570);
        mpfr_init(r9571);
}

double f_fm(double x_re, double x_im) {
        mpfr_set_d(r9558, x_re, MPFR_RNDN);
        mpfr_set_d(r9559, x_im, MPFR_RNDN);
        mpfr_add(r9560, r9558, r9559, MPFR_RNDN);
        mpfr_sub(r9561, r9558, r9559, MPFR_RNDN);
        mpfr_mul(r9562, r9561, r9559, MPFR_RNDN);
        mpfr_mul(r9563, r9560, r9562, MPFR_RNDN);
        mpfr_cbrt(r9564, r9563, MPFR_RNDN);
        mpfr_mul(r9565, r9564, r9564, MPFR_RNDN);
        mpfr_mul(r9566, r9565, r9564, MPFR_RNDN);
        mpfr_mul(r9567, r9558, r9559, MPFR_RNDN);
        mpfr_mul(r9568, r9559, r9558, MPFR_RNDN);
        mpfr_add(r9569, r9567, r9568, MPFR_RNDN);
        mpfr_mul(r9570, r9569, r9558, MPFR_RNDN);
        mpfr_add(r9571, r9566, r9570, MPFR_RNDN);
        return mpfr_get_d(r9571, MPFR_RNDN);
}

static mpfr_t r9572, r9573, r9574, r9575, r9576, r9577, r9578, r9579, r9580, r9581, r9582, r9583, r9584, r9585;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9572);
        mpfr_init(r9573);
        mpfr_init(r9574);
        mpfr_init(r9575);
        mpfr_init(r9576);
        mpfr_init(r9577);
        mpfr_init(r9578);
        mpfr_init(r9579);
        mpfr_init(r9580);
        mpfr_init(r9581);
        mpfr_init(r9582);
        mpfr_init(r9583);
        mpfr_init(r9584);
        mpfr_init(r9585);
}

double f_dm(double x_re, double x_im) {
        mpfr_set_d(r9572, x_re, MPFR_RNDN);
        mpfr_set_d(r9573, x_im, MPFR_RNDN);
        mpfr_add(r9574, r9572, r9573, MPFR_RNDN);
        mpfr_sub(r9575, r9572, r9573, MPFR_RNDN);
        mpfr_mul(r9576, r9575, r9573, MPFR_RNDN);
        mpfr_mul(r9577, r9574, r9576, MPFR_RNDN);
        mpfr_cbrt(r9578, r9577, MPFR_RNDN);
        mpfr_mul(r9579, r9578, r9578, MPFR_RNDN);
        mpfr_mul(r9580, r9579, r9578, MPFR_RNDN);
        mpfr_mul(r9581, r9572, r9573, MPFR_RNDN);
        mpfr_mul(r9582, r9573, r9572, MPFR_RNDN);
        mpfr_add(r9583, r9581, r9582, MPFR_RNDN);
        mpfr_mul(r9584, r9583, r9572, MPFR_RNDN);
        mpfr_add(r9585, r9580, r9584, MPFR_RNDN);
        return mpfr_get_d(r9585, MPFR_RNDN);
}

