#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 r11354 = x_re;
        float r11355 = r11354 * r11354;
        float r11356 = x_im;
        float r11357 = r11356 * r11356;
        float r11358 = r11355 - r11357;
        float r11359 = r11358 * r11354;
        float r11360 = r11354 * r11356;
        float r11361 = r11356 * r11354;
        float r11362 = r11360 + r11361;
        float r11363 = r11362 * r11356;
        float r11364 = r11359 - r11363;
        return r11364;
}

double f_id(double x_re, double x_im) {
        double r11365 = x_re;
        double r11366 = r11365 * r11365;
        double r11367 = x_im;
        double r11368 = r11367 * r11367;
        double r11369 = r11366 - r11368;
        double r11370 = r11369 * r11365;
        double r11371 = r11365 * r11367;
        double r11372 = r11367 * r11365;
        double r11373 = r11371 + r11372;
        double r11374 = r11373 * r11367;
        double r11375 = r11370 - r11374;
        return r11375;
}


double f_of(float x_re, float x_im) {
        float r11376 = x_re;
        float r11377 = x_im;
        float r11378 = r11376 - r11377;
        float r11379 = r11378 * r11376;
        float r11380 = r11377 + r11376;
        float r11381 = r11379 * r11380;
        float r11382 = r11376 * r11377;
        float r11383 = 2.0f;
        float r11384 = r11382 * r11383;
        float r11385 = r11384 * r11377;
        float r11386 = r11381 - r11385;
        return r11386;
}

double f_od(double x_re, double x_im) {
        double r11387 = x_re;
        double r11388 = x_im;
        double r11389 = r11387 - r11388;
        double r11390 = r11389 * r11387;
        double r11391 = r11388 + r11387;
        double r11392 = r11390 * r11391;
        double r11393 = r11387 * r11388;
        double r11394 = 2.0;
        double r11395 = r11393 * r11394;
        double r11396 = r11395 * r11388;
        double r11397 = r11392 - r11396;
        return r11397;
}

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 r11398, r11399, r11400, r11401, r11402, r11403, r11404, r11405, r11406, r11407, r11408;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r11398);
        mpfr_init(r11399);
        mpfr_init(r11400);
        mpfr_init(r11401);
        mpfr_init(r11402);
        mpfr_init(r11403);
        mpfr_init(r11404);
        mpfr_init(r11405);
        mpfr_init(r11406);
        mpfr_init(r11407);
        mpfr_init(r11408);
}

double f_im(double x_re, double x_im) {
        mpfr_set_d(r11398, x_re, MPFR_RNDN);
        mpfr_mul(r11399, r11398, r11398, MPFR_RNDN);
        mpfr_set_d(r11400, x_im, MPFR_RNDN);
        mpfr_mul(r11401, r11400, r11400, MPFR_RNDN);
        mpfr_sub(r11402, r11399, r11401, MPFR_RNDN);
        mpfr_mul(r11403, r11402, r11398, MPFR_RNDN);
        mpfr_mul(r11404, r11398, r11400, MPFR_RNDN);
        mpfr_mul(r11405, r11400, r11398, MPFR_RNDN);
        mpfr_add(r11406, r11404, r11405, MPFR_RNDN);
        mpfr_mul(r11407, r11406, r11400, MPFR_RNDN);
        mpfr_sub(r11408, r11403, r11407, MPFR_RNDN);
        return mpfr_get_d(r11408, MPFR_RNDN);
}

static mpfr_t r11409, r11410, r11411, r11412, r11413, r11414, r11415, r11416, r11417, r11418, r11419;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r11409);
        mpfr_init(r11410);
        mpfr_init(r11411);
        mpfr_init(r11412);
        mpfr_init(r11413);
        mpfr_init(r11414);
        mpfr_init(r11415);
        mpfr_init_set_str(r11416, "2", 10, MPFR_RNDN);
        mpfr_init(r11417);
        mpfr_init(r11418);
        mpfr_init(r11419);
}

double f_fm(double x_re, double x_im) {
        mpfr_set_d(r11409, x_re, MPFR_RNDN);
        mpfr_set_d(r11410, x_im, MPFR_RNDN);
        mpfr_sub(r11411, r11409, r11410, MPFR_RNDN);
        mpfr_mul(r11412, r11411, r11409, MPFR_RNDN);
        mpfr_add(r11413, r11410, r11409, MPFR_RNDN);
        mpfr_mul(r11414, r11412, r11413, MPFR_RNDN);
        mpfr_mul(r11415, r11409, r11410, MPFR_RNDN);
        ;
        mpfr_mul(r11417, r11415, r11416, MPFR_RNDN);
        mpfr_mul(r11418, r11417, r11410, MPFR_RNDN);
        mpfr_sub(r11419, r11414, r11418, MPFR_RNDN);
        return mpfr_get_d(r11419, MPFR_RNDN);
}

static mpfr_t r11420, r11421, r11422, r11423, r11424, r11425, r11426, r11427, r11428, r11429, r11430;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r11420);
        mpfr_init(r11421);
        mpfr_init(r11422);
        mpfr_init(r11423);
        mpfr_init(r11424);
        mpfr_init(r11425);
        mpfr_init(r11426);
        mpfr_init_set_str(r11427, "2", 10, MPFR_RNDN);
        mpfr_init(r11428);
        mpfr_init(r11429);
        mpfr_init(r11430);
}

double f_dm(double x_re, double x_im) {
        mpfr_set_d(r11420, x_re, MPFR_RNDN);
        mpfr_set_d(r11421, x_im, MPFR_RNDN);
        mpfr_sub(r11422, r11420, r11421, MPFR_RNDN);
        mpfr_mul(r11423, r11422, r11420, MPFR_RNDN);
        mpfr_add(r11424, r11421, r11420, MPFR_RNDN);
        mpfr_mul(r11425, r11423, r11424, MPFR_RNDN);
        mpfr_mul(r11426, r11420, r11421, MPFR_RNDN);
        ;
        mpfr_mul(r11428, r11426, r11427, MPFR_RNDN);
        mpfr_mul(r11429, r11428, r11421, MPFR_RNDN);
        mpfr_sub(r11430, r11425, r11429, MPFR_RNDN);
        return mpfr_get_d(r11430, MPFR_RNDN);
}

