#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 r12135 = x_re;
        float r12136 = r12135 * r12135;
        float r12137 = x_im;
        float r12138 = r12137 * r12137;
        float r12139 = r12136 - r12138;
        float r12140 = r12139 * r12135;
        float r12141 = r12135 * r12137;
        float r12142 = r12137 * r12135;
        float r12143 = r12141 + r12142;
        float r12144 = r12143 * r12137;
        float r12145 = r12140 - r12144;
        return r12145;
}

double f_id(double x_re, double x_im) {
        double r12146 = x_re;
        double r12147 = r12146 * r12146;
        double r12148 = x_im;
        double r12149 = r12148 * r12148;
        double r12150 = r12147 - r12149;
        double r12151 = r12150 * r12146;
        double r12152 = r12146 * r12148;
        double r12153 = r12148 * r12146;
        double r12154 = r12152 + r12153;
        double r12155 = r12154 * r12148;
        double r12156 = r12151 - r12155;
        return r12156;
}


double f_of(float x_re, float x_im) {
        float r12157 = x_re;
        float r12158 = x_im;
        float r12159 = r12157 - r12158;
        float r12160 = r12159 * r12157;
        float r12161 = r12158 + r12157;
        float r12162 = r12160 * r12161;
        float r12163 = r12157 * r12158;
        float r12164 = r12163 + r12163;
        float r12165 = r12164 * r12158;
        float r12166 = r12162 - r12165;
        return r12166;
}

double f_od(double x_re, double x_im) {
        double r12167 = x_re;
        double r12168 = x_im;
        double r12169 = r12167 - r12168;
        double r12170 = r12169 * r12167;
        double r12171 = r12168 + r12167;
        double r12172 = r12170 * r12171;
        double r12173 = r12167 * r12168;
        double r12174 = r12173 + r12173;
        double r12175 = r12174 * r12168;
        double r12176 = r12172 - r12175;
        return r12176;
}

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 r12177, r12178, r12179, r12180, r12181, r12182, r12183, r12184, r12185, r12186, r12187;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r12177);
        mpfr_init(r12178);
        mpfr_init(r12179);
        mpfr_init(r12180);
        mpfr_init(r12181);
        mpfr_init(r12182);
        mpfr_init(r12183);
        mpfr_init(r12184);
        mpfr_init(r12185);
        mpfr_init(r12186);
        mpfr_init(r12187);
}

double f_im(double x_re, double x_im) {
        mpfr_set_d(r12177, x_re, MPFR_RNDN);
        mpfr_mul(r12178, r12177, r12177, MPFR_RNDN);
        mpfr_set_d(r12179, x_im, MPFR_RNDN);
        mpfr_mul(r12180, r12179, r12179, MPFR_RNDN);
        mpfr_sub(r12181, r12178, r12180, MPFR_RNDN);
        mpfr_mul(r12182, r12181, r12177, MPFR_RNDN);
        mpfr_mul(r12183, r12177, r12179, MPFR_RNDN);
        mpfr_mul(r12184, r12179, r12177, MPFR_RNDN);
        mpfr_add(r12185, r12183, r12184, MPFR_RNDN);
        mpfr_mul(r12186, r12185, r12179, MPFR_RNDN);
        mpfr_sub(r12187, r12182, r12186, MPFR_RNDN);
        return mpfr_get_d(r12187, MPFR_RNDN);
}

static mpfr_t r12188, r12189, r12190, r12191, r12192, r12193, r12194, r12195, r12196, r12197;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r12188);
        mpfr_init(r12189);
        mpfr_init(r12190);
        mpfr_init(r12191);
        mpfr_init(r12192);
        mpfr_init(r12193);
        mpfr_init(r12194);
        mpfr_init(r12195);
        mpfr_init(r12196);
        mpfr_init(r12197);
}

double f_fm(double x_re, double x_im) {
        mpfr_set_d(r12188, x_re, MPFR_RNDN);
        mpfr_set_d(r12189, x_im, MPFR_RNDN);
        mpfr_sub(r12190, r12188, r12189, MPFR_RNDN);
        mpfr_mul(r12191, r12190, r12188, MPFR_RNDN);
        mpfr_add(r12192, r12189, r12188, MPFR_RNDN);
        mpfr_mul(r12193, r12191, r12192, MPFR_RNDN);
        mpfr_mul(r12194, r12188, r12189, MPFR_RNDN);
        mpfr_add(r12195, r12194, r12194, MPFR_RNDN);
        mpfr_mul(r12196, r12195, r12189, MPFR_RNDN);
        mpfr_sub(r12197, r12193, r12196, MPFR_RNDN);
        return mpfr_get_d(r12197, MPFR_RNDN);
}

static mpfr_t r12198, r12199, r12200, r12201, r12202, r12203, r12204, r12205, r12206, r12207;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r12198);
        mpfr_init(r12199);
        mpfr_init(r12200);
        mpfr_init(r12201);
        mpfr_init(r12202);
        mpfr_init(r12203);
        mpfr_init(r12204);
        mpfr_init(r12205);
        mpfr_init(r12206);
        mpfr_init(r12207);
}

double f_dm(double x_re, double x_im) {
        mpfr_set_d(r12198, x_re, MPFR_RNDN);
        mpfr_set_d(r12199, x_im, MPFR_RNDN);
        mpfr_sub(r12200, r12198, r12199, MPFR_RNDN);
        mpfr_mul(r12201, r12200, r12198, MPFR_RNDN);
        mpfr_add(r12202, r12199, r12198, MPFR_RNDN);
        mpfr_mul(r12203, r12201, r12202, MPFR_RNDN);
        mpfr_mul(r12204, r12198, r12199, MPFR_RNDN);
        mpfr_add(r12205, r12204, r12204, MPFR_RNDN);
        mpfr_mul(r12206, r12205, r12199, MPFR_RNDN);
        mpfr_sub(r12207, r12203, r12206, MPFR_RNDN);
        return mpfr_get_d(r12207, MPFR_RNDN);
}

