#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 r12208 = x_re;
        float r12209 = r12208 * r12208;
        float r12210 = x_im;
        float r12211 = r12210 * r12210;
        float r12212 = r12209 - r12211;
        float r12213 = r12212 * r12210;
        float r12214 = r12208 * r12210;
        float r12215 = r12210 * r12208;
        float r12216 = r12214 + r12215;
        float r12217 = r12216 * r12208;
        float r12218 = r12213 + r12217;
        return r12218;
}

double f_id(double x_re, double x_im) {
        double r12219 = x_re;
        double r12220 = r12219 * r12219;
        double r12221 = x_im;
        double r12222 = r12221 * r12221;
        double r12223 = r12220 - r12222;
        double r12224 = r12223 * r12221;
        double r12225 = r12219 * r12221;
        double r12226 = r12221 * r12219;
        double r12227 = r12225 + r12226;
        double r12228 = r12227 * r12219;
        double r12229 = r12224 + r12228;
        return r12229;
}


double f_of(float x_re, float x_im) {
        float r12230 = x_re;
        float r12231 = x_im;
        float r12232 = r12230 - r12231;
        float r12233 = r12232 * r12231;
        float r12234 = r12231 + r12230;
        float r12235 = r12233 * r12234;
        float r12236 = r12230 * r12231;
        float r12237 = r12236 + r12236;
        float r12238 = r12230 * r12237;
        float r12239 = r12235 + r12238;
        return r12239;
}

double f_od(double x_re, double x_im) {
        double r12240 = x_re;
        double r12241 = x_im;
        double r12242 = r12240 - r12241;
        double r12243 = r12242 * r12241;
        double r12244 = r12241 + r12240;
        double r12245 = r12243 * r12244;
        double r12246 = r12240 * r12241;
        double r12247 = r12246 + r12246;
        double r12248 = r12240 * r12247;
        double r12249 = r12245 + r12248;
        return r12249;
}

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 r12250, r12251, r12252, r12253, r12254, r12255, r12256, r12257, r12258, r12259, r12260;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r12250);
        mpfr_init(r12251);
        mpfr_init(r12252);
        mpfr_init(r12253);
        mpfr_init(r12254);
        mpfr_init(r12255);
        mpfr_init(r12256);
        mpfr_init(r12257);
        mpfr_init(r12258);
        mpfr_init(r12259);
        mpfr_init(r12260);
}

double f_im(double x_re, double x_im) {
        mpfr_set_d(r12250, x_re, MPFR_RNDN);
        mpfr_mul(r12251, r12250, r12250, MPFR_RNDN);
        mpfr_set_d(r12252, x_im, MPFR_RNDN);
        mpfr_mul(r12253, r12252, r12252, MPFR_RNDN);
        mpfr_sub(r12254, r12251, r12253, MPFR_RNDN);
        mpfr_mul(r12255, r12254, r12252, MPFR_RNDN);
        mpfr_mul(r12256, r12250, r12252, MPFR_RNDN);
        mpfr_mul(r12257, r12252, r12250, MPFR_RNDN);
        mpfr_add(r12258, r12256, r12257, MPFR_RNDN);
        mpfr_mul(r12259, r12258, r12250, MPFR_RNDN);
        mpfr_add(r12260, r12255, r12259, MPFR_RNDN);
        return mpfr_get_d(r12260, MPFR_RNDN);
}

static mpfr_t r12261, r12262, r12263, r12264, r12265, r12266, r12267, r12268, r12269, r12270;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r12261);
        mpfr_init(r12262);
        mpfr_init(r12263);
        mpfr_init(r12264);
        mpfr_init(r12265);
        mpfr_init(r12266);
        mpfr_init(r12267);
        mpfr_init(r12268);
        mpfr_init(r12269);
        mpfr_init(r12270);
}

double f_fm(double x_re, double x_im) {
        mpfr_set_d(r12261, x_re, MPFR_RNDN);
        mpfr_set_d(r12262, x_im, MPFR_RNDN);
        mpfr_sub(r12263, r12261, r12262, MPFR_RNDN);
        mpfr_mul(r12264, r12263, r12262, MPFR_RNDN);
        mpfr_add(r12265, r12262, r12261, MPFR_RNDN);
        mpfr_mul(r12266, r12264, r12265, MPFR_RNDN);
        mpfr_mul(r12267, r12261, r12262, MPFR_RNDN);
        mpfr_add(r12268, r12267, r12267, MPFR_RNDN);
        mpfr_mul(r12269, r12261, r12268, MPFR_RNDN);
        mpfr_add(r12270, r12266, r12269, MPFR_RNDN);
        return mpfr_get_d(r12270, MPFR_RNDN);
}

static mpfr_t r12271, r12272, r12273, r12274, r12275, r12276, r12277, r12278, r12279, r12280;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r12271);
        mpfr_init(r12272);
        mpfr_init(r12273);
        mpfr_init(r12274);
        mpfr_init(r12275);
        mpfr_init(r12276);
        mpfr_init(r12277);
        mpfr_init(r12278);
        mpfr_init(r12279);
        mpfr_init(r12280);
}

double f_dm(double x_re, double x_im) {
        mpfr_set_d(r12271, x_re, MPFR_RNDN);
        mpfr_set_d(r12272, x_im, MPFR_RNDN);
        mpfr_sub(r12273, r12271, r12272, MPFR_RNDN);
        mpfr_mul(r12274, r12273, r12272, MPFR_RNDN);
        mpfr_add(r12275, r12272, r12271, MPFR_RNDN);
        mpfr_mul(r12276, r12274, r12275, MPFR_RNDN);
        mpfr_mul(r12277, r12271, r12272, MPFR_RNDN);
        mpfr_add(r12278, r12277, r12277, MPFR_RNDN);
        mpfr_mul(r12279, r12271, r12278, MPFR_RNDN);
        mpfr_add(r12280, r12276, r12279, MPFR_RNDN);
        return mpfr_get_d(r12280, MPFR_RNDN);
}

