#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 r10717 = g;
        float r10718 = 2;
        float r10719 = a;
        float r10720 = r10718 * r10719;
        float r10721 = r10717 / r10720;
        float r10722 = cbrt(r10721);
        return r10722;
}

double f_id(double g, double a) {
        double r10723 = g;
        double r10724 = 2;
        double r10725 = a;
        double r10726 = r10724 * r10725;
        double r10727 = r10723 / r10726;
        double r10728 = cbrt(r10727);
        return r10728;
}


double f_of(float g, float a) {
        float r10729 = -1;
        float r10730 = a;
        float r10731 = r10729 / r10730;
        float r10732 = cbrt(r10731);
        float r10733 = -1/2;
        float r10734 = g;
        float r10735 = r10733 * r10734;
        float r10736 = cbrt(r10735);
        float r10737 = r10732 * r10736;
        return r10737;
}

double f_od(double g, double a) {
        double r10738 = -1;
        double r10739 = a;
        double r10740 = r10738 / r10739;
        double r10741 = cbrt(r10740);
        double r10742 = -1/2;
        double r10743 = g;
        double r10744 = r10742 * r10743;
        double r10745 = cbrt(r10744);
        double r10746 = r10741 * r10745;
        return r10746;
}

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 r10747, r10748, r10749, r10750, r10751, r10752;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r10747);
        mpfr_init_set_str(r10748, "2", 10, MPFR_RNDN);
        mpfr_init(r10749);
        mpfr_init(r10750);
        mpfr_init(r10751);
        mpfr_init(r10752);
}

double f_im(double g, double a) {
        mpfr_set_d(r10747, g, MPFR_RNDN);
        ;
        mpfr_set_d(r10749, a, MPFR_RNDN);
        mpfr_mul(r10750, r10748, r10749, MPFR_RNDN);
        mpfr_div(r10751, r10747, r10750, MPFR_RNDN);
        mpfr_cbrt(r10752, r10751, MPFR_RNDN);
        return mpfr_get_d(r10752, MPFR_RNDN);
}

static mpfr_t r10753, r10754, r10755, r10756, r10757, r10758, r10759, r10760, r10761;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10753, "-1", 10, MPFR_RNDN);
        mpfr_init(r10754);
        mpfr_init(r10755);
        mpfr_init(r10756);
        mpfr_init_set_str(r10757, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r10758);
        mpfr_init(r10759);
        mpfr_init(r10760);
        mpfr_init(r10761);
}

double f_fm(double g, double a) {
        ;
        mpfr_set_d(r10754, a, MPFR_RNDN);
        mpfr_div(r10755, r10753, r10754, MPFR_RNDN);
        mpfr_cbrt(r10756, r10755, MPFR_RNDN);
        ;
        mpfr_set_d(r10758, g, MPFR_RNDN);
        mpfr_mul(r10759, r10757, r10758, MPFR_RNDN);
        mpfr_cbrt(r10760, r10759, MPFR_RNDN);
        mpfr_mul(r10761, r10756, r10760, MPFR_RNDN);
        return mpfr_get_d(r10761, MPFR_RNDN);
}

static mpfr_t r10762, r10763, r10764, r10765, r10766, r10767, r10768, r10769, r10770;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10762, "-1", 10, MPFR_RNDN);
        mpfr_init(r10763);
        mpfr_init(r10764);
        mpfr_init(r10765);
        mpfr_init_set_str(r10766, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r10767);
        mpfr_init(r10768);
        mpfr_init(r10769);
        mpfr_init(r10770);
}

double f_dm(double g, double a) {
        ;
        mpfr_set_d(r10763, a, MPFR_RNDN);
        mpfr_div(r10764, r10762, r10763, MPFR_RNDN);
        mpfr_cbrt(r10765, r10764, MPFR_RNDN);
        ;
        mpfr_set_d(r10767, g, MPFR_RNDN);
        mpfr_mul(r10768, r10766, r10767, MPFR_RNDN);
        mpfr_cbrt(r10769, r10768, MPFR_RNDN);
        mpfr_mul(r10770, r10765, r10769, MPFR_RNDN);
        return mpfr_get_d(r10770, MPFR_RNDN);
}

