#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 r27196 = g;
        float r27197 = 2;
        float r27198 = a;
        float r27199 = r27197 * r27198;
        float r27200 = r27196 / r27199;
        float r27201 = cbrt(r27200);
        return r27201;
}

double f_id(double g, double a) {
        double r27202 = g;
        double r27203 = 2;
        double r27204 = a;
        double r27205 = r27203 * r27204;
        double r27206 = r27202 / r27205;
        double r27207 = cbrt(r27206);
        return r27207;
}


double f_of(float g, float a) {
        float r27208 = g;
        float r27209 = cbrt(r27208);
        float r27210 = 1;
        float r27211 = 2;
        float r27212 = a;
        float r27213 = r27211 * r27212;
        float r27214 = r27210 / r27213;
        float r27215 = cbrt(r27214);
        float r27216 = r27209 * r27215;
        return r27216;
}

double f_od(double g, double a) {
        double r27217 = g;
        double r27218 = cbrt(r27217);
        double r27219 = 1;
        double r27220 = 2;
        double r27221 = a;
        double r27222 = r27220 * r27221;
        double r27223 = r27219 / r27222;
        double r27224 = cbrt(r27223);
        double r27225 = r27218 * r27224;
        return r27225;
}

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 r27226, r27227, r27228, r27229, r27230, r27231;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27226);
        mpfr_init_set_str(r27227, "2", 10, MPFR_RNDN);
        mpfr_init(r27228);
        mpfr_init(r27229);
        mpfr_init(r27230);
        mpfr_init(r27231);
}

double f_im(double g, double a) {
        mpfr_set_d(r27226, g, MPFR_RNDN);
        ;
        mpfr_set_d(r27228, a, MPFR_RNDN);
        mpfr_mul(r27229, r27227, r27228, MPFR_RNDN);
        mpfr_div(r27230, r27226, r27229, MPFR_RNDN);
        mpfr_cbrt(r27231, r27230, MPFR_RNDN);
        return mpfr_get_d(r27231, MPFR_RNDN);
}

static mpfr_t r27232, r27233, r27234, r27235, r27236, r27237, r27238, r27239, r27240;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27232);
        mpfr_init(r27233);
        mpfr_init_set_str(r27234, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27235, "2", 10, MPFR_RNDN);
        mpfr_init(r27236);
        mpfr_init(r27237);
        mpfr_init(r27238);
        mpfr_init(r27239);
        mpfr_init(r27240);
}

double f_fm(double g, double a) {
        mpfr_set_d(r27232, g, MPFR_RNDN);
        mpfr_cbrt(r27233, r27232, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27236, a, MPFR_RNDN);
        mpfr_mul(r27237, r27235, r27236, MPFR_RNDN);
        mpfr_div(r27238, r27234, r27237, MPFR_RNDN);
        mpfr_cbrt(r27239, r27238, MPFR_RNDN);
        mpfr_mul(r27240, r27233, r27239, MPFR_RNDN);
        return mpfr_get_d(r27240, MPFR_RNDN);
}

static mpfr_t r27241, r27242, r27243, r27244, r27245, r27246, r27247, r27248, r27249;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27241);
        mpfr_init(r27242);
        mpfr_init_set_str(r27243, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27244, "2", 10, MPFR_RNDN);
        mpfr_init(r27245);
        mpfr_init(r27246);
        mpfr_init(r27247);
        mpfr_init(r27248);
        mpfr_init(r27249);
}

double f_dm(double g, double a) {
        mpfr_set_d(r27241, g, MPFR_RNDN);
        mpfr_cbrt(r27242, r27241, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27245, a, MPFR_RNDN);
        mpfr_mul(r27246, r27244, r27245, MPFR_RNDN);
        mpfr_div(r27247, r27243, r27246, MPFR_RNDN);
        mpfr_cbrt(r27248, r27247, MPFR_RNDN);
        mpfr_mul(r27249, r27242, r27248, MPFR_RNDN);
        return mpfr_get_d(r27249, MPFR_RNDN);
}

