#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "2-ancestry mixing, positive discriminant";

double f_if(float g, float h, float a) {
        float r26972 = 1;
        float r26973 = 2;
        float r26974 = a;
        float r26975 = r26973 * r26974;
        float r26976 = r26972 / r26975;
        float r26977 = g;
        float r26978 = -r26977;
        float r26979 = r26977 * r26977;
        float r26980 = h;
        float r26981 = r26980 * r26980;
        float r26982 = r26979 - r26981;
        float r26983 = sqrt(r26982);
        float r26984 = r26978 + r26983;
        float r26985 = r26976 * r26984;
        float r26986 = cbrt(r26985);
        float r26987 = r26978 - r26983;
        float r26988 = r26976 * r26987;
        float r26989 = cbrt(r26988);
        float r26990 = r26986 + r26989;
        return r26990;
}

double f_id(double g, double h, double a) {
        double r26991 = 1;
        double r26992 = 2;
        double r26993 = a;
        double r26994 = r26992 * r26993;
        double r26995 = r26991 / r26994;
        double r26996 = g;
        double r26997 = -r26996;
        double r26998 = r26996 * r26996;
        double r26999 = h;
        double r27000 = r26999 * r26999;
        double r27001 = r26998 - r27000;
        double r27002 = sqrt(r27001);
        double r27003 = r26997 + r27002;
        double r27004 = r26995 * r27003;
        double r27005 = cbrt(r27004);
        double r27006 = r26997 - r27002;
        double r27007 = r26995 * r27006;
        double r27008 = cbrt(r27007);
        double r27009 = r27005 + r27008;
        return r27009;
}


double f_of(float g, float h, float a) {
        float r27010 = 1;
        float r27011 = 2;
        float r27012 = a;
        float r27013 = r27011 * r27012;
        float r27014 = r27010 / r27013;
        float r27015 = g;
        float r27016 = h;
        float r27017 = r27015 - r27016;
        float r27018 = r27015 + r27016;
        float r27019 = r27017 * r27018;
        float r27020 = sqrt(r27019);
        float r27021 = r27020 - r27015;
        float r27022 = cbrt(r27021);
        float r27023 = r27022 * r27022;
        float r27024 = r27015 * r27015;
        float r27025 = r27016 * r27016;
        float r27026 = r27024 - r27025;
        float r27027 = sqrt(r27026);
        float r27028 = r27027 - r27015;
        float r27029 = cbrt(r27028);
        float r27030 = r27023 * r27029;
        float r27031 = r27014 * r27030;
        float r27032 = cbrt(r27031);
        float r27033 = -r27015;
        float r27034 = r27033 - r27027;
        float r27035 = r27014 * r27034;
        float r27036 = cbrt(r27035);
        float r27037 = r27032 + r27036;
        return r27037;
}

double f_od(double g, double h, double a) {
        double r27038 = 1;
        double r27039 = 2;
        double r27040 = a;
        double r27041 = r27039 * r27040;
        double r27042 = r27038 / r27041;
        double r27043 = g;
        double r27044 = h;
        double r27045 = r27043 - r27044;
        double r27046 = r27043 + r27044;
        double r27047 = r27045 * r27046;
        double r27048 = sqrt(r27047);
        double r27049 = r27048 - r27043;
        double r27050 = cbrt(r27049);
        double r27051 = r27050 * r27050;
        double r27052 = r27043 * r27043;
        double r27053 = r27044 * r27044;
        double r27054 = r27052 - r27053;
        double r27055 = sqrt(r27054);
        double r27056 = r27055 - r27043;
        double r27057 = cbrt(r27056);
        double r27058 = r27051 * r27057;
        double r27059 = r27042 * r27058;
        double r27060 = cbrt(r27059);
        double r27061 = -r27043;
        double r27062 = r27061 - r27055;
        double r27063 = r27042 * r27062;
        double r27064 = cbrt(r27063);
        double r27065 = r27060 + r27064;
        return r27065;
}

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 r27066, r27067, r27068, r27069, r27070, r27071, r27072, r27073, r27074, r27075, r27076, r27077, r27078, r27079, r27080, r27081, r27082, r27083, r27084;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27066, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27067, "2", 10, MPFR_RNDN);
        mpfr_init(r27068);
        mpfr_init(r27069);
        mpfr_init(r27070);
        mpfr_init(r27071);
        mpfr_init(r27072);
        mpfr_init(r27073);
        mpfr_init(r27074);
        mpfr_init(r27075);
        mpfr_init(r27076);
        mpfr_init(r27077);
        mpfr_init(r27078);
        mpfr_init(r27079);
        mpfr_init(r27080);
        mpfr_init(r27081);
        mpfr_init(r27082);
        mpfr_init(r27083);
        mpfr_init(r27084);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r27068, a, MPFR_RNDN);
        mpfr_mul(r27069, r27067, r27068, MPFR_RNDN);
        mpfr_div(r27070, r27066, r27069, MPFR_RNDN);
        mpfr_set_d(r27071, g, MPFR_RNDN);
        mpfr_neg(r27072, r27071, MPFR_RNDN);
        mpfr_mul(r27073, r27071, r27071, MPFR_RNDN);
        mpfr_set_d(r27074, h, MPFR_RNDN);
        mpfr_mul(r27075, r27074, r27074, MPFR_RNDN);
        mpfr_sub(r27076, r27073, r27075, MPFR_RNDN);
        mpfr_sqrt(r27077, r27076, MPFR_RNDN);
        mpfr_add(r27078, r27072, r27077, MPFR_RNDN);
        mpfr_mul(r27079, r27070, r27078, MPFR_RNDN);
        mpfr_cbrt(r27080, r27079, MPFR_RNDN);
        mpfr_sub(r27081, r27072, r27077, MPFR_RNDN);
        mpfr_mul(r27082, r27070, r27081, MPFR_RNDN);
        mpfr_cbrt(r27083, r27082, MPFR_RNDN);
        mpfr_add(r27084, r27080, r27083, MPFR_RNDN);
        return mpfr_get_d(r27084, MPFR_RNDN);
}

static mpfr_t r27085, r27086, r27087, r27088, r27089, r27090, r27091, r27092, r27093, r27094, r27095, r27096, r27097, r27098, r27099, r27100, r27101, r27102, r27103, r27104, r27105, r27106, r27107, r27108, r27109, r27110, r27111, r27112;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27085, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27086, "2", 10, MPFR_RNDN);
        mpfr_init(r27087);
        mpfr_init(r27088);
        mpfr_init(r27089);
        mpfr_init(r27090);
        mpfr_init(r27091);
        mpfr_init(r27092);
        mpfr_init(r27093);
        mpfr_init(r27094);
        mpfr_init(r27095);
        mpfr_init(r27096);
        mpfr_init(r27097);
        mpfr_init(r27098);
        mpfr_init(r27099);
        mpfr_init(r27100);
        mpfr_init(r27101);
        mpfr_init(r27102);
        mpfr_init(r27103);
        mpfr_init(r27104);
        mpfr_init(r27105);
        mpfr_init(r27106);
        mpfr_init(r27107);
        mpfr_init(r27108);
        mpfr_init(r27109);
        mpfr_init(r27110);
        mpfr_init(r27111);
        mpfr_init(r27112);
}

double f_fm(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r27087, a, MPFR_RNDN);
        mpfr_mul(r27088, r27086, r27087, MPFR_RNDN);
        mpfr_div(r27089, r27085, r27088, MPFR_RNDN);
        mpfr_set_d(r27090, g, MPFR_RNDN);
        mpfr_set_d(r27091, h, MPFR_RNDN);
        mpfr_sub(r27092, r27090, r27091, MPFR_RNDN);
        mpfr_add(r27093, r27090, r27091, MPFR_RNDN);
        mpfr_mul(r27094, r27092, r27093, MPFR_RNDN);
        mpfr_sqrt(r27095, r27094, MPFR_RNDN);
        mpfr_sub(r27096, r27095, r27090, MPFR_RNDN);
        mpfr_cbrt(r27097, r27096, MPFR_RNDN);
        mpfr_mul(r27098, r27097, r27097, MPFR_RNDN);
        mpfr_mul(r27099, r27090, r27090, MPFR_RNDN);
        mpfr_mul(r27100, r27091, r27091, MPFR_RNDN);
        mpfr_sub(r27101, r27099, r27100, MPFR_RNDN);
        mpfr_sqrt(r27102, r27101, MPFR_RNDN);
        mpfr_sub(r27103, r27102, r27090, MPFR_RNDN);
        mpfr_cbrt(r27104, r27103, MPFR_RNDN);
        mpfr_mul(r27105, r27098, r27104, MPFR_RNDN);
        mpfr_mul(r27106, r27089, r27105, MPFR_RNDN);
        mpfr_cbrt(r27107, r27106, MPFR_RNDN);
        mpfr_neg(r27108, r27090, MPFR_RNDN);
        mpfr_sub(r27109, r27108, r27102, MPFR_RNDN);
        mpfr_mul(r27110, r27089, r27109, MPFR_RNDN);
        mpfr_cbrt(r27111, r27110, MPFR_RNDN);
        mpfr_add(r27112, r27107, r27111, MPFR_RNDN);
        return mpfr_get_d(r27112, MPFR_RNDN);
}

static mpfr_t r27113, r27114, r27115, r27116, r27117, r27118, r27119, r27120, r27121, r27122, r27123, r27124, r27125, r27126, r27127, r27128, r27129, r27130, r27131, r27132, r27133, r27134, r27135, r27136, r27137, r27138, r27139, r27140;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27113, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27114, "2", 10, MPFR_RNDN);
        mpfr_init(r27115);
        mpfr_init(r27116);
        mpfr_init(r27117);
        mpfr_init(r27118);
        mpfr_init(r27119);
        mpfr_init(r27120);
        mpfr_init(r27121);
        mpfr_init(r27122);
        mpfr_init(r27123);
        mpfr_init(r27124);
        mpfr_init(r27125);
        mpfr_init(r27126);
        mpfr_init(r27127);
        mpfr_init(r27128);
        mpfr_init(r27129);
        mpfr_init(r27130);
        mpfr_init(r27131);
        mpfr_init(r27132);
        mpfr_init(r27133);
        mpfr_init(r27134);
        mpfr_init(r27135);
        mpfr_init(r27136);
        mpfr_init(r27137);
        mpfr_init(r27138);
        mpfr_init(r27139);
        mpfr_init(r27140);
}

double f_dm(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r27115, a, MPFR_RNDN);
        mpfr_mul(r27116, r27114, r27115, MPFR_RNDN);
        mpfr_div(r27117, r27113, r27116, MPFR_RNDN);
        mpfr_set_d(r27118, g, MPFR_RNDN);
        mpfr_set_d(r27119, h, MPFR_RNDN);
        mpfr_sub(r27120, r27118, r27119, MPFR_RNDN);
        mpfr_add(r27121, r27118, r27119, MPFR_RNDN);
        mpfr_mul(r27122, r27120, r27121, MPFR_RNDN);
        mpfr_sqrt(r27123, r27122, MPFR_RNDN);
        mpfr_sub(r27124, r27123, r27118, MPFR_RNDN);
        mpfr_cbrt(r27125, r27124, MPFR_RNDN);
        mpfr_mul(r27126, r27125, r27125, MPFR_RNDN);
        mpfr_mul(r27127, r27118, r27118, MPFR_RNDN);
        mpfr_mul(r27128, r27119, r27119, MPFR_RNDN);
        mpfr_sub(r27129, r27127, r27128, MPFR_RNDN);
        mpfr_sqrt(r27130, r27129, MPFR_RNDN);
        mpfr_sub(r27131, r27130, r27118, MPFR_RNDN);
        mpfr_cbrt(r27132, r27131, MPFR_RNDN);
        mpfr_mul(r27133, r27126, r27132, MPFR_RNDN);
        mpfr_mul(r27134, r27117, r27133, MPFR_RNDN);
        mpfr_cbrt(r27135, r27134, MPFR_RNDN);
        mpfr_neg(r27136, r27118, MPFR_RNDN);
        mpfr_sub(r27137, r27136, r27130, MPFR_RNDN);
        mpfr_mul(r27138, r27117, r27137, MPFR_RNDN);
        mpfr_cbrt(r27139, r27138, MPFR_RNDN);
        mpfr_add(r27140, r27135, r27139, MPFR_RNDN);
        return mpfr_get_d(r27140, MPFR_RNDN);
}

