#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 r10403 = 1.0f;
        float r10404 = 2.0f;
        float r10405 = a;
        float r10406 = r10404 * r10405;
        float r10407 = r10403 / r10406;
        float r10408 = g;
        float r10409 = -r10408;
        float r10410 = r10408 * r10408;
        float r10411 = h;
        float r10412 = r10411 * r10411;
        float r10413 = r10410 - r10412;
        float r10414 = sqrt(r10413);
        float r10415 = r10409 + r10414;
        float r10416 = r10407 * r10415;
        float r10417 = cbrt(r10416);
        float r10418 = r10409 - r10414;
        float r10419 = r10407 * r10418;
        float r10420 = cbrt(r10419);
        float r10421 = r10417 + r10420;
        return r10421;
}

double f_id(double g, double h, double a) {
        double r10422 = 1.0;
        double r10423 = 2.0;
        double r10424 = a;
        double r10425 = r10423 * r10424;
        double r10426 = r10422 / r10425;
        double r10427 = g;
        double r10428 = -r10427;
        double r10429 = r10427 * r10427;
        double r10430 = h;
        double r10431 = r10430 * r10430;
        double r10432 = r10429 - r10431;
        double r10433 = sqrt(r10432);
        double r10434 = r10428 + r10433;
        double r10435 = r10426 * r10434;
        double r10436 = cbrt(r10435);
        double r10437 = r10428 - r10433;
        double r10438 = r10426 * r10437;
        double r10439 = cbrt(r10438);
        double r10440 = r10436 + r10439;
        return r10440;
}


double f_of(float g, float h, float a) {
        float r10441 = g;
        float r10442 = -r10441;
        float r10443 = r10441 * r10441;
        float r10444 = h;
        float r10445 = r10444 * r10444;
        float r10446 = r10443 - r10445;
        float r10447 = sqrt(r10446);
        float r10448 = r10442 - r10447;
        float r10449 = cbrt(r10448);
        float r10450 = r10449 * r10449;
        float r10451 = cbrt(r10447);
        float r10452 = r10451 * r10451;
        float r10453 = r10451 * r10452;
        float r10454 = r10442 - r10453;
        float r10455 = cbrt(r10454);
        float r10456 = r10450 * r10455;
        float r10457 = 1.0f;
        float r10458 = a;
        float r10459 = 2.0f;
        float r10460 = r10458 * r10459;
        float r10461 = r10457 / r10460;
        float r10462 = r10456 * r10461;
        float r10463 = cbrt(r10462);
        float r10464 = r10442 + r10447;
        float r10465 = r10461 * r10464;
        float r10466 = cbrt(r10465);
        float r10467 = r10463 + r10466;
        return r10467;
}

double f_od(double g, double h, double a) {
        double r10468 = g;
        double r10469 = -r10468;
        double r10470 = r10468 * r10468;
        double r10471 = h;
        double r10472 = r10471 * r10471;
        double r10473 = r10470 - r10472;
        double r10474 = sqrt(r10473);
        double r10475 = r10469 - r10474;
        double r10476 = cbrt(r10475);
        double r10477 = r10476 * r10476;
        double r10478 = cbrt(r10474);
        double r10479 = r10478 * r10478;
        double r10480 = r10478 * r10479;
        double r10481 = r10469 - r10480;
        double r10482 = cbrt(r10481);
        double r10483 = r10477 * r10482;
        double r10484 = 1.0;
        double r10485 = a;
        double r10486 = 2.0;
        double r10487 = r10485 * r10486;
        double r10488 = r10484 / r10487;
        double r10489 = r10483 * r10488;
        double r10490 = cbrt(r10489);
        double r10491 = r10469 + r10474;
        double r10492 = r10488 * r10491;
        double r10493 = cbrt(r10492);
        double r10494 = r10490 + r10493;
        return r10494;
}

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 r10495, r10496, r10497, r10498, r10499, r10500, r10501, r10502, r10503, r10504, r10505, r10506, r10507, r10508, r10509, r10510, r10511, r10512, r10513;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10495, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10496, "2", 10, MPFR_RNDN);
        mpfr_init(r10497);
        mpfr_init(r10498);
        mpfr_init(r10499);
        mpfr_init(r10500);
        mpfr_init(r10501);
        mpfr_init(r10502);
        mpfr_init(r10503);
        mpfr_init(r10504);
        mpfr_init(r10505);
        mpfr_init(r10506);
        mpfr_init(r10507);
        mpfr_init(r10508);
        mpfr_init(r10509);
        mpfr_init(r10510);
        mpfr_init(r10511);
        mpfr_init(r10512);
        mpfr_init(r10513);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r10497, a, MPFR_RNDN);
        mpfr_mul(r10498, r10496, r10497, MPFR_RNDN);
        mpfr_div(r10499, r10495, r10498, MPFR_RNDN);
        mpfr_set_d(r10500, g, MPFR_RNDN);
        mpfr_neg(r10501, r10500, MPFR_RNDN);
        mpfr_mul(r10502, r10500, r10500, MPFR_RNDN);
        mpfr_set_d(r10503, h, MPFR_RNDN);
        mpfr_mul(r10504, r10503, r10503, MPFR_RNDN);
        mpfr_sub(r10505, r10502, r10504, MPFR_RNDN);
        mpfr_sqrt(r10506, r10505, MPFR_RNDN);
        mpfr_add(r10507, r10501, r10506, MPFR_RNDN);
        mpfr_mul(r10508, r10499, r10507, MPFR_RNDN);
        mpfr_cbrt(r10509, r10508, MPFR_RNDN);
        mpfr_sub(r10510, r10501, r10506, MPFR_RNDN);
        mpfr_mul(r10511, r10499, r10510, MPFR_RNDN);
        mpfr_cbrt(r10512, r10511, MPFR_RNDN);
        mpfr_add(r10513, r10509, r10512, MPFR_RNDN);
        return mpfr_get_d(r10513, MPFR_RNDN);
}

static mpfr_t r10514, r10515, r10516, r10517, r10518, r10519, r10520, r10521, r10522, r10523, r10524, r10525, r10526, r10527, r10528, r10529, r10530, r10531, r10532, r10533, r10534, r10535, r10536, r10537, r10538, r10539, r10540;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10514);
        mpfr_init(r10515);
        mpfr_init(r10516);
        mpfr_init(r10517);
        mpfr_init(r10518);
        mpfr_init(r10519);
        mpfr_init(r10520);
        mpfr_init(r10521);
        mpfr_init(r10522);
        mpfr_init(r10523);
        mpfr_init(r10524);
        mpfr_init(r10525);
        mpfr_init(r10526);
        mpfr_init(r10527);
        mpfr_init(r10528);
        mpfr_init(r10529);
        mpfr_init_set_str(r10530, "1", 10, MPFR_RNDN);
        mpfr_init(r10531);
        mpfr_init_set_str(r10532, "2", 10, MPFR_RNDN);
        mpfr_init(r10533);
        mpfr_init(r10534);
        mpfr_init(r10535);
        mpfr_init(r10536);
        mpfr_init(r10537);
        mpfr_init(r10538);
        mpfr_init(r10539);
        mpfr_init(r10540);
}

double f_fm(double g, double h, double a) {
        mpfr_set_d(r10514, g, MPFR_RNDN);
        mpfr_neg(r10515, r10514, MPFR_RNDN);
        mpfr_mul(r10516, r10514, r10514, MPFR_RNDN);
        mpfr_set_d(r10517, h, MPFR_RNDN);
        mpfr_mul(r10518, r10517, r10517, MPFR_RNDN);
        mpfr_sub(r10519, r10516, r10518, MPFR_RNDN);
        mpfr_sqrt(r10520, r10519, MPFR_RNDN);
        mpfr_sub(r10521, r10515, r10520, MPFR_RNDN);
        mpfr_cbrt(r10522, r10521, MPFR_RNDN);
        mpfr_mul(r10523, r10522, r10522, MPFR_RNDN);
        mpfr_cbrt(r10524, r10520, MPFR_RNDN);
        mpfr_mul(r10525, r10524, r10524, MPFR_RNDN);
        mpfr_mul(r10526, r10524, r10525, MPFR_RNDN);
        mpfr_sub(r10527, r10515, r10526, MPFR_RNDN);
        mpfr_cbrt(r10528, r10527, MPFR_RNDN);
        mpfr_mul(r10529, r10523, r10528, MPFR_RNDN);
        ;
        mpfr_set_d(r10531, a, MPFR_RNDN);
        ;
        mpfr_mul(r10533, r10531, r10532, MPFR_RNDN);
        mpfr_div(r10534, r10530, r10533, MPFR_RNDN);
        mpfr_mul(r10535, r10529, r10534, MPFR_RNDN);
        mpfr_cbrt(r10536, r10535, MPFR_RNDN);
        mpfr_add(r10537, r10515, r10520, MPFR_RNDN);
        mpfr_mul(r10538, r10534, r10537, MPFR_RNDN);
        mpfr_cbrt(r10539, r10538, MPFR_RNDN);
        mpfr_add(r10540, r10536, r10539, MPFR_RNDN);
        return mpfr_get_d(r10540, MPFR_RNDN);
}

static mpfr_t r10541, r10542, r10543, r10544, r10545, r10546, r10547, r10548, r10549, r10550, r10551, r10552, r10553, r10554, r10555, r10556, r10557, r10558, r10559, r10560, r10561, r10562, r10563, r10564, r10565, r10566, r10567;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10541);
        mpfr_init(r10542);
        mpfr_init(r10543);
        mpfr_init(r10544);
        mpfr_init(r10545);
        mpfr_init(r10546);
        mpfr_init(r10547);
        mpfr_init(r10548);
        mpfr_init(r10549);
        mpfr_init(r10550);
        mpfr_init(r10551);
        mpfr_init(r10552);
        mpfr_init(r10553);
        mpfr_init(r10554);
        mpfr_init(r10555);
        mpfr_init(r10556);
        mpfr_init_set_str(r10557, "1", 10, MPFR_RNDN);
        mpfr_init(r10558);
        mpfr_init_set_str(r10559, "2", 10, MPFR_RNDN);
        mpfr_init(r10560);
        mpfr_init(r10561);
        mpfr_init(r10562);
        mpfr_init(r10563);
        mpfr_init(r10564);
        mpfr_init(r10565);
        mpfr_init(r10566);
        mpfr_init(r10567);
}

double f_dm(double g, double h, double a) {
        mpfr_set_d(r10541, g, MPFR_RNDN);
        mpfr_neg(r10542, r10541, MPFR_RNDN);
        mpfr_mul(r10543, r10541, r10541, MPFR_RNDN);
        mpfr_set_d(r10544, h, MPFR_RNDN);
        mpfr_mul(r10545, r10544, r10544, MPFR_RNDN);
        mpfr_sub(r10546, r10543, r10545, MPFR_RNDN);
        mpfr_sqrt(r10547, r10546, MPFR_RNDN);
        mpfr_sub(r10548, r10542, r10547, MPFR_RNDN);
        mpfr_cbrt(r10549, r10548, MPFR_RNDN);
        mpfr_mul(r10550, r10549, r10549, MPFR_RNDN);
        mpfr_cbrt(r10551, r10547, MPFR_RNDN);
        mpfr_mul(r10552, r10551, r10551, MPFR_RNDN);
        mpfr_mul(r10553, r10551, r10552, MPFR_RNDN);
        mpfr_sub(r10554, r10542, r10553, MPFR_RNDN);
        mpfr_cbrt(r10555, r10554, MPFR_RNDN);
        mpfr_mul(r10556, r10550, r10555, MPFR_RNDN);
        ;
        mpfr_set_d(r10558, a, MPFR_RNDN);
        ;
        mpfr_mul(r10560, r10558, r10559, MPFR_RNDN);
        mpfr_div(r10561, r10557, r10560, MPFR_RNDN);
        mpfr_mul(r10562, r10556, r10561, MPFR_RNDN);
        mpfr_cbrt(r10563, r10562, MPFR_RNDN);
        mpfr_add(r10564, r10542, r10547, MPFR_RNDN);
        mpfr_mul(r10565, r10561, r10564, MPFR_RNDN);
        mpfr_cbrt(r10566, r10565, MPFR_RNDN);
        mpfr_add(r10567, r10563, r10566, MPFR_RNDN);
        return mpfr_get_d(r10567, MPFR_RNDN);
}

