#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 r26952 = g;
        float r26953 = 2;
        float r26954 = a;
        float r26955 = r26953 * r26954;
        float r26956 = r26952 / r26955;
        float r26957 = cbrt(r26956);
        return r26957;
}

double f_id(double g, double a) {
        double r26958 = g;
        double r26959 = 2;
        double r26960 = a;
        double r26961 = r26959 * r26960;
        double r26962 = r26958 / r26961;
        double r26963 = cbrt(r26962);
        return r26963;
}


double f_of(float g, float a) {
        float r26964 = 1;
        float r26965 = g;
        float r26966 = r26964 / r26965;
        float r26967 = cbrt(r26966);
        float r26968 = r26964 / r26967;
        float r26969 = 2;
        float r26970 = a;
        float r26971 = r26969 * r26970;
        float r26972 = cbrt(r26971);
        float r26973 = r26968 / r26972;
        return r26973;
}

double f_od(double g, double a) {
        double r26974 = 1;
        double r26975 = g;
        double r26976 = r26974 / r26975;
        double r26977 = cbrt(r26976);
        double r26978 = r26974 / r26977;
        double r26979 = 2;
        double r26980 = a;
        double r26981 = r26979 * r26980;
        double r26982 = cbrt(r26981);
        double r26983 = r26978 / r26982;
        return r26983;
}

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 r26984, r26985, r26986, r26987, r26988, r26989;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26984);
        mpfr_init_set_str(r26985, "2", 10, MPFR_RNDN);
        mpfr_init(r26986);
        mpfr_init(r26987);
        mpfr_init(r26988);
        mpfr_init(r26989);
}

double f_im(double g, double a) {
        mpfr_set_d(r26984, g, MPFR_RNDN);
        ;
        mpfr_set_d(r26986, a, MPFR_RNDN);
        mpfr_mul(r26987, r26985, r26986, MPFR_RNDN);
        mpfr_div(r26988, r26984, r26987, MPFR_RNDN);
        mpfr_cbrt(r26989, r26988, MPFR_RNDN);
        return mpfr_get_d(r26989, MPFR_RNDN);
}

static mpfr_t r26990, r26991, r26992, r26993, r26994, r26995, r26996, r26997, r26998, r26999;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26990, "1", 10, MPFR_RNDN);
        mpfr_init(r26991);
        mpfr_init(r26992);
        mpfr_init(r26993);
        mpfr_init(r26994);
        mpfr_init_set_str(r26995, "2", 10, MPFR_RNDN);
        mpfr_init(r26996);
        mpfr_init(r26997);
        mpfr_init(r26998);
        mpfr_init(r26999);
}

double f_fm(double g, double a) {
        ;
        mpfr_set_d(r26991, g, MPFR_RNDN);
        mpfr_div(r26992, r26990, r26991, MPFR_RNDN);
        mpfr_cbrt(r26993, r26992, MPFR_RNDN);
        mpfr_div(r26994, r26990, r26993, MPFR_RNDN);
        ;
        mpfr_set_d(r26996, a, MPFR_RNDN);
        mpfr_mul(r26997, r26995, r26996, MPFR_RNDN);
        mpfr_cbrt(r26998, r26997, MPFR_RNDN);
        mpfr_div(r26999, r26994, r26998, MPFR_RNDN);
        return mpfr_get_d(r26999, MPFR_RNDN);
}

static mpfr_t r27000, r27001, r27002, r27003, r27004, r27005, r27006, r27007, r27008, r27009;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27000, "1", 10, MPFR_RNDN);
        mpfr_init(r27001);
        mpfr_init(r27002);
        mpfr_init(r27003);
        mpfr_init(r27004);
        mpfr_init_set_str(r27005, "2", 10, MPFR_RNDN);
        mpfr_init(r27006);
        mpfr_init(r27007);
        mpfr_init(r27008);
        mpfr_init(r27009);
}

double f_dm(double g, double a) {
        ;
        mpfr_set_d(r27001, g, MPFR_RNDN);
        mpfr_div(r27002, r27000, r27001, MPFR_RNDN);
        mpfr_cbrt(r27003, r27002, MPFR_RNDN);
        mpfr_div(r27004, r27000, r27003, MPFR_RNDN);
        ;
        mpfr_set_d(r27006, a, MPFR_RNDN);
        mpfr_mul(r27007, r27005, r27006, MPFR_RNDN);
        mpfr_cbrt(r27008, r27007, MPFR_RNDN);
        mpfr_div(r27009, r27004, r27008, MPFR_RNDN);
        return mpfr_get_d(r27009, MPFR_RNDN);
}

