#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 r32646447 = 1;
        float r32646448 = 2;
        float r32646449 = a;
        float r32646450 = r32646448 * r32646449;
        float r32646451 = r32646447 / r32646450;
        float r32646452 = g;
        float r32646453 = -r32646452;
        float r32646454 = r32646452 * r32646452;
        float r32646455 = h;
        float r32646456 = r32646455 * r32646455;
        float r32646457 = r32646454 - r32646456;
        float r32646458 = sqrt(r32646457);
        float r32646459 = r32646453 + r32646458;
        float r32646460 = r32646451 * r32646459;
        float r32646461 = cbrt(r32646460);
        float r32646462 = r32646453 - r32646458;
        float r32646463 = r32646451 * r32646462;
        float r32646464 = cbrt(r32646463);
        float r32646465 = r32646461 + r32646464;
        return r32646465;
}

double f_id(double g, double h, double a) {
        double r32646466 = 1;
        double r32646467 = 2;
        double r32646468 = a;
        double r32646469 = r32646467 * r32646468;
        double r32646470 = r32646466 / r32646469;
        double r32646471 = g;
        double r32646472 = -r32646471;
        double r32646473 = r32646471 * r32646471;
        double r32646474 = h;
        double r32646475 = r32646474 * r32646474;
        double r32646476 = r32646473 - r32646475;
        double r32646477 = sqrt(r32646476);
        double r32646478 = r32646472 + r32646477;
        double r32646479 = r32646470 * r32646478;
        double r32646480 = cbrt(r32646479);
        double r32646481 = r32646472 - r32646477;
        double r32646482 = r32646470 * r32646481;
        double r32646483 = cbrt(r32646482);
        double r32646484 = r32646480 + r32646483;
        return r32646484;
}


double f_of(float g, float h, float a) {
        float r32646485 = g;
        float r32646486 = -1.5615237817735577e-162;
        bool r32646487 = r32646485 <= r32646486;
        float r32646488 = 1;
        float r32646489 = 2;
        float r32646490 = a;
        float r32646491 = r32646489 * r32646490;
        float r32646492 = r32646488 / r32646491;
        float r32646493 = -r32646485;
        float r32646494 = r32646485 * r32646485;
        float r32646495 = h;
        float r32646496 = r32646495 * r32646495;
        float r32646497 = r32646494 - r32646496;
        float r32646498 = sqrt(r32646497);
        float r32646499 = r32646493 + r32646498;
        float r32646500 = r32646492 * r32646499;
        float r32646501 = cbrt(r32646500);
        float r32646502 = r32646495 + r32646485;
        float r32646503 = r32646485 - r32646495;
        float r32646504 = r32646502 * r32646503;
        float r32646505 = sqrt(r32646504);
        float r32646506 = r32646505 - r32646485;
        float r32646507 = r32646496 / r32646506;
        float r32646508 = r32646492 * r32646507;
        float r32646509 = cbrt(r32646508);
        float r32646510 = r32646501 + r32646509;
        float r32646511 = r32646493 - r32646498;
        float r32646512 = r32646496 / r32646511;
        float r32646513 = r32646492 * r32646512;
        float r32646514 = cbrt(r32646513);
        float r32646515 = r32646492 * r32646511;
        float r32646516 = cbrt(r32646515);
        float r32646517 = r32646514 + r32646516;
        float r32646518 = r32646487 ? r32646510 : r32646517;
        return r32646518;
}

double f_od(double g, double h, double a) {
        double r32646519 = g;
        double r32646520 = -1.5615237817735577e-162;
        bool r32646521 = r32646519 <= r32646520;
        double r32646522 = 1;
        double r32646523 = 2;
        double r32646524 = a;
        double r32646525 = r32646523 * r32646524;
        double r32646526 = r32646522 / r32646525;
        double r32646527 = -r32646519;
        double r32646528 = r32646519 * r32646519;
        double r32646529 = h;
        double r32646530 = r32646529 * r32646529;
        double r32646531 = r32646528 - r32646530;
        double r32646532 = sqrt(r32646531);
        double r32646533 = r32646527 + r32646532;
        double r32646534 = r32646526 * r32646533;
        double r32646535 = cbrt(r32646534);
        double r32646536 = r32646529 + r32646519;
        double r32646537 = r32646519 - r32646529;
        double r32646538 = r32646536 * r32646537;
        double r32646539 = sqrt(r32646538);
        double r32646540 = r32646539 - r32646519;
        double r32646541 = r32646530 / r32646540;
        double r32646542 = r32646526 * r32646541;
        double r32646543 = cbrt(r32646542);
        double r32646544 = r32646535 + r32646543;
        double r32646545 = r32646527 - r32646532;
        double r32646546 = r32646530 / r32646545;
        double r32646547 = r32646526 * r32646546;
        double r32646548 = cbrt(r32646547);
        double r32646549 = r32646526 * r32646545;
        double r32646550 = cbrt(r32646549);
        double r32646551 = r32646548 + r32646550;
        double r32646552 = r32646521 ? r32646544 : r32646551;
        return r32646552;
}

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 r32646553, r32646554, r32646555, r32646556, r32646557, r32646558, r32646559, r32646560, r32646561, r32646562, r32646563, r32646564, r32646565, r32646566, r32646567, r32646568, r32646569, r32646570, r32646571;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r32646553, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r32646554, "2", 10, MPFR_RNDN);
        mpfr_init(r32646555);
        mpfr_init(r32646556);
        mpfr_init(r32646557);
        mpfr_init(r32646558);
        mpfr_init(r32646559);
        mpfr_init(r32646560);
        mpfr_init(r32646561);
        mpfr_init(r32646562);
        mpfr_init(r32646563);
        mpfr_init(r32646564);
        mpfr_init(r32646565);
        mpfr_init(r32646566);
        mpfr_init(r32646567);
        mpfr_init(r32646568);
        mpfr_init(r32646569);
        mpfr_init(r32646570);
        mpfr_init(r32646571);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r32646555, a, MPFR_RNDN);
        mpfr_mul(r32646556, r32646554, r32646555, MPFR_RNDN);
        mpfr_div(r32646557, r32646553, r32646556, MPFR_RNDN);
        mpfr_set_d(r32646558, g, MPFR_RNDN);
        mpfr_neg(r32646559, r32646558, MPFR_RNDN);
        mpfr_mul(r32646560, r32646558, r32646558, MPFR_RNDN);
        mpfr_set_d(r32646561, h, MPFR_RNDN);
        mpfr_mul(r32646562, r32646561, r32646561, MPFR_RNDN);
        mpfr_sub(r32646563, r32646560, r32646562, MPFR_RNDN);
        mpfr_sqrt(r32646564, r32646563, MPFR_RNDN);
        mpfr_add(r32646565, r32646559, r32646564, MPFR_RNDN);
        mpfr_mul(r32646566, r32646557, r32646565, MPFR_RNDN);
        mpfr_cbrt(r32646567, r32646566, MPFR_RNDN);
        mpfr_sub(r32646568, r32646559, r32646564, MPFR_RNDN);
        mpfr_mul(r32646569, r32646557, r32646568, MPFR_RNDN);
        mpfr_cbrt(r32646570, r32646569, MPFR_RNDN);
        mpfr_add(r32646571, r32646567, r32646570, MPFR_RNDN);
        return mpfr_get_d(r32646571, MPFR_RNDN);
}

static mpfr_t r32646572, r32646573, r32646574, r32646575, r32646576, r32646577, r32646578, r32646579, r32646580, r32646581, r32646582, r32646583, r32646584, r32646585, r32646586, r32646587, r32646588, r32646589, r32646590, r32646591, r32646592, r32646593, r32646594, r32646595, r32646596, r32646597, r32646598, r32646599, r32646600, r32646601, r32646602, r32646603, r32646604, r32646605;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r32646572);
        mpfr_init_set_str(r32646573, "-1.5615237817735577e-162", 10, MPFR_RNDN);
        mpfr_init(r32646574);
        mpfr_init_set_str(r32646575, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r32646576, "2", 10, MPFR_RNDN);
        mpfr_init(r32646577);
        mpfr_init(r32646578);
        mpfr_init(r32646579);
        mpfr_init(r32646580);
        mpfr_init(r32646581);
        mpfr_init(r32646582);
        mpfr_init(r32646583);
        mpfr_init(r32646584);
        mpfr_init(r32646585);
        mpfr_init(r32646586);
        mpfr_init(r32646587);
        mpfr_init(r32646588);
        mpfr_init(r32646589);
        mpfr_init(r32646590);
        mpfr_init(r32646591);
        mpfr_init(r32646592);
        mpfr_init(r32646593);
        mpfr_init(r32646594);
        mpfr_init(r32646595);
        mpfr_init(r32646596);
        mpfr_init(r32646597);
        mpfr_init(r32646598);
        mpfr_init(r32646599);
        mpfr_init(r32646600);
        mpfr_init(r32646601);
        mpfr_init(r32646602);
        mpfr_init(r32646603);
        mpfr_init(r32646604);
        mpfr_init(r32646605);
}

double f_fm(double g, double h, double a) {
        mpfr_set_d(r32646572, g, MPFR_RNDN);
        ;
        mpfr_set_si(r32646574, mpfr_cmp(r32646572, r32646573) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r32646577, a, MPFR_RNDN);
        mpfr_mul(r32646578, r32646576, r32646577, MPFR_RNDN);
        mpfr_div(r32646579, r32646575, r32646578, MPFR_RNDN);
        mpfr_neg(r32646580, r32646572, MPFR_RNDN);
        mpfr_mul(r32646581, r32646572, r32646572, MPFR_RNDN);
        mpfr_set_d(r32646582, h, MPFR_RNDN);
        mpfr_mul(r32646583, r32646582, r32646582, MPFR_RNDN);
        mpfr_sub(r32646584, r32646581, r32646583, MPFR_RNDN);
        mpfr_sqrt(r32646585, r32646584, MPFR_RNDN);
        mpfr_add(r32646586, r32646580, r32646585, MPFR_RNDN);
        mpfr_mul(r32646587, r32646579, r32646586, MPFR_RNDN);
        mpfr_cbrt(r32646588, r32646587, MPFR_RNDN);
        mpfr_add(r32646589, r32646582, r32646572, MPFR_RNDN);
        mpfr_sub(r32646590, r32646572, r32646582, MPFR_RNDN);
        mpfr_mul(r32646591, r32646589, r32646590, MPFR_RNDN);
        mpfr_sqrt(r32646592, r32646591, MPFR_RNDN);
        mpfr_sub(r32646593, r32646592, r32646572, MPFR_RNDN);
        mpfr_div(r32646594, r32646583, r32646593, MPFR_RNDN);
        mpfr_mul(r32646595, r32646579, r32646594, MPFR_RNDN);
        mpfr_cbrt(r32646596, r32646595, MPFR_RNDN);
        mpfr_add(r32646597, r32646588, r32646596, MPFR_RNDN);
        mpfr_sub(r32646598, r32646580, r32646585, MPFR_RNDN);
        mpfr_div(r32646599, r32646583, r32646598, MPFR_RNDN);
        mpfr_mul(r32646600, r32646579, r32646599, MPFR_RNDN);
        mpfr_cbrt(r32646601, r32646600, MPFR_RNDN);
        mpfr_mul(r32646602, r32646579, r32646598, MPFR_RNDN);
        mpfr_cbrt(r32646603, r32646602, MPFR_RNDN);
        mpfr_add(r32646604, r32646601, r32646603, MPFR_RNDN);
        if (mpfr_get_si(r32646574, MPFR_RNDN)) { mpfr_set(r32646605, r32646597, MPFR_RNDN); } else { mpfr_set(r32646605, r32646604, MPFR_RNDN); };
        return mpfr_get_d(r32646605, MPFR_RNDN);
}

static mpfr_t r32646606, r32646607, r32646608, r32646609, r32646610, r32646611, r32646612, r32646613, r32646614, r32646615, r32646616, r32646617, r32646618, r32646619, r32646620, r32646621, r32646622, r32646623, r32646624, r32646625, r32646626, r32646627, r32646628, r32646629, r32646630, r32646631, r32646632, r32646633, r32646634, r32646635, r32646636, r32646637, r32646638, r32646639;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r32646606);
        mpfr_init_set_str(r32646607, "-1.5615237817735577e-162", 10, MPFR_RNDN);
        mpfr_init(r32646608);
        mpfr_init_set_str(r32646609, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r32646610, "2", 10, MPFR_RNDN);
        mpfr_init(r32646611);
        mpfr_init(r32646612);
        mpfr_init(r32646613);
        mpfr_init(r32646614);
        mpfr_init(r32646615);
        mpfr_init(r32646616);
        mpfr_init(r32646617);
        mpfr_init(r32646618);
        mpfr_init(r32646619);
        mpfr_init(r32646620);
        mpfr_init(r32646621);
        mpfr_init(r32646622);
        mpfr_init(r32646623);
        mpfr_init(r32646624);
        mpfr_init(r32646625);
        mpfr_init(r32646626);
        mpfr_init(r32646627);
        mpfr_init(r32646628);
        mpfr_init(r32646629);
        mpfr_init(r32646630);
        mpfr_init(r32646631);
        mpfr_init(r32646632);
        mpfr_init(r32646633);
        mpfr_init(r32646634);
        mpfr_init(r32646635);
        mpfr_init(r32646636);
        mpfr_init(r32646637);
        mpfr_init(r32646638);
        mpfr_init(r32646639);
}

double f_dm(double g, double h, double a) {
        mpfr_set_d(r32646606, g, MPFR_RNDN);
        ;
        mpfr_set_si(r32646608, mpfr_cmp(r32646606, r32646607) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r32646611, a, MPFR_RNDN);
        mpfr_mul(r32646612, r32646610, r32646611, MPFR_RNDN);
        mpfr_div(r32646613, r32646609, r32646612, MPFR_RNDN);
        mpfr_neg(r32646614, r32646606, MPFR_RNDN);
        mpfr_mul(r32646615, r32646606, r32646606, MPFR_RNDN);
        mpfr_set_d(r32646616, h, MPFR_RNDN);
        mpfr_mul(r32646617, r32646616, r32646616, MPFR_RNDN);
        mpfr_sub(r32646618, r32646615, r32646617, MPFR_RNDN);
        mpfr_sqrt(r32646619, r32646618, MPFR_RNDN);
        mpfr_add(r32646620, r32646614, r32646619, MPFR_RNDN);
        mpfr_mul(r32646621, r32646613, r32646620, MPFR_RNDN);
        mpfr_cbrt(r32646622, r32646621, MPFR_RNDN);
        mpfr_add(r32646623, r32646616, r32646606, MPFR_RNDN);
        mpfr_sub(r32646624, r32646606, r32646616, MPFR_RNDN);
        mpfr_mul(r32646625, r32646623, r32646624, MPFR_RNDN);
        mpfr_sqrt(r32646626, r32646625, MPFR_RNDN);
        mpfr_sub(r32646627, r32646626, r32646606, MPFR_RNDN);
        mpfr_div(r32646628, r32646617, r32646627, MPFR_RNDN);
        mpfr_mul(r32646629, r32646613, r32646628, MPFR_RNDN);
        mpfr_cbrt(r32646630, r32646629, MPFR_RNDN);
        mpfr_add(r32646631, r32646622, r32646630, MPFR_RNDN);
        mpfr_sub(r32646632, r32646614, r32646619, MPFR_RNDN);
        mpfr_div(r32646633, r32646617, r32646632, MPFR_RNDN);
        mpfr_mul(r32646634, r32646613, r32646633, MPFR_RNDN);
        mpfr_cbrt(r32646635, r32646634, MPFR_RNDN);
        mpfr_mul(r32646636, r32646613, r32646632, MPFR_RNDN);
        mpfr_cbrt(r32646637, r32646636, MPFR_RNDN);
        mpfr_add(r32646638, r32646635, r32646637, MPFR_RNDN);
        if (mpfr_get_si(r32646608, MPFR_RNDN)) { mpfr_set(r32646639, r32646631, MPFR_RNDN); } else { mpfr_set(r32646639, r32646638, MPFR_RNDN); };
        return mpfr_get_d(r32646639, MPFR_RNDN);
}

