#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 r37500 = 1;
        float r37501 = 2;
        float r37502 = a;
        float r37503 = r37501 * r37502;
        float r37504 = r37500 / r37503;
        float r37505 = g;
        float r37506 = -r37505;
        float r37507 = r37505 * r37505;
        float r37508 = h;
        float r37509 = r37508 * r37508;
        float r37510 = r37507 - r37509;
        float r37511 = sqrt(r37510);
        float r37512 = r37506 + r37511;
        float r37513 = r37504 * r37512;
        float r37514 = cbrt(r37513);
        float r37515 = r37506 - r37511;
        float r37516 = r37504 * r37515;
        float r37517 = cbrt(r37516);
        float r37518 = r37514 + r37517;
        return r37518;
}

double f_id(double g, double h, double a) {
        double r37519 = 1;
        double r37520 = 2;
        double r37521 = a;
        double r37522 = r37520 * r37521;
        double r37523 = r37519 / r37522;
        double r37524 = g;
        double r37525 = -r37524;
        double r37526 = r37524 * r37524;
        double r37527 = h;
        double r37528 = r37527 * r37527;
        double r37529 = r37526 - r37528;
        double r37530 = sqrt(r37529);
        double r37531 = r37525 + r37530;
        double r37532 = r37523 * r37531;
        double r37533 = cbrt(r37532);
        double r37534 = r37525 - r37530;
        double r37535 = r37523 * r37534;
        double r37536 = cbrt(r37535);
        double r37537 = r37533 + r37536;
        return r37537;
}


double f_of(float g, float h, float a) {
        float r37538 = g;
        float r37539 = 1.330799445697389e-162;
        bool r37540 = r37538 <= r37539;
        float r37541 = -r37538;
        float r37542 = h;
        float r37543 = r37538 + r37542;
        float r37544 = r37538 - r37542;
        float r37545 = r37543 * r37544;
        float r37546 = sqrt(r37545);
        float r37547 = r37541 + r37546;
        float r37548 = cbrt(r37547);
        float r37549 = a;
        float r37550 = r37549 + r37549;
        float r37551 = cbrt(r37550);
        float r37552 = r37548 / r37551;
        float r37553 = r37538 * r37538;
        float r37554 = r37544 * r37543;
        float r37555 = r37553 - r37554;
        float r37556 = r37555 / r37547;
        float r37557 = r37556 / r37550;
        float r37558 = cbrt(r37557);
        float r37559 = r37552 + r37558;
        float r37560 = r37547 / r37550;
        float r37561 = cbrt(r37560);
        float r37562 = r37541 - r37546;
        float r37563 = cbrt(r37562);
        float r37564 = r37563 / r37551;
        float r37565 = r37561 + r37564;
        float r37566 = r37540 ? r37559 : r37565;
        return r37566;
}

double f_od(double g, double h, double a) {
        double r37567 = g;
        double r37568 = 1.330799445697389e-162;
        bool r37569 = r37567 <= r37568;
        double r37570 = -r37567;
        double r37571 = h;
        double r37572 = r37567 + r37571;
        double r37573 = r37567 - r37571;
        double r37574 = r37572 * r37573;
        double r37575 = sqrt(r37574);
        double r37576 = r37570 + r37575;
        double r37577 = cbrt(r37576);
        double r37578 = a;
        double r37579 = r37578 + r37578;
        double r37580 = cbrt(r37579);
        double r37581 = r37577 / r37580;
        double r37582 = r37567 * r37567;
        double r37583 = r37573 * r37572;
        double r37584 = r37582 - r37583;
        double r37585 = r37584 / r37576;
        double r37586 = r37585 / r37579;
        double r37587 = cbrt(r37586);
        double r37588 = r37581 + r37587;
        double r37589 = r37576 / r37579;
        double r37590 = cbrt(r37589);
        double r37591 = r37570 - r37575;
        double r37592 = cbrt(r37591);
        double r37593 = r37592 / r37580;
        double r37594 = r37590 + r37593;
        double r37595 = r37569 ? r37588 : r37594;
        return r37595;
}

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 r37596, r37597, r37598, r37599, r37600, r37601, r37602, r37603, r37604, r37605, r37606, r37607, r37608, r37609, r37610, r37611, r37612, r37613, r37614;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r37596, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r37597, "2", 10, MPFR_RNDN);
        mpfr_init(r37598);
        mpfr_init(r37599);
        mpfr_init(r37600);
        mpfr_init(r37601);
        mpfr_init(r37602);
        mpfr_init(r37603);
        mpfr_init(r37604);
        mpfr_init(r37605);
        mpfr_init(r37606);
        mpfr_init(r37607);
        mpfr_init(r37608);
        mpfr_init(r37609);
        mpfr_init(r37610);
        mpfr_init(r37611);
        mpfr_init(r37612);
        mpfr_init(r37613);
        mpfr_init(r37614);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r37598, a, MPFR_RNDN);
        mpfr_mul(r37599, r37597, r37598, MPFR_RNDN);
        mpfr_div(r37600, r37596, r37599, MPFR_RNDN);
        mpfr_set_d(r37601, g, MPFR_RNDN);
        mpfr_neg(r37602, r37601, MPFR_RNDN);
        mpfr_mul(r37603, r37601, r37601, MPFR_RNDN);
        mpfr_set_d(r37604, h, MPFR_RNDN);
        mpfr_mul(r37605, r37604, r37604, MPFR_RNDN);
        mpfr_sub(r37606, r37603, r37605, MPFR_RNDN);
        mpfr_sqrt(r37607, r37606, MPFR_RNDN);
        mpfr_add(r37608, r37602, r37607, MPFR_RNDN);
        mpfr_mul(r37609, r37600, r37608, MPFR_RNDN);
        mpfr_cbrt(r37610, r37609, MPFR_RNDN);
        mpfr_sub(r37611, r37602, r37607, MPFR_RNDN);
        mpfr_mul(r37612, r37600, r37611, MPFR_RNDN);
        mpfr_cbrt(r37613, r37612, MPFR_RNDN);
        mpfr_add(r37614, r37610, r37613, MPFR_RNDN);
        return mpfr_get_d(r37614, MPFR_RNDN);
}

static mpfr_t r37615, r37616, r37617, r37618, r37619, r37620, r37621, r37622, r37623, r37624, r37625, r37626, r37627, r37628, r37629, r37630, r37631, r37632, r37633, r37634, r37635, r37636, r37637, r37638, r37639, r37640, r37641, r37642, r37643;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r37615);
        mpfr_init_set_str(r37616, "1.330799445697389e-162", 10, MPFR_RNDN);
        mpfr_init(r37617);
        mpfr_init(r37618);
        mpfr_init(r37619);
        mpfr_init(r37620);
        mpfr_init(r37621);
        mpfr_init(r37622);
        mpfr_init(r37623);
        mpfr_init(r37624);
        mpfr_init(r37625);
        mpfr_init(r37626);
        mpfr_init(r37627);
        mpfr_init(r37628);
        mpfr_init(r37629);
        mpfr_init(r37630);
        mpfr_init(r37631);
        mpfr_init(r37632);
        mpfr_init(r37633);
        mpfr_init(r37634);
        mpfr_init(r37635);
        mpfr_init(r37636);
        mpfr_init(r37637);
        mpfr_init(r37638);
        mpfr_init(r37639);
        mpfr_init(r37640);
        mpfr_init(r37641);
        mpfr_init(r37642);
        mpfr_init(r37643);
}

double f_fm(double g, double h, double a) {
        mpfr_set_d(r37615, g, MPFR_RNDN);
        ;
        mpfr_set_si(r37617, mpfr_cmp(r37615, r37616) <= 0, MPFR_RNDN);
        mpfr_neg(r37618, r37615, MPFR_RNDN);
        mpfr_set_d(r37619, h, MPFR_RNDN);
        mpfr_add(r37620, r37615, r37619, MPFR_RNDN);
        mpfr_sub(r37621, r37615, r37619, MPFR_RNDN);
        mpfr_mul(r37622, r37620, r37621, MPFR_RNDN);
        mpfr_sqrt(r37623, r37622, MPFR_RNDN);
        mpfr_add(r37624, r37618, r37623, MPFR_RNDN);
        mpfr_cbrt(r37625, r37624, MPFR_RNDN);
        mpfr_set_d(r37626, a, MPFR_RNDN);
        mpfr_add(r37627, r37626, r37626, MPFR_RNDN);
        mpfr_cbrt(r37628, r37627, MPFR_RNDN);
        mpfr_div(r37629, r37625, r37628, MPFR_RNDN);
        mpfr_mul(r37630, r37615, r37615, MPFR_RNDN);
        mpfr_mul(r37631, r37621, r37620, MPFR_RNDN);
        mpfr_sub(r37632, r37630, r37631, MPFR_RNDN);
        mpfr_div(r37633, r37632, r37624, MPFR_RNDN);
        mpfr_div(r37634, r37633, r37627, MPFR_RNDN);
        mpfr_cbrt(r37635, r37634, MPFR_RNDN);
        mpfr_add(r37636, r37629, r37635, MPFR_RNDN);
        mpfr_div(r37637, r37624, r37627, MPFR_RNDN);
        mpfr_cbrt(r37638, r37637, MPFR_RNDN);
        mpfr_sub(r37639, r37618, r37623, MPFR_RNDN);
        mpfr_cbrt(r37640, r37639, MPFR_RNDN);
        mpfr_div(r37641, r37640, r37628, MPFR_RNDN);
        mpfr_add(r37642, r37638, r37641, MPFR_RNDN);
        if (mpfr_get_si(r37617, MPFR_RNDN)) { mpfr_set(r37643, r37636, MPFR_RNDN); } else { mpfr_set(r37643, r37642, MPFR_RNDN); };
        return mpfr_get_d(r37643, MPFR_RNDN);
}

static mpfr_t r37644, r37645, r37646, r37647, r37648, r37649, r37650, r37651, r37652, r37653, r37654, r37655, r37656, r37657, r37658, r37659, r37660, r37661, r37662, r37663, r37664, r37665, r37666, r37667, r37668, r37669, r37670, r37671, r37672;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r37644);
        mpfr_init_set_str(r37645, "1.330799445697389e-162", 10, MPFR_RNDN);
        mpfr_init(r37646);
        mpfr_init(r37647);
        mpfr_init(r37648);
        mpfr_init(r37649);
        mpfr_init(r37650);
        mpfr_init(r37651);
        mpfr_init(r37652);
        mpfr_init(r37653);
        mpfr_init(r37654);
        mpfr_init(r37655);
        mpfr_init(r37656);
        mpfr_init(r37657);
        mpfr_init(r37658);
        mpfr_init(r37659);
        mpfr_init(r37660);
        mpfr_init(r37661);
        mpfr_init(r37662);
        mpfr_init(r37663);
        mpfr_init(r37664);
        mpfr_init(r37665);
        mpfr_init(r37666);
        mpfr_init(r37667);
        mpfr_init(r37668);
        mpfr_init(r37669);
        mpfr_init(r37670);
        mpfr_init(r37671);
        mpfr_init(r37672);
}

double f_dm(double g, double h, double a) {
        mpfr_set_d(r37644, g, MPFR_RNDN);
        ;
        mpfr_set_si(r37646, mpfr_cmp(r37644, r37645) <= 0, MPFR_RNDN);
        mpfr_neg(r37647, r37644, MPFR_RNDN);
        mpfr_set_d(r37648, h, MPFR_RNDN);
        mpfr_add(r37649, r37644, r37648, MPFR_RNDN);
        mpfr_sub(r37650, r37644, r37648, MPFR_RNDN);
        mpfr_mul(r37651, r37649, r37650, MPFR_RNDN);
        mpfr_sqrt(r37652, r37651, MPFR_RNDN);
        mpfr_add(r37653, r37647, r37652, MPFR_RNDN);
        mpfr_cbrt(r37654, r37653, MPFR_RNDN);
        mpfr_set_d(r37655, a, MPFR_RNDN);
        mpfr_add(r37656, r37655, r37655, MPFR_RNDN);
        mpfr_cbrt(r37657, r37656, MPFR_RNDN);
        mpfr_div(r37658, r37654, r37657, MPFR_RNDN);
        mpfr_mul(r37659, r37644, r37644, MPFR_RNDN);
        mpfr_mul(r37660, r37650, r37649, MPFR_RNDN);
        mpfr_sub(r37661, r37659, r37660, MPFR_RNDN);
        mpfr_div(r37662, r37661, r37653, MPFR_RNDN);
        mpfr_div(r37663, r37662, r37656, MPFR_RNDN);
        mpfr_cbrt(r37664, r37663, MPFR_RNDN);
        mpfr_add(r37665, r37658, r37664, MPFR_RNDN);
        mpfr_div(r37666, r37653, r37656, MPFR_RNDN);
        mpfr_cbrt(r37667, r37666, MPFR_RNDN);
        mpfr_sub(r37668, r37647, r37652, MPFR_RNDN);
        mpfr_cbrt(r37669, r37668, MPFR_RNDN);
        mpfr_div(r37670, r37669, r37657, MPFR_RNDN);
        mpfr_add(r37671, r37667, r37670, MPFR_RNDN);
        if (mpfr_get_si(r37646, MPFR_RNDN)) { mpfr_set(r37672, r37665, MPFR_RNDN); } else { mpfr_set(r37672, r37671, MPFR_RNDN); };
        return mpfr_get_d(r37672, MPFR_RNDN);
}

