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

char *name = "2-ancestry mixing, zero discriminant";

double f_if(float g, float a) {
        float r26719 = g;
        float r26720 = 2;
        float r26721 = a;
        float r26722 = r26720 * r26721;
        float r26723 = r26719 / r26722;
        float r26724 = cbrt(r26723);
        return r26724;
}

double f_id(double g, double a) {
        double r26725 = g;
        double r26726 = 2;
        double r26727 = a;
        double r26728 = r26726 * r26727;
        double r26729 = r26725 / r26728;
        double r26730 = cbrt(r26729);
        return r26730;
}


double f_of(float g, float a) {
        float r26731 = g;
        float r26732 = cbrt(r26731);
        float r26733 = -1/2;
        float r26734 = cbrt(r26733);
        float r26735 = cbrt(r26734);
        float r26736 = r26735 * r26735;
        float r26737 = r26732 * r26736;
        float r26738 = r26737 * r26735;
        float r26739 = -1;
        float r26740 = a;
        float r26741 = r26739 / r26740;
        float r26742 = cbrt(r26741);
        float r26743 = r26738 * r26742;
        return r26743;
}

double f_od(double g, double a) {
        double r26744 = g;
        double r26745 = cbrt(r26744);
        double r26746 = -1/2;
        double r26747 = cbrt(r26746);
        double r26748 = cbrt(r26747);
        double r26749 = r26748 * r26748;
        double r26750 = r26745 * r26749;
        double r26751 = r26750 * r26748;
        double r26752 = -1;
        double r26753 = a;
        double r26754 = r26752 / r26753;
        double r26755 = cbrt(r26754);
        double r26756 = r26751 * r26755;
        return r26756;
}

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 r26757, r26758, r26759, r26760, r26761, r26762;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26757);
        mpfr_init_set_str(r26758, "2", 10, MPFR_RNDN);
        mpfr_init(r26759);
        mpfr_init(r26760);
        mpfr_init(r26761);
        mpfr_init(r26762);
}

double f_im(double g, double a) {
        mpfr_set_d(r26757, g, MPFR_RNDN);
        ;
        mpfr_set_d(r26759, a, MPFR_RNDN);
        mpfr_mul(r26760, r26758, r26759, MPFR_RNDN);
        mpfr_div(r26761, r26757, r26760, MPFR_RNDN);
        mpfr_cbrt(r26762, r26761, MPFR_RNDN);
        return mpfr_get_d(r26762, MPFR_RNDN);
}

static mpfr_t r26763, r26764, r26765, r26766, r26767, r26768, r26769, r26770, r26771, r26772, r26773, r26774, r26775;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26763);
        mpfr_init(r26764);
        mpfr_init_set_str(r26765, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r26766);
        mpfr_init(r26767);
        mpfr_init(r26768);
        mpfr_init(r26769);
        mpfr_init(r26770);
        mpfr_init_set_str(r26771, "-1", 10, MPFR_RNDN);
        mpfr_init(r26772);
        mpfr_init(r26773);
        mpfr_init(r26774);
        mpfr_init(r26775);
}

double f_fm(double g, double a) {
        mpfr_set_d(r26763, g, MPFR_RNDN);
        mpfr_cbrt(r26764, r26763, MPFR_RNDN);
        ;
        mpfr_cbrt(r26766, r26765, MPFR_RNDN);
        mpfr_cbrt(r26767, r26766, MPFR_RNDN);
        mpfr_mul(r26768, r26767, r26767, MPFR_RNDN);
        mpfr_mul(r26769, r26764, r26768, MPFR_RNDN);
        mpfr_mul(r26770, r26769, r26767, MPFR_RNDN);
        ;
        mpfr_set_d(r26772, a, MPFR_RNDN);
        mpfr_div(r26773, r26771, r26772, MPFR_RNDN);
        mpfr_cbrt(r26774, r26773, MPFR_RNDN);
        mpfr_mul(r26775, r26770, r26774, MPFR_RNDN);
        return mpfr_get_d(r26775, MPFR_RNDN);
}

static mpfr_t r26776, r26777, r26778, r26779, r26780, r26781, r26782, r26783, r26784, r26785, r26786, r26787, r26788;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26776);
        mpfr_init(r26777);
        mpfr_init_set_str(r26778, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r26779);
        mpfr_init(r26780);
        mpfr_init(r26781);
        mpfr_init(r26782);
        mpfr_init(r26783);
        mpfr_init_set_str(r26784, "-1", 10, MPFR_RNDN);
        mpfr_init(r26785);
        mpfr_init(r26786);
        mpfr_init(r26787);
        mpfr_init(r26788);
}

double f_dm(double g, double a) {
        mpfr_set_d(r26776, g, MPFR_RNDN);
        mpfr_cbrt(r26777, r26776, MPFR_RNDN);
        ;
        mpfr_cbrt(r26779, r26778, MPFR_RNDN);
        mpfr_cbrt(r26780, r26779, MPFR_RNDN);
        mpfr_mul(r26781, r26780, r26780, MPFR_RNDN);
        mpfr_mul(r26782, r26777, r26781, MPFR_RNDN);
        mpfr_mul(r26783, r26782, r26780, MPFR_RNDN);
        ;
        mpfr_set_d(r26785, a, MPFR_RNDN);
        mpfr_div(r26786, r26784, r26785, MPFR_RNDN);
        mpfr_cbrt(r26787, r26786, MPFR_RNDN);
        mpfr_mul(r26788, r26783, r26787, MPFR_RNDN);
        return mpfr_get_d(r26788, MPFR_RNDN);
}

