#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 r10466 = 1.0f;
        float r10467 = 2.0f;
        float r10468 = a;
        float r10469 = r10467 * r10468;
        float r10470 = r10466 / r10469;
        float r10471 = g;
        float r10472 = -r10471;
        float r10473 = r10471 * r10471;
        float r10474 = h;
        float r10475 = r10474 * r10474;
        float r10476 = r10473 - r10475;
        float r10477 = sqrt(r10476);
        float r10478 = r10472 + r10477;
        float r10479 = r10470 * r10478;
        float r10480 = cbrt(r10479);
        float r10481 = r10472 - r10477;
        float r10482 = r10470 * r10481;
        float r10483 = cbrt(r10482);
        float r10484 = r10480 + r10483;
        return r10484;
}

double f_id(double g, double h, double a) {
        double r10485 = 1.0;
        double r10486 = 2.0;
        double r10487 = a;
        double r10488 = r10486 * r10487;
        double r10489 = r10485 / r10488;
        double r10490 = g;
        double r10491 = -r10490;
        double r10492 = r10490 * r10490;
        double r10493 = h;
        double r10494 = r10493 * r10493;
        double r10495 = r10492 - r10494;
        double r10496 = sqrt(r10495);
        double r10497 = r10491 + r10496;
        double r10498 = r10489 * r10497;
        double r10499 = cbrt(r10498);
        double r10500 = r10491 - r10496;
        double r10501 = r10489 * r10500;
        double r10502 = cbrt(r10501);
        double r10503 = r10499 + r10502;
        return r10503;
}


double f_of(float g, float h, float a) {
        float r10504 = 1.0f;
        float r10505 = a;
        float r10506 = 2.0f;
        float r10507 = r10505 * r10506;
        float r10508 = r10504 / r10507;
        float r10509 = g;
        float r10510 = -r10509;
        float r10511 = r10509 * r10509;
        float r10512 = h;
        float r10513 = r10512 * r10512;
        float r10514 = r10511 - r10513;
        float r10515 = cbrt(r10514);
        float r10516 = fabs(r10515);
        float r10517 = sqrt(r10515);
        float r10518 = r10516 * r10517;
        float r10519 = r10510 - r10518;
        float r10520 = cbrt(r10519);
        float r10521 = sqrt(r10514);
        float r10522 = r10510 - r10521;
        float r10523 = cbrt(r10522);
        float r10524 = r10520 * r10523;
        float r10525 = r10524 * r10520;
        float r10526 = r10508 * r10525;
        float r10527 = cbrt(r10526);
        float r10528 = r10510 + r10521;
        float r10529 = r10508 * r10528;
        float r10530 = cbrt(r10529);
        float r10531 = r10527 + r10530;
        return r10531;
}

double f_od(double g, double h, double a) {
        double r10532 = 1.0;
        double r10533 = a;
        double r10534 = 2.0;
        double r10535 = r10533 * r10534;
        double r10536 = r10532 / r10535;
        double r10537 = g;
        double r10538 = -r10537;
        double r10539 = r10537 * r10537;
        double r10540 = h;
        double r10541 = r10540 * r10540;
        double r10542 = r10539 - r10541;
        double r10543 = cbrt(r10542);
        double r10544 = fabs(r10543);
        double r10545 = sqrt(r10543);
        double r10546 = r10544 * r10545;
        double r10547 = r10538 - r10546;
        double r10548 = cbrt(r10547);
        double r10549 = sqrt(r10542);
        double r10550 = r10538 - r10549;
        double r10551 = cbrt(r10550);
        double r10552 = r10548 * r10551;
        double r10553 = r10552 * r10548;
        double r10554 = r10536 * r10553;
        double r10555 = cbrt(r10554);
        double r10556 = r10538 + r10549;
        double r10557 = r10536 * r10556;
        double r10558 = cbrt(r10557);
        double r10559 = r10555 + r10558;
        return r10559;
}

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 r10560, r10561, r10562, r10563, r10564, r10565, r10566, r10567, r10568, r10569, r10570, r10571, r10572, r10573, r10574, r10575, r10576, r10577, r10578;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10560, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10561, "2", 10, MPFR_RNDN);
        mpfr_init(r10562);
        mpfr_init(r10563);
        mpfr_init(r10564);
        mpfr_init(r10565);
        mpfr_init(r10566);
        mpfr_init(r10567);
        mpfr_init(r10568);
        mpfr_init(r10569);
        mpfr_init(r10570);
        mpfr_init(r10571);
        mpfr_init(r10572);
        mpfr_init(r10573);
        mpfr_init(r10574);
        mpfr_init(r10575);
        mpfr_init(r10576);
        mpfr_init(r10577);
        mpfr_init(r10578);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r10562, a, MPFR_RNDN);
        mpfr_mul(r10563, r10561, r10562, MPFR_RNDN);
        mpfr_div(r10564, r10560, r10563, MPFR_RNDN);
        mpfr_set_d(r10565, g, MPFR_RNDN);
        mpfr_neg(r10566, r10565, MPFR_RNDN);
        mpfr_mul(r10567, r10565, r10565, MPFR_RNDN);
        mpfr_set_d(r10568, h, MPFR_RNDN);
        mpfr_mul(r10569, r10568, r10568, MPFR_RNDN);
        mpfr_sub(r10570, r10567, r10569, MPFR_RNDN);
        mpfr_sqrt(r10571, r10570, MPFR_RNDN);
        mpfr_add(r10572, r10566, r10571, MPFR_RNDN);
        mpfr_mul(r10573, r10564, r10572, MPFR_RNDN);
        mpfr_cbrt(r10574, r10573, MPFR_RNDN);
        mpfr_sub(r10575, r10566, r10571, MPFR_RNDN);
        mpfr_mul(r10576, r10564, r10575, MPFR_RNDN);
        mpfr_cbrt(r10577, r10576, MPFR_RNDN);
        mpfr_add(r10578, r10574, r10577, MPFR_RNDN);
        return mpfr_get_d(r10578, MPFR_RNDN);
}

static mpfr_t r10579, r10580, r10581, r10582, r10583, r10584, r10585, r10586, r10587, r10588, r10589, r10590, r10591, r10592, r10593, r10594, r10595, r10596, r10597, r10598, r10599, r10600, r10601, r10602, r10603, r10604, r10605, r10606;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10579, "1", 10, MPFR_RNDN);
        mpfr_init(r10580);
        mpfr_init_set_str(r10581, "2", 10, MPFR_RNDN);
        mpfr_init(r10582);
        mpfr_init(r10583);
        mpfr_init(r10584);
        mpfr_init(r10585);
        mpfr_init(r10586);
        mpfr_init(r10587);
        mpfr_init(r10588);
        mpfr_init(r10589);
        mpfr_init(r10590);
        mpfr_init(r10591);
        mpfr_init(r10592);
        mpfr_init(r10593);
        mpfr_init(r10594);
        mpfr_init(r10595);
        mpfr_init(r10596);
        mpfr_init(r10597);
        mpfr_init(r10598);
        mpfr_init(r10599);
        mpfr_init(r10600);
        mpfr_init(r10601);
        mpfr_init(r10602);
        mpfr_init(r10603);
        mpfr_init(r10604);
        mpfr_init(r10605);
        mpfr_init(r10606);
}

double f_fm(double g, double h, double a) {
        ;
        mpfr_set_d(r10580, a, MPFR_RNDN);
        ;
        mpfr_mul(r10582, r10580, r10581, MPFR_RNDN);
        mpfr_div(r10583, r10579, r10582, MPFR_RNDN);
        mpfr_set_d(r10584, g, MPFR_RNDN);
        mpfr_neg(r10585, r10584, MPFR_RNDN);
        mpfr_mul(r10586, r10584, r10584, MPFR_RNDN);
        mpfr_set_d(r10587, h, MPFR_RNDN);
        mpfr_mul(r10588, r10587, r10587, MPFR_RNDN);
        mpfr_sub(r10589, r10586, r10588, MPFR_RNDN);
        mpfr_cbrt(r10590, r10589, MPFR_RNDN);
        mpfr_abs(r10591, r10590, MPFR_RNDN);
        mpfr_sqrt(r10592, r10590, MPFR_RNDN);
        mpfr_mul(r10593, r10591, r10592, MPFR_RNDN);
        mpfr_sub(r10594, r10585, r10593, MPFR_RNDN);
        mpfr_cbrt(r10595, r10594, MPFR_RNDN);
        mpfr_sqrt(r10596, r10589, MPFR_RNDN);
        mpfr_sub(r10597, r10585, r10596, MPFR_RNDN);
        mpfr_cbrt(r10598, r10597, MPFR_RNDN);
        mpfr_mul(r10599, r10595, r10598, MPFR_RNDN);
        mpfr_mul(r10600, r10599, r10595, MPFR_RNDN);
        mpfr_mul(r10601, r10583, r10600, MPFR_RNDN);
        mpfr_cbrt(r10602, r10601, MPFR_RNDN);
        mpfr_add(r10603, r10585, r10596, MPFR_RNDN);
        mpfr_mul(r10604, r10583, r10603, MPFR_RNDN);
        mpfr_cbrt(r10605, r10604, MPFR_RNDN);
        mpfr_add(r10606, r10602, r10605, MPFR_RNDN);
        return mpfr_get_d(r10606, MPFR_RNDN);
}

static mpfr_t r10607, r10608, r10609, r10610, r10611, r10612, r10613, r10614, r10615, r10616, r10617, r10618, r10619, r10620, r10621, r10622, r10623, r10624, r10625, r10626, r10627, r10628, r10629, r10630, r10631, r10632, r10633, r10634;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10607, "1", 10, MPFR_RNDN);
        mpfr_init(r10608);
        mpfr_init_set_str(r10609, "2", 10, MPFR_RNDN);
        mpfr_init(r10610);
        mpfr_init(r10611);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
        mpfr_init(r10615);
        mpfr_init(r10616);
        mpfr_init(r10617);
        mpfr_init(r10618);
        mpfr_init(r10619);
        mpfr_init(r10620);
        mpfr_init(r10621);
        mpfr_init(r10622);
        mpfr_init(r10623);
        mpfr_init(r10624);
        mpfr_init(r10625);
        mpfr_init(r10626);
        mpfr_init(r10627);
        mpfr_init(r10628);
        mpfr_init(r10629);
        mpfr_init(r10630);
        mpfr_init(r10631);
        mpfr_init(r10632);
        mpfr_init(r10633);
        mpfr_init(r10634);
}

double f_dm(double g, double h, double a) {
        ;
        mpfr_set_d(r10608, a, MPFR_RNDN);
        ;
        mpfr_mul(r10610, r10608, r10609, MPFR_RNDN);
        mpfr_div(r10611, r10607, r10610, MPFR_RNDN);
        mpfr_set_d(r10612, g, MPFR_RNDN);
        mpfr_neg(r10613, r10612, MPFR_RNDN);
        mpfr_mul(r10614, r10612, r10612, MPFR_RNDN);
        mpfr_set_d(r10615, h, MPFR_RNDN);
        mpfr_mul(r10616, r10615, r10615, MPFR_RNDN);
        mpfr_sub(r10617, r10614, r10616, MPFR_RNDN);
        mpfr_cbrt(r10618, r10617, MPFR_RNDN);
        mpfr_abs(r10619, r10618, MPFR_RNDN);
        mpfr_sqrt(r10620, r10618, MPFR_RNDN);
        mpfr_mul(r10621, r10619, r10620, MPFR_RNDN);
        mpfr_sub(r10622, r10613, r10621, MPFR_RNDN);
        mpfr_cbrt(r10623, r10622, MPFR_RNDN);
        mpfr_sqrt(r10624, r10617, MPFR_RNDN);
        mpfr_sub(r10625, r10613, r10624, MPFR_RNDN);
        mpfr_cbrt(r10626, r10625, MPFR_RNDN);
        mpfr_mul(r10627, r10623, r10626, MPFR_RNDN);
        mpfr_mul(r10628, r10627, r10623, MPFR_RNDN);
        mpfr_mul(r10629, r10611, r10628, MPFR_RNDN);
        mpfr_cbrt(r10630, r10629, MPFR_RNDN);
        mpfr_add(r10631, r10613, r10624, MPFR_RNDN);
        mpfr_mul(r10632, r10611, r10631, MPFR_RNDN);
        mpfr_cbrt(r10633, r10632, MPFR_RNDN);
        mpfr_add(r10634, r10630, r10633, MPFR_RNDN);
        return mpfr_get_d(r10634, MPFR_RNDN);
}

