#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 r9361 = x_re;
        float r9362 = r9361 * r9361;
        float r9363 = x_im;
        float r9364 = r9363 * r9363;
        float r9365 = r9362 - r9364;
        float r9366 = r9365 * r9361;
        float r9367 = r9361 * r9363;
        float r9368 = r9363 * r9361;
        float r9369 = r9367 + r9368;
        float r9370 = r9369 * r9363;
        float r9371 = r9366 - r9370;
        return r9371;
}

double f_id(double x_re, double x_im) {
        double r9372 = x_re;
        double r9373 = r9372 * r9372;
        double r9374 = x_im;
        double r9375 = r9374 * r9374;
        double r9376 = r9373 - r9375;
        double r9377 = r9376 * r9372;
        double r9378 = r9372 * r9374;
        double r9379 = r9374 * r9372;
        double r9380 = r9378 + r9379;
        double r9381 = r9380 * r9374;
        double r9382 = r9377 - r9381;
        return r9382;
}


double f_of(float x_re, float x_im) {
        float r9383 = x_re;
        float r9384 = x_im;
        float r9385 = r9383 + r9384;
        float r9386 = r9383 - r9384;
        float r9387 = r9386 * r9383;
        float r9388 = r9384 * r9383;
        float r9389 = r9384 + r9384;
        float r9390 = r9388 * r9389;
        float r9391 = -r9390;
        float r9392 = fma(r9385, r9387, r9391);
        return r9392;
}

double f_od(double x_re, double x_im) {
        double r9393 = x_re;
        double r9394 = x_im;
        double r9395 = r9393 + r9394;
        double r9396 = r9393 - r9394;
        double r9397 = r9396 * r9393;
        double r9398 = r9394 * r9393;
        double r9399 = r9394 + r9394;
        double r9400 = r9398 * r9399;
        double r9401 = -r9400;
        double r9402 = fma(r9395, r9397, r9401);
        return r9402;
}

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 r9403, r9404, r9405, r9406, r9407, r9408, r9409, r9410, r9411, r9412, r9413;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9403);
        mpfr_init(r9404);
        mpfr_init(r9405);
        mpfr_init(r9406);
        mpfr_init(r9407);
        mpfr_init(r9408);
        mpfr_init(r9409);
        mpfr_init(r9410);
        mpfr_init(r9411);
        mpfr_init(r9412);
        mpfr_init(r9413);
}

double f_im(double x_re, double x_im) {
        mpfr_set_d(r9403, x_re, MPFR_RNDN);
        mpfr_mul(r9404, r9403, r9403, MPFR_RNDN);
        mpfr_set_d(r9405, x_im, MPFR_RNDN);
        mpfr_mul(r9406, r9405, r9405, MPFR_RNDN);
        mpfr_sub(r9407, r9404, r9406, MPFR_RNDN);
        mpfr_mul(r9408, r9407, r9403, MPFR_RNDN);
        mpfr_mul(r9409, r9403, r9405, MPFR_RNDN);
        mpfr_mul(r9410, r9405, r9403, MPFR_RNDN);
        mpfr_add(r9411, r9409, r9410, MPFR_RNDN);
        mpfr_mul(r9412, r9411, r9405, MPFR_RNDN);
        mpfr_sub(r9413, r9408, r9412, MPFR_RNDN);
        return mpfr_get_d(r9413, MPFR_RNDN);
}

static mpfr_t r9414, r9415, r9416, r9417, r9418, r9419, r9420, r9421, r9422, r9423;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9414);
        mpfr_init(r9415);
        mpfr_init(r9416);
        mpfr_init(r9417);
        mpfr_init(r9418);
        mpfr_init(r9419);
        mpfr_init(r9420);
        mpfr_init(r9421);
        mpfr_init(r9422);
        mpfr_init(r9423);
}

double f_fm(double x_re, double x_im) {
        mpfr_set_d(r9414, x_re, MPFR_RNDN);
        mpfr_set_d(r9415, x_im, MPFR_RNDN);
        mpfr_add(r9416, r9414, r9415, MPFR_RNDN);
        mpfr_sub(r9417, r9414, r9415, MPFR_RNDN);
        mpfr_mul(r9418, r9417, r9414, MPFR_RNDN);
        mpfr_mul(r9419, r9415, r9414, MPFR_RNDN);
        mpfr_add(r9420, r9415, r9415, MPFR_RNDN);
        mpfr_mul(r9421, r9419, r9420, MPFR_RNDN);
        mpfr_neg(r9422, r9421, MPFR_RNDN);
        mpfr_fma(r9423, r9416, r9418, r9422, MPFR_RNDN);
        return mpfr_get_d(r9423, MPFR_RNDN);
}

static mpfr_t r9424, r9425, r9426, r9427, r9428, r9429, r9430, r9431, r9432, r9433;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9424);
        mpfr_init(r9425);
        mpfr_init(r9426);
        mpfr_init(r9427);
        mpfr_init(r9428);
        mpfr_init(r9429);
        mpfr_init(r9430);
        mpfr_init(r9431);
        mpfr_init(r9432);
        mpfr_init(r9433);
}

double f_dm(double x_re, double x_im) {
        mpfr_set_d(r9424, x_re, MPFR_RNDN);
        mpfr_set_d(r9425, x_im, MPFR_RNDN);
        mpfr_add(r9426, r9424, r9425, MPFR_RNDN);
        mpfr_sub(r9427, r9424, r9425, MPFR_RNDN);
        mpfr_mul(r9428, r9427, r9424, MPFR_RNDN);
        mpfr_mul(r9429, r9425, r9424, MPFR_RNDN);
        mpfr_add(r9430, r9425, r9425, MPFR_RNDN);
        mpfr_mul(r9431, r9429, r9430, MPFR_RNDN);
        mpfr_neg(r9432, r9431, MPFR_RNDN);
        mpfr_fma(r9433, r9426, r9428, r9432, MPFR_RNDN);
        return mpfr_get_d(r9433, MPFR_RNDN);
}

