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

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

double f_if(float x_re, float x_im) {
        float r11440 = x_re;
        float r11441 = r11440 * r11440;
        float r11442 = x_im;
        float r11443 = r11442 * r11442;
        float r11444 = r11441 - r11443;
        float r11445 = r11444 * r11440;
        float r11446 = r11440 * r11442;
        float r11447 = r11442 * r11440;
        float r11448 = r11446 + r11447;
        float r11449 = r11448 * r11442;
        float r11450 = r11445 - r11449;
        return r11450;
}

double f_id(double x_re, double x_im) {
        double r11451 = x_re;
        double r11452 = r11451 * r11451;
        double r11453 = x_im;
        double r11454 = r11453 * r11453;
        double r11455 = r11452 - r11454;
        double r11456 = r11455 * r11451;
        double r11457 = r11451 * r11453;
        double r11458 = r11453 * r11451;
        double r11459 = r11457 + r11458;
        double r11460 = r11459 * r11453;
        double r11461 = r11456 - r11460;
        return r11461;
}


double f_of(float x_re, float x_im) {
        float r11462 = x_re;
        float r11463 = 3.0f;
        float r11464 = pow(r11462, r11463);
        float r11465 = x_im;
        float r11466 = r11465 * r11463;
        float r11467 = r11465 * r11462;
        float r11468 = r11466 * r11467;
        float r11469 = r11464 - r11468;
        return r11469;
}

double f_od(double x_re, double x_im) {
        double r11470 = x_re;
        double r11471 = 3.0;
        double r11472 = pow(r11470, r11471);
        double r11473 = x_im;
        double r11474 = r11473 * r11471;
        double r11475 = r11473 * r11470;
        double r11476 = r11474 * r11475;
        double r11477 = r11472 - r11476;
        return r11477;
}

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 r11478, r11479, r11480, r11481, r11482, r11483, r11484, r11485, r11486, r11487, r11488;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11478);
        mpfr_init(r11479);
        mpfr_init(r11480);
        mpfr_init(r11481);
        mpfr_init(r11482);
        mpfr_init(r11483);
        mpfr_init(r11484);
        mpfr_init(r11485);
        mpfr_init(r11486);
        mpfr_init(r11487);
        mpfr_init(r11488);
}

double f_im(double x_re, double x_im) {
        mpfr_set_d(r11478, x_re, MPFR_RNDN);
        mpfr_mul(r11479, r11478, r11478, MPFR_RNDN);
        mpfr_set_d(r11480, x_im, MPFR_RNDN);
        mpfr_mul(r11481, r11480, r11480, MPFR_RNDN);
        mpfr_sub(r11482, r11479, r11481, MPFR_RNDN);
        mpfr_mul(r11483, r11482, r11478, MPFR_RNDN);
        mpfr_mul(r11484, r11478, r11480, MPFR_RNDN);
        mpfr_mul(r11485, r11480, r11478, MPFR_RNDN);
        mpfr_add(r11486, r11484, r11485, MPFR_RNDN);
        mpfr_mul(r11487, r11486, r11480, MPFR_RNDN);
        mpfr_sub(r11488, r11483, r11487, MPFR_RNDN);
        return mpfr_get_d(r11488, MPFR_RNDN);
}

static mpfr_t r11489, r11490, r11491, r11492, r11493, r11494, r11495, r11496;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11489);
        mpfr_init_set_str(r11490, "3", 10, MPFR_RNDN);
        mpfr_init(r11491);
        mpfr_init(r11492);
        mpfr_init(r11493);
        mpfr_init(r11494);
        mpfr_init(r11495);
        mpfr_init(r11496);
}

double f_fm(double x_re, double x_im) {
        mpfr_set_d(r11489, x_re, MPFR_RNDN);
        ;
        mpfr_pow(r11491, r11489, r11490, MPFR_RNDN);
        mpfr_set_d(r11492, x_im, MPFR_RNDN);
        mpfr_mul(r11493, r11492, r11490, MPFR_RNDN);
        mpfr_mul(r11494, r11492, r11489, MPFR_RNDN);
        mpfr_mul(r11495, r11493, r11494, MPFR_RNDN);
        mpfr_sub(r11496, r11491, r11495, MPFR_RNDN);
        return mpfr_get_d(r11496, MPFR_RNDN);
}

static mpfr_t r11497, r11498, r11499, r11500, r11501, r11502, r11503, r11504;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11497);
        mpfr_init_set_str(r11498, "3", 10, MPFR_RNDN);
        mpfr_init(r11499);
        mpfr_init(r11500);
        mpfr_init(r11501);
        mpfr_init(r11502);
        mpfr_init(r11503);
        mpfr_init(r11504);
}

double f_dm(double x_re, double x_im) {
        mpfr_set_d(r11497, x_re, MPFR_RNDN);
        ;
        mpfr_pow(r11499, r11497, r11498, MPFR_RNDN);
        mpfr_set_d(r11500, x_im, MPFR_RNDN);
        mpfr_mul(r11501, r11500, r11498, MPFR_RNDN);
        mpfr_mul(r11502, r11500, r11497, MPFR_RNDN);
        mpfr_mul(r11503, r11501, r11502, MPFR_RNDN);
        mpfr_sub(r11504, r11499, r11503, MPFR_RNDN);
        return mpfr_get_d(r11504, MPFR_RNDN);
}

