#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 r11505 = x_re;
        float r11506 = r11505 * r11505;
        float r11507 = x_im;
        float r11508 = r11507 * r11507;
        float r11509 = r11506 - r11508;
        float r11510 = r11509 * r11507;
        float r11511 = r11505 * r11507;
        float r11512 = r11507 * r11505;
        float r11513 = r11511 + r11512;
        float r11514 = r11513 * r11505;
        float r11515 = r11510 + r11514;
        return r11515;
}

double f_id(double x_re, double x_im) {
        double r11516 = x_re;
        double r11517 = r11516 * r11516;
        double r11518 = x_im;
        double r11519 = r11518 * r11518;
        double r11520 = r11517 - r11519;
        double r11521 = r11520 * r11518;
        double r11522 = r11516 * r11518;
        double r11523 = r11518 * r11516;
        double r11524 = r11522 + r11523;
        double r11525 = r11524 * r11516;
        double r11526 = r11521 + r11525;
        return r11526;
}


double f_of(float x_re, float x_im) {
        float r11527 = x_re;
        float r11528 = x_im;
        float r11529 = r11527 * r11528;
        float r11530 = r11527 * r11529;
        float r11531 = 3.0f;
        float r11532 = r11530 * r11531;
        float r11533 = pow(r11528, r11531);
        float r11534 = r11532 - r11533;
        return r11534;
}

double f_od(double x_re, double x_im) {
        double r11535 = x_re;
        double r11536 = x_im;
        double r11537 = r11535 * r11536;
        double r11538 = r11535 * r11537;
        double r11539 = 3.0;
        double r11540 = r11538 * r11539;
        double r11541 = pow(r11536, r11539);
        double r11542 = r11540 - r11541;
        return r11542;
}

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 r11543, r11544, r11545, r11546, r11547, r11548, r11549, r11550, r11551, r11552, r11553;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11543);
        mpfr_init(r11544);
        mpfr_init(r11545);
        mpfr_init(r11546);
        mpfr_init(r11547);
        mpfr_init(r11548);
        mpfr_init(r11549);
        mpfr_init(r11550);
        mpfr_init(r11551);
        mpfr_init(r11552);
        mpfr_init(r11553);
}

double f_im(double x_re, double x_im) {
        mpfr_set_d(r11543, x_re, MPFR_RNDN);
        mpfr_mul(r11544, r11543, r11543, MPFR_RNDN);
        mpfr_set_d(r11545, x_im, MPFR_RNDN);
        mpfr_mul(r11546, r11545, r11545, MPFR_RNDN);
        mpfr_sub(r11547, r11544, r11546, MPFR_RNDN);
        mpfr_mul(r11548, r11547, r11545, MPFR_RNDN);
        mpfr_mul(r11549, r11543, r11545, MPFR_RNDN);
        mpfr_mul(r11550, r11545, r11543, MPFR_RNDN);
        mpfr_add(r11551, r11549, r11550, MPFR_RNDN);
        mpfr_mul(r11552, r11551, r11543, MPFR_RNDN);
        mpfr_add(r11553, r11548, r11552, MPFR_RNDN);
        return mpfr_get_d(r11553, MPFR_RNDN);
}

static mpfr_t r11554, r11555, r11556, r11557, r11558, r11559, r11560, r11561;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11554);
        mpfr_init(r11555);
        mpfr_init(r11556);
        mpfr_init(r11557);
        mpfr_init_set_str(r11558, "3", 10, MPFR_RNDN);
        mpfr_init(r11559);
        mpfr_init(r11560);
        mpfr_init(r11561);
}

double f_fm(double x_re, double x_im) {
        mpfr_set_d(r11554, x_re, MPFR_RNDN);
        mpfr_set_d(r11555, x_im, MPFR_RNDN);
        mpfr_mul(r11556, r11554, r11555, MPFR_RNDN);
        mpfr_mul(r11557, r11554, r11556, MPFR_RNDN);
        ;
        mpfr_mul(r11559, r11557, r11558, MPFR_RNDN);
        mpfr_pow(r11560, r11555, r11558, MPFR_RNDN);
        mpfr_sub(r11561, r11559, r11560, MPFR_RNDN);
        return mpfr_get_d(r11561, MPFR_RNDN);
}

static mpfr_t r11562, r11563, r11564, r11565, r11566, r11567, r11568, r11569;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11562);
        mpfr_init(r11563);
        mpfr_init(r11564);
        mpfr_init(r11565);
        mpfr_init_set_str(r11566, "3", 10, MPFR_RNDN);
        mpfr_init(r11567);
        mpfr_init(r11568);
        mpfr_init(r11569);
}

double f_dm(double x_re, double x_im) {
        mpfr_set_d(r11562, x_re, MPFR_RNDN);
        mpfr_set_d(r11563, x_im, MPFR_RNDN);
        mpfr_mul(r11564, r11562, r11563, MPFR_RNDN);
        mpfr_mul(r11565, r11562, r11564, MPFR_RNDN);
        ;
        mpfr_mul(r11567, r11565, r11566, MPFR_RNDN);
        mpfr_pow(r11568, r11563, r11566, MPFR_RNDN);
        mpfr_sub(r11569, r11567, r11568, MPFR_RNDN);
        return mpfr_get_d(r11569, MPFR_RNDN);
}

