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

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

double f_if(float g, float h) {
        float r26597 = 2;
        float r26598 = atan2(1.0, 0.0);
        float r26599 = r26597 * r26598;
        float r26600 = 3;
        float r26601 = r26599 / r26600;
        float r26602 = g;
        float r26603 = -r26602;
        float r26604 = h;
        float r26605 = r26603 / r26604;
        float r26606 = acos(r26605);
        float r26607 = r26606 / r26600;
        float r26608 = r26601 + r26607;
        float r26609 = cos(r26608);
        float r26610 = r26597 * r26609;
        return r26610;
}

double f_id(double g, double h) {
        double r26611 = 2;
        double r26612 = atan2(1.0, 0.0);
        double r26613 = r26611 * r26612;
        double r26614 = 3;
        double r26615 = r26613 / r26614;
        double r26616 = g;
        double r26617 = -r26616;
        double r26618 = h;
        double r26619 = r26617 / r26618;
        double r26620 = acos(r26619);
        double r26621 = r26620 / r26614;
        double r26622 = r26615 + r26621;
        double r26623 = cos(r26622);
        double r26624 = r26611 * r26623;
        return r26624;
}


double f_of(float g, float h) {
        float r26625 = 2;
        float r26626 = g;
        float r26627 = h;
        float r26628 = r26626 / r26627;
        float r26629 = acos(r26628);
        float r26630 = 3;
        float r26631 = r26629 / r26630;
        float r26632 = cos(r26631);
        float r26633 = 1;
        float r26634 = r26625 + r26633;
        float r26635 = atan2(1.0, 0.0);
        float r26636 = r26635 / r26630;
        float r26637 = r26634 * r26636;
        float r26638 = cos(r26637);
        float r26639 = r26632 * r26638;
        float r26640 = sin(r26631);
        float r26641 = sin(r26637);
        float r26642 = r26640 * r26641;
        float r26643 = r26639 + r26642;
        float r26644 = r26625 * r26643;
        return r26644;
}

double f_od(double g, double h) {
        double r26645 = 2;
        double r26646 = g;
        double r26647 = h;
        double r26648 = r26646 / r26647;
        double r26649 = acos(r26648);
        double r26650 = 3;
        double r26651 = r26649 / r26650;
        double r26652 = cos(r26651);
        double r26653 = 1;
        double r26654 = r26645 + r26653;
        double r26655 = atan2(1.0, 0.0);
        double r26656 = r26655 / r26650;
        double r26657 = r26654 * r26656;
        double r26658 = cos(r26657);
        double r26659 = r26652 * r26658;
        double r26660 = sin(r26651);
        double r26661 = sin(r26657);
        double r26662 = r26660 * r26661;
        double r26663 = r26659 + r26662;
        double r26664 = r26645 * r26663;
        return r26664;
}

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 r26665, r26666, r26667, r26668, r26669, r26670, r26671, r26672, r26673, r26674, r26675, r26676, r26677, r26678;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r26665, "2", 10, MPFR_RNDN);
        mpfr_init(r26666);
        mpfr_init(r26667);
        mpfr_init_set_str(r26668, "3", 10, MPFR_RNDN);
        mpfr_init(r26669);
        mpfr_init(r26670);
        mpfr_init(r26671);
        mpfr_init(r26672);
        mpfr_init(r26673);
        mpfr_init(r26674);
        mpfr_init(r26675);
        mpfr_init(r26676);
        mpfr_init(r26677);
        mpfr_init(r26678);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r26666, MPFR_RNDN);
        mpfr_mul(r26667, r26665, r26666, MPFR_RNDN);
        ;
        mpfr_div(r26669, r26667, r26668, MPFR_RNDN);
        mpfr_set_d(r26670, g, MPFR_RNDN);
        mpfr_neg(r26671, r26670, MPFR_RNDN);
        mpfr_set_d(r26672, h, MPFR_RNDN);
        mpfr_div(r26673, r26671, r26672, MPFR_RNDN);
        mpfr_acos(r26674, r26673, MPFR_RNDN);
        mpfr_div(r26675, r26674, r26668, MPFR_RNDN);
        mpfr_add(r26676, r26669, r26675, MPFR_RNDN);
        mpfr_cos(r26677, r26676, MPFR_RNDN);
        mpfr_mul(r26678, r26665, r26677, MPFR_RNDN);
        return mpfr_get_d(r26678, MPFR_RNDN);
}

static mpfr_t r26679, r26680, r26681, r26682, r26683, r26684, r26685, r26686, r26687, r26688, r26689, r26690, r26691, r26692, r26693, r26694, r26695, r26696, r26697, r26698;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r26679, "2", 10, MPFR_RNDN);
        mpfr_init(r26680);
        mpfr_init(r26681);
        mpfr_init(r26682);
        mpfr_init(r26683);
        mpfr_init_set_str(r26684, "3", 10, MPFR_RNDN);
        mpfr_init(r26685);
        mpfr_init(r26686);
        mpfr_init_set_str(r26687, "1", 10, MPFR_RNDN);
        mpfr_init(r26688);
        mpfr_init(r26689);
        mpfr_init(r26690);
        mpfr_init(r26691);
        mpfr_init(r26692);
        mpfr_init(r26693);
        mpfr_init(r26694);
        mpfr_init(r26695);
        mpfr_init(r26696);
        mpfr_init(r26697);
        mpfr_init(r26698);
}

double f_fm(double g, double h) {
        ;
        mpfr_set_d(r26680, g, MPFR_RNDN);
        mpfr_set_d(r26681, h, MPFR_RNDN);
        mpfr_div(r26682, r26680, r26681, MPFR_RNDN);
        mpfr_acos(r26683, r26682, MPFR_RNDN);
        ;
        mpfr_div(r26685, r26683, r26684, MPFR_RNDN);
        mpfr_cos(r26686, r26685, MPFR_RNDN);
        ;
        mpfr_add(r26688, r26679, r26687, MPFR_RNDN);
        mpfr_const_pi(r26689, MPFR_RNDN);
        mpfr_div(r26690, r26689, r26684, MPFR_RNDN);
        mpfr_mul(r26691, r26688, r26690, MPFR_RNDN);
        mpfr_cos(r26692, r26691, MPFR_RNDN);
        mpfr_mul(r26693, r26686, r26692, MPFR_RNDN);
        mpfr_sin(r26694, r26685, MPFR_RNDN);
        mpfr_sin(r26695, r26691, MPFR_RNDN);
        mpfr_mul(r26696, r26694, r26695, MPFR_RNDN);
        mpfr_add(r26697, r26693, r26696, MPFR_RNDN);
        mpfr_mul(r26698, r26679, r26697, MPFR_RNDN);
        return mpfr_get_d(r26698, MPFR_RNDN);
}

static mpfr_t r26699, r26700, r26701, r26702, r26703, r26704, r26705, r26706, r26707, r26708, r26709, r26710, r26711, r26712, r26713, r26714, r26715, r26716, r26717, r26718;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r26699, "2", 10, MPFR_RNDN);
        mpfr_init(r26700);
        mpfr_init(r26701);
        mpfr_init(r26702);
        mpfr_init(r26703);
        mpfr_init_set_str(r26704, "3", 10, MPFR_RNDN);
        mpfr_init(r26705);
        mpfr_init(r26706);
        mpfr_init_set_str(r26707, "1", 10, MPFR_RNDN);
        mpfr_init(r26708);
        mpfr_init(r26709);
        mpfr_init(r26710);
        mpfr_init(r26711);
        mpfr_init(r26712);
        mpfr_init(r26713);
        mpfr_init(r26714);
        mpfr_init(r26715);
        mpfr_init(r26716);
        mpfr_init(r26717);
        mpfr_init(r26718);
}

double f_dm(double g, double h) {
        ;
        mpfr_set_d(r26700, g, MPFR_RNDN);
        mpfr_set_d(r26701, h, MPFR_RNDN);
        mpfr_div(r26702, r26700, r26701, MPFR_RNDN);
        mpfr_acos(r26703, r26702, MPFR_RNDN);
        ;
        mpfr_div(r26705, r26703, r26704, MPFR_RNDN);
        mpfr_cos(r26706, r26705, MPFR_RNDN);
        ;
        mpfr_add(r26708, r26699, r26707, MPFR_RNDN);
        mpfr_const_pi(r26709, MPFR_RNDN);
        mpfr_div(r26710, r26709, r26704, MPFR_RNDN);
        mpfr_mul(r26711, r26708, r26710, MPFR_RNDN);
        mpfr_cos(r26712, r26711, MPFR_RNDN);
        mpfr_mul(r26713, r26706, r26712, MPFR_RNDN);
        mpfr_sin(r26714, r26705, MPFR_RNDN);
        mpfr_sin(r26715, r26711, MPFR_RNDN);
        mpfr_mul(r26716, r26714, r26715, MPFR_RNDN);
        mpfr_add(r26717, r26713, r26716, MPFR_RNDN);
        mpfr_mul(r26718, r26699, r26717, MPFR_RNDN);
        return mpfr_get_d(r26718, MPFR_RNDN);
}

