#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 r10742 = g;
        float r10743 = 2;
        float r10744 = a;
        float r10745 = r10743 * r10744;
        float r10746 = r10742 / r10745;
        float r10747 = cbrt(r10746);
        return r10747;
}

double f_id(double g, double a) {
        double r10748 = g;
        double r10749 = 2;
        double r10750 = a;
        double r10751 = r10749 * r10750;
        double r10752 = r10748 / r10751;
        double r10753 = cbrt(r10752);
        return r10753;
}


double f_of(float g, float a) {
        float r10754 = g;
        float r10755 = cbrt(r10754);
        float r10756 = 1;
        float r10757 = 2;
        float r10758 = a;
        float r10759 = r10757 * r10758;
        float r10760 = r10756 / r10759;
        float r10761 = cbrt(r10760);
        float r10762 = r10755 * r10761;
        return r10762;
}

double f_od(double g, double a) {
        double r10763 = g;
        double r10764 = cbrt(r10763);
        double r10765 = 1;
        double r10766 = 2;
        double r10767 = a;
        double r10768 = r10766 * r10767;
        double r10769 = r10765 / r10768;
        double r10770 = cbrt(r10769);
        double r10771 = r10764 * r10770;
        return r10771;
}

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 r10772, r10773, r10774, r10775, r10776, r10777;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10772);
        mpfr_init_set_str(r10773, "2", 10, MPFR_RNDN);
        mpfr_init(r10774);
        mpfr_init(r10775);
        mpfr_init(r10776);
        mpfr_init(r10777);
}

double f_im(double g, double a) {
        mpfr_set_d(r10772, g, MPFR_RNDN);
        ;
        mpfr_set_d(r10774, a, MPFR_RNDN);
        mpfr_mul(r10775, r10773, r10774, MPFR_RNDN);
        mpfr_div(r10776, r10772, r10775, MPFR_RNDN);
        mpfr_cbrt(r10777, r10776, MPFR_RNDN);
        return mpfr_get_d(r10777, MPFR_RNDN);
}

static mpfr_t r10778, r10779, r10780, r10781, r10782, r10783, r10784, r10785, r10786;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10778);
        mpfr_init(r10779);
        mpfr_init_set_str(r10780, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10781, "2", 10, MPFR_RNDN);
        mpfr_init(r10782);
        mpfr_init(r10783);
        mpfr_init(r10784);
        mpfr_init(r10785);
        mpfr_init(r10786);
}

double f_fm(double g, double a) {
        mpfr_set_d(r10778, g, MPFR_RNDN);
        mpfr_cbrt(r10779, r10778, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r10782, a, MPFR_RNDN);
        mpfr_mul(r10783, r10781, r10782, MPFR_RNDN);
        mpfr_div(r10784, r10780, r10783, MPFR_RNDN);
        mpfr_cbrt(r10785, r10784, MPFR_RNDN);
        mpfr_mul(r10786, r10779, r10785, MPFR_RNDN);
        return mpfr_get_d(r10786, MPFR_RNDN);
}

static mpfr_t r10787, r10788, r10789, r10790, r10791, r10792, r10793, r10794, r10795;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10787);
        mpfr_init(r10788);
        mpfr_init_set_str(r10789, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10790, "2", 10, MPFR_RNDN);
        mpfr_init(r10791);
        mpfr_init(r10792);
        mpfr_init(r10793);
        mpfr_init(r10794);
        mpfr_init(r10795);
}

double f_dm(double g, double a) {
        mpfr_set_d(r10787, g, MPFR_RNDN);
        mpfr_cbrt(r10788, r10787, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r10791, a, MPFR_RNDN);
        mpfr_mul(r10792, r10790, r10791, MPFR_RNDN);
        mpfr_div(r10793, r10789, r10792, MPFR_RNDN);
        mpfr_cbrt(r10794, r10793, MPFR_RNDN);
        mpfr_mul(r10795, r10788, r10794, MPFR_RNDN);
        return mpfr_get_d(r10795, MPFR_RNDN);
}

