#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 r36976 = g;
        float r36977 = 2;
        float r36978 = a;
        float r36979 = r36977 * r36978;
        float r36980 = r36976 / r36979;
        float r36981 = cbrt(r36980);
        return r36981;
}

double f_id(double g, double a) {
        double r36982 = g;
        double r36983 = 2;
        double r36984 = a;
        double r36985 = r36983 * r36984;
        double r36986 = r36982 / r36985;
        double r36987 = cbrt(r36986);
        return r36987;
}


double f_of(float g, float a) {
        float r36988 = 1;
        float r36989 = 2;
        float r36990 = a;
        float r36991 = r36989 * r36990;
        float r36992 = cbrt(r36991);
        float r36993 = g;
        float r36994 = cbrt(r36993);
        float r36995 = r36992 / r36994;
        float r36996 = r36988 / r36995;
        return r36996;
}

double f_od(double g, double a) {
        double r36997 = 1;
        double r36998 = 2;
        double r36999 = a;
        double r37000 = r36998 * r36999;
        double r37001 = cbrt(r37000);
        double r37002 = g;
        double r37003 = cbrt(r37002);
        double r37004 = r37001 / r37003;
        double r37005 = r36997 / r37004;
        return r37005;
}

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 r37006, r37007, r37008, r37009, r37010, r37011;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r37006);
        mpfr_init_set_str(r37007, "2", 10, MPFR_RNDN);
        mpfr_init(r37008);
        mpfr_init(r37009);
        mpfr_init(r37010);
        mpfr_init(r37011);
}

double f_im(double g, double a) {
        mpfr_set_d(r37006, g, MPFR_RNDN);
        ;
        mpfr_set_d(r37008, a, MPFR_RNDN);
        mpfr_mul(r37009, r37007, r37008, MPFR_RNDN);
        mpfr_div(r37010, r37006, r37009, MPFR_RNDN);
        mpfr_cbrt(r37011, r37010, MPFR_RNDN);
        return mpfr_get_d(r37011, MPFR_RNDN);
}

static mpfr_t r37012, r37013, r37014, r37015, r37016, r37017, r37018, r37019, r37020;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r37012, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37013, "2", 10, MPFR_RNDN);
        mpfr_init(r37014);
        mpfr_init(r37015);
        mpfr_init(r37016);
        mpfr_init(r37017);
        mpfr_init(r37018);
        mpfr_init(r37019);
        mpfr_init(r37020);
}

double f_fm(double g, double a) {
        ;
        ;
        mpfr_set_d(r37014, a, MPFR_RNDN);
        mpfr_mul(r37015, r37013, r37014, MPFR_RNDN);
        mpfr_cbrt(r37016, r37015, MPFR_RNDN);
        mpfr_set_d(r37017, g, MPFR_RNDN);
        mpfr_cbrt(r37018, r37017, MPFR_RNDN);
        mpfr_div(r37019, r37016, r37018, MPFR_RNDN);
        mpfr_div(r37020, r37012, r37019, MPFR_RNDN);
        return mpfr_get_d(r37020, MPFR_RNDN);
}

static mpfr_t r37021, r37022, r37023, r37024, r37025, r37026, r37027, r37028, r37029;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r37021, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37022, "2", 10, MPFR_RNDN);
        mpfr_init(r37023);
        mpfr_init(r37024);
        mpfr_init(r37025);
        mpfr_init(r37026);
        mpfr_init(r37027);
        mpfr_init(r37028);
        mpfr_init(r37029);
}

double f_dm(double g, double a) {
        ;
        ;
        mpfr_set_d(r37023, a, MPFR_RNDN);
        mpfr_mul(r37024, r37022, r37023, MPFR_RNDN);
        mpfr_cbrt(r37025, r37024, MPFR_RNDN);
        mpfr_set_d(r37026, g, MPFR_RNDN);
        mpfr_cbrt(r37027, r37026, MPFR_RNDN);
        mpfr_div(r37028, r37025, r37027, MPFR_RNDN);
        mpfr_div(r37029, r37021, r37028, MPFR_RNDN);
        return mpfr_get_d(r37029, MPFR_RNDN);
}

