#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 r11534 = x_re;
        float r11535 = r11534 * r11534;
        float r11536 = x_im;
        float r11537 = r11536 * r11536;
        float r11538 = r11535 - r11537;
        float r11539 = r11538 * r11536;
        float r11540 = r11534 * r11536;
        float r11541 = r11536 * r11534;
        float r11542 = r11540 + r11541;
        float r11543 = r11542 * r11534;
        float r11544 = r11539 + r11543;
        return r11544;
}

double f_id(double x_re, double x_im) {
        double r11545 = x_re;
        double r11546 = r11545 * r11545;
        double r11547 = x_im;
        double r11548 = r11547 * r11547;
        double r11549 = r11546 - r11548;
        double r11550 = r11549 * r11547;
        double r11551 = r11545 * r11547;
        double r11552 = r11547 * r11545;
        double r11553 = r11551 + r11552;
        double r11554 = r11553 * r11545;
        double r11555 = r11550 + r11554;
        return r11555;
}


double f_of(float x_re, float x_im) {
        float r11556 = x_re;
        float r11557 = x_im;
        float r11558 = r11556 * r11557;
        float r11559 = r11556 * r11558;
        float r11560 = 3.0f;
        float r11561 = r11559 * r11560;
        float r11562 = pow(r11557, r11560);
        float r11563 = r11561 - r11562;
        return r11563;
}

double f_od(double x_re, double x_im) {
        double r11564 = x_re;
        double r11565 = x_im;
        double r11566 = r11564 * r11565;
        double r11567 = r11564 * r11566;
        double r11568 = 3.0;
        double r11569 = r11567 * r11568;
        double r11570 = pow(r11565, r11568);
        double r11571 = r11569 - r11570;
        return r11571;
}

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 r11572, r11573, r11574, r11575, r11576, r11577, r11578, r11579, r11580, r11581, r11582;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11572);
        mpfr_init(r11573);
        mpfr_init(r11574);
        mpfr_init(r11575);
        mpfr_init(r11576);
        mpfr_init(r11577);
        mpfr_init(r11578);
        mpfr_init(r11579);
        mpfr_init(r11580);
        mpfr_init(r11581);
        mpfr_init(r11582);
}

double f_im(double x_re, double x_im) {
        mpfr_set_d(r11572, x_re, MPFR_RNDN);
        mpfr_mul(r11573, r11572, r11572, MPFR_RNDN);
        mpfr_set_d(r11574, x_im, MPFR_RNDN);
        mpfr_mul(r11575, r11574, r11574, MPFR_RNDN);
        mpfr_sub(r11576, r11573, r11575, MPFR_RNDN);
        mpfr_mul(r11577, r11576, r11574, MPFR_RNDN);
        mpfr_mul(r11578, r11572, r11574, MPFR_RNDN);
        mpfr_mul(r11579, r11574, r11572, MPFR_RNDN);
        mpfr_add(r11580, r11578, r11579, MPFR_RNDN);
        mpfr_mul(r11581, r11580, r11572, MPFR_RNDN);
        mpfr_add(r11582, r11577, r11581, MPFR_RNDN);
        return mpfr_get_d(r11582, MPFR_RNDN);
}

static mpfr_t r11583, r11584, r11585, r11586, r11587, r11588, r11589, r11590;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11583);
        mpfr_init(r11584);
        mpfr_init(r11585);
        mpfr_init(r11586);
        mpfr_init_set_str(r11587, "3", 10, MPFR_RNDN);
        mpfr_init(r11588);
        mpfr_init(r11589);
        mpfr_init(r11590);
}

double f_fm(double x_re, double x_im) {
        mpfr_set_d(r11583, x_re, MPFR_RNDN);
        mpfr_set_d(r11584, x_im, MPFR_RNDN);
        mpfr_mul(r11585, r11583, r11584, MPFR_RNDN);
        mpfr_mul(r11586, r11583, r11585, MPFR_RNDN);
        ;
        mpfr_mul(r11588, r11586, r11587, MPFR_RNDN);
        mpfr_pow(r11589, r11584, r11587, MPFR_RNDN);
        mpfr_sub(r11590, r11588, r11589, MPFR_RNDN);
        return mpfr_get_d(r11590, MPFR_RNDN);
}

static mpfr_t r11591, r11592, r11593, r11594, r11595, r11596, r11597, r11598;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11591);
        mpfr_init(r11592);
        mpfr_init(r11593);
        mpfr_init(r11594);
        mpfr_init_set_str(r11595, "3", 10, MPFR_RNDN);
        mpfr_init(r11596);
        mpfr_init(r11597);
        mpfr_init(r11598);
}

double f_dm(double x_re, double x_im) {
        mpfr_set_d(r11591, x_re, MPFR_RNDN);
        mpfr_set_d(r11592, x_im, MPFR_RNDN);
        mpfr_mul(r11593, r11591, r11592, MPFR_RNDN);
        mpfr_mul(r11594, r11591, r11593, MPFR_RNDN);
        ;
        mpfr_mul(r11596, r11594, r11595, MPFR_RNDN);
        mpfr_pow(r11597, r11592, r11595, MPFR_RNDN);
        mpfr_sub(r11598, r11596, r11597, MPFR_RNDN);
        return mpfr_get_d(r11598, MPFR_RNDN);
}

