#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 r26973 = g;
        float r26974 = 2;
        float r26975 = a;
        float r26976 = r26974 * r26975;
        float r26977 = r26973 / r26976;
        float r26978 = cbrt(r26977);
        return r26978;
}

double f_id(double g, double a) {
        double r26979 = g;
        double r26980 = 2;
        double r26981 = a;
        double r26982 = r26980 * r26981;
        double r26983 = r26979 / r26982;
        double r26984 = cbrt(r26983);
        return r26984;
}


double f_of(float g, float a) {
        float r26985 = g;
        float r26986 = cbrt(r26985);
        float r26987 = 1;
        float r26988 = 2;
        float r26989 = a;
        float r26990 = r26988 * r26989;
        float r26991 = r26987 / r26990;
        float r26992 = cbrt(r26991);
        float r26993 = r26986 * r26992;
        return r26993;
}

double f_od(double g, double a) {
        double r26994 = g;
        double r26995 = cbrt(r26994);
        double r26996 = 1;
        double r26997 = 2;
        double r26998 = a;
        double r26999 = r26997 * r26998;
        double r27000 = r26996 / r26999;
        double r27001 = cbrt(r27000);
        double r27002 = r26995 * r27001;
        return r27002;
}

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 r27003, r27004, r27005, r27006, r27007, r27008;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27003);
        mpfr_init_set_str(r27004, "2", 10, MPFR_RNDN);
        mpfr_init(r27005);
        mpfr_init(r27006);
        mpfr_init(r27007);
        mpfr_init(r27008);
}

double f_im(double g, double a) {
        mpfr_set_d(r27003, g, MPFR_RNDN);
        ;
        mpfr_set_d(r27005, a, MPFR_RNDN);
        mpfr_mul(r27006, r27004, r27005, MPFR_RNDN);
        mpfr_div(r27007, r27003, r27006, MPFR_RNDN);
        mpfr_cbrt(r27008, r27007, MPFR_RNDN);
        return mpfr_get_d(r27008, MPFR_RNDN);
}

static mpfr_t r27009, r27010, r27011, r27012, r27013, r27014, r27015, r27016, r27017;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27009);
        mpfr_init(r27010);
        mpfr_init_set_str(r27011, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27012, "2", 10, MPFR_RNDN);
        mpfr_init(r27013);
        mpfr_init(r27014);
        mpfr_init(r27015);
        mpfr_init(r27016);
        mpfr_init(r27017);
}

double f_fm(double g, double a) {
        mpfr_set_d(r27009, g, MPFR_RNDN);
        mpfr_cbrt(r27010, r27009, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27013, a, MPFR_RNDN);
        mpfr_mul(r27014, r27012, r27013, MPFR_RNDN);
        mpfr_div(r27015, r27011, r27014, MPFR_RNDN);
        mpfr_cbrt(r27016, r27015, MPFR_RNDN);
        mpfr_mul(r27017, r27010, r27016, MPFR_RNDN);
        return mpfr_get_d(r27017, MPFR_RNDN);
}

static mpfr_t r27018, r27019, r27020, r27021, r27022, r27023, r27024, r27025, r27026;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27018);
        mpfr_init(r27019);
        mpfr_init_set_str(r27020, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27021, "2", 10, MPFR_RNDN);
        mpfr_init(r27022);
        mpfr_init(r27023);
        mpfr_init(r27024);
        mpfr_init(r27025);
        mpfr_init(r27026);
}

double f_dm(double g, double a) {
        mpfr_set_d(r27018, g, MPFR_RNDN);
        mpfr_cbrt(r27019, r27018, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27022, a, MPFR_RNDN);
        mpfr_mul(r27023, r27021, r27022, MPFR_RNDN);
        mpfr_div(r27024, r27020, r27023, MPFR_RNDN);
        mpfr_cbrt(r27025, r27024, MPFR_RNDN);
        mpfr_mul(r27026, r27019, r27025, MPFR_RNDN);
        return mpfr_get_d(r27026, MPFR_RNDN);
}

