#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 r26708 = 1;
        float r26709 = 2;
        float r26710 = a;
        float r26711 = r26709 * r26710;
        float r26712 = r26708 / r26711;
        float r26713 = g;
        float r26714 = -r26713;
        float r26715 = r26713 * r26713;
        float r26716 = h;
        float r26717 = r26716 * r26716;
        float r26718 = r26715 - r26717;
        float r26719 = sqrt(r26718);
        float r26720 = r26714 + r26719;
        float r26721 = r26712 * r26720;
        float r26722 = cbrt(r26721);
        float r26723 = r26714 - r26719;
        float r26724 = r26712 * r26723;
        float r26725 = cbrt(r26724);
        float r26726 = r26722 + r26725;
        return r26726;
}

double f_id(double g, double h, double a) {
        double r26727 = 1;
        double r26728 = 2;
        double r26729 = a;
        double r26730 = r26728 * r26729;
        double r26731 = r26727 / r26730;
        double r26732 = g;
        double r26733 = -r26732;
        double r26734 = r26732 * r26732;
        double r26735 = h;
        double r26736 = r26735 * r26735;
        double r26737 = r26734 - r26736;
        double r26738 = sqrt(r26737);
        double r26739 = r26733 + r26738;
        double r26740 = r26731 * r26739;
        double r26741 = cbrt(r26740);
        double r26742 = r26733 - r26738;
        double r26743 = r26731 * r26742;
        double r26744 = cbrt(r26743);
        double r26745 = r26741 + r26744;
        return r26745;
}


double f_of(float g, float h, float a) {
        float r26746 = g;
        float r26747 = 3.220717752324145e-176;
        bool r26748 = r26746 <= r26747;
        float r26749 = -r26746;
        float r26750 = r26749 - r26746;
        float r26751 = cbrt(r26750);
        float r26752 = 1;
        float r26753 = a;
        float r26754 = 2;
        float r26755 = r26753 * r26754;
        float r26756 = r26752 / r26755;
        float r26757 = cbrt(r26756);
        float r26758 = r26746 * r26746;
        float r26759 = h;
        float r26760 = r26759 * r26759;
        float r26761 = r26758 - r26760;
        float r26762 = sqrt(r26761);
        float r26763 = r26749 - r26762;
        float r26764 = r26763 / r26755;
        float r26765 = cbrt(r26764);
        float r26766 = fma(r26751, r26757, r26765);
        float r26767 = cbrt(r26760);
        float r26768 = r26754 * r26753;
        float r26769 = r26768 * r26763;
        float r26770 = cbrt(r26769);
        float r26771 = r26767 / r26770;
        float r26772 = r26746 - r26759;
        float r26773 = r26746 + r26759;
        float r26774 = r26772 * r26773;
        float r26775 = sqrt(r26774);
        float r26776 = r26749 - r26775;
        float r26777 = cbrt(r26776);
        float r26778 = cbrt(r26768);
        float r26779 = r26777 / r26778;
        float r26780 = r26771 + r26779;
        float r26781 = r26748 ? r26766 : r26780;
        return r26781;
}

double f_od(double g, double h, double a) {
        double r26782 = g;
        double r26783 = 3.220717752324145e-176;
        bool r26784 = r26782 <= r26783;
        double r26785 = -r26782;
        double r26786 = r26785 - r26782;
        double r26787 = cbrt(r26786);
        double r26788 = 1;
        double r26789 = a;
        double r26790 = 2;
        double r26791 = r26789 * r26790;
        double r26792 = r26788 / r26791;
        double r26793 = cbrt(r26792);
        double r26794 = r26782 * r26782;
        double r26795 = h;
        double r26796 = r26795 * r26795;
        double r26797 = r26794 - r26796;
        double r26798 = sqrt(r26797);
        double r26799 = r26785 - r26798;
        double r26800 = r26799 / r26791;
        double r26801 = cbrt(r26800);
        double r26802 = fma(r26787, r26793, r26801);
        double r26803 = cbrt(r26796);
        double r26804 = r26790 * r26789;
        double r26805 = r26804 * r26799;
        double r26806 = cbrt(r26805);
        double r26807 = r26803 / r26806;
        double r26808 = r26782 - r26795;
        double r26809 = r26782 + r26795;
        double r26810 = r26808 * r26809;
        double r26811 = sqrt(r26810);
        double r26812 = r26785 - r26811;
        double r26813 = cbrt(r26812);
        double r26814 = cbrt(r26804);
        double r26815 = r26813 / r26814;
        double r26816 = r26807 + r26815;
        double r26817 = r26784 ? r26802 : r26816;
        return r26817;
}

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 r26818, r26819, r26820, r26821, r26822, r26823, r26824, r26825, r26826, r26827, r26828, r26829, r26830, r26831, r26832, r26833, r26834, r26835, r26836;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26818, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26819, "2", 10, MPFR_RNDN);
        mpfr_init(r26820);
        mpfr_init(r26821);
        mpfr_init(r26822);
        mpfr_init(r26823);
        mpfr_init(r26824);
        mpfr_init(r26825);
        mpfr_init(r26826);
        mpfr_init(r26827);
        mpfr_init(r26828);
        mpfr_init(r26829);
        mpfr_init(r26830);
        mpfr_init(r26831);
        mpfr_init(r26832);
        mpfr_init(r26833);
        mpfr_init(r26834);
        mpfr_init(r26835);
        mpfr_init(r26836);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r26820, a, MPFR_RNDN);
        mpfr_mul(r26821, r26819, r26820, MPFR_RNDN);
        mpfr_div(r26822, r26818, r26821, MPFR_RNDN);
        mpfr_set_d(r26823, g, MPFR_RNDN);
        mpfr_neg(r26824, r26823, MPFR_RNDN);
        mpfr_mul(r26825, r26823, r26823, MPFR_RNDN);
        mpfr_set_d(r26826, h, MPFR_RNDN);
        mpfr_mul(r26827, r26826, r26826, MPFR_RNDN);
        mpfr_sub(r26828, r26825, r26827, MPFR_RNDN);
        mpfr_sqrt(r26829, r26828, MPFR_RNDN);
        mpfr_add(r26830, r26824, r26829, MPFR_RNDN);
        mpfr_mul(r26831, r26822, r26830, MPFR_RNDN);
        mpfr_cbrt(r26832, r26831, MPFR_RNDN);
        mpfr_sub(r26833, r26824, r26829, MPFR_RNDN);
        mpfr_mul(r26834, r26822, r26833, MPFR_RNDN);
        mpfr_cbrt(r26835, r26834, MPFR_RNDN);
        mpfr_add(r26836, r26832, r26835, MPFR_RNDN);
        return mpfr_get_d(r26836, MPFR_RNDN);
}

static mpfr_t r26837, r26838, r26839, r26840, r26841, r26842, r26843, r26844, r26845, r26846, r26847, r26848, r26849, r26850, r26851, r26852, r26853, r26854, r26855, r26856, r26857, r26858, r26859, r26860, r26861, r26862, r26863, r26864, r26865, r26866, r26867, r26868, r26869, r26870, r26871, r26872;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26837);
        mpfr_init_set_str(r26838, "3.220717752324145e-176", 10, MPFR_RNDN);
        mpfr_init(r26839);
        mpfr_init(r26840);
        mpfr_init(r26841);
        mpfr_init(r26842);
        mpfr_init_set_str(r26843, "1", 10, MPFR_RNDN);
        mpfr_init(r26844);
        mpfr_init_set_str(r26845, "2", 10, MPFR_RNDN);
        mpfr_init(r26846);
        mpfr_init(r26847);
        mpfr_init(r26848);
        mpfr_init(r26849);
        mpfr_init(r26850);
        mpfr_init(r26851);
        mpfr_init(r26852);
        mpfr_init(r26853);
        mpfr_init(r26854);
        mpfr_init(r26855);
        mpfr_init(r26856);
        mpfr_init(r26857);
        mpfr_init(r26858);
        mpfr_init(r26859);
        mpfr_init(r26860);
        mpfr_init(r26861);
        mpfr_init(r26862);
        mpfr_init(r26863);
        mpfr_init(r26864);
        mpfr_init(r26865);
        mpfr_init(r26866);
        mpfr_init(r26867);
        mpfr_init(r26868);
        mpfr_init(r26869);
        mpfr_init(r26870);
        mpfr_init(r26871);
        mpfr_init(r26872);
}

double f_fm(double g, double h, double a) {
        mpfr_set_d(r26837, g, MPFR_RNDN);
        ;
        mpfr_set_si(r26839, mpfr_cmp(r26837, r26838) <= 0, MPFR_RNDN);
        mpfr_neg(r26840, r26837, MPFR_RNDN);
        mpfr_sub(r26841, r26840, r26837, MPFR_RNDN);
        mpfr_cbrt(r26842, r26841, MPFR_RNDN);
        ;
        mpfr_set_d(r26844, a, MPFR_RNDN);
        ;
        mpfr_mul(r26846, r26844, r26845, MPFR_RNDN);
        mpfr_div(r26847, r26843, r26846, MPFR_RNDN);
        mpfr_cbrt(r26848, r26847, MPFR_RNDN);
        mpfr_mul(r26849, r26837, r26837, MPFR_RNDN);
        mpfr_set_d(r26850, h, MPFR_RNDN);
        mpfr_mul(r26851, r26850, r26850, MPFR_RNDN);
        mpfr_sub(r26852, r26849, r26851, MPFR_RNDN);
        mpfr_sqrt(r26853, r26852, MPFR_RNDN);
        mpfr_sub(r26854, r26840, r26853, MPFR_RNDN);
        mpfr_div(r26855, r26854, r26846, MPFR_RNDN);
        mpfr_cbrt(r26856, r26855, MPFR_RNDN);
        mpfr_fma(r26857, r26842, r26848, r26856, MPFR_RNDN);
        mpfr_cbrt(r26858, r26851, MPFR_RNDN);
        mpfr_mul(r26859, r26845, r26844, MPFR_RNDN);
        mpfr_mul(r26860, r26859, r26854, MPFR_RNDN);
        mpfr_cbrt(r26861, r26860, MPFR_RNDN);
        mpfr_div(r26862, r26858, r26861, MPFR_RNDN);
        mpfr_sub(r26863, r26837, r26850, MPFR_RNDN);
        mpfr_add(r26864, r26837, r26850, MPFR_RNDN);
        mpfr_mul(r26865, r26863, r26864, MPFR_RNDN);
        mpfr_sqrt(r26866, r26865, MPFR_RNDN);
        mpfr_sub(r26867, r26840, r26866, MPFR_RNDN);
        mpfr_cbrt(r26868, r26867, MPFR_RNDN);
        mpfr_cbrt(r26869, r26859, MPFR_RNDN);
        mpfr_div(r26870, r26868, r26869, MPFR_RNDN);
        mpfr_add(r26871, r26862, r26870, MPFR_RNDN);
        if (mpfr_get_si(r26839, MPFR_RNDN)) { mpfr_set(r26872, r26857, MPFR_RNDN); } else { mpfr_set(r26872, r26871, MPFR_RNDN); };
        return mpfr_get_d(r26872, MPFR_RNDN);
}

static mpfr_t r26873, r26874, r26875, r26876, r26877, r26878, r26879, r26880, r26881, r26882, r26883, r26884, r26885, r26886, r26887, r26888, r26889, r26890, r26891, r26892, r26893, r26894, r26895, r26896, r26897, r26898, r26899, r26900, r26901, r26902, r26903, r26904, r26905, r26906, r26907, r26908;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26873);
        mpfr_init_set_str(r26874, "3.220717752324145e-176", 10, MPFR_RNDN);
        mpfr_init(r26875);
        mpfr_init(r26876);
        mpfr_init(r26877);
        mpfr_init(r26878);
        mpfr_init_set_str(r26879, "1", 10, MPFR_RNDN);
        mpfr_init(r26880);
        mpfr_init_set_str(r26881, "2", 10, MPFR_RNDN);
        mpfr_init(r26882);
        mpfr_init(r26883);
        mpfr_init(r26884);
        mpfr_init(r26885);
        mpfr_init(r26886);
        mpfr_init(r26887);
        mpfr_init(r26888);
        mpfr_init(r26889);
        mpfr_init(r26890);
        mpfr_init(r26891);
        mpfr_init(r26892);
        mpfr_init(r26893);
        mpfr_init(r26894);
        mpfr_init(r26895);
        mpfr_init(r26896);
        mpfr_init(r26897);
        mpfr_init(r26898);
        mpfr_init(r26899);
        mpfr_init(r26900);
        mpfr_init(r26901);
        mpfr_init(r26902);
        mpfr_init(r26903);
        mpfr_init(r26904);
        mpfr_init(r26905);
        mpfr_init(r26906);
        mpfr_init(r26907);
        mpfr_init(r26908);
}

double f_dm(double g, double h, double a) {
        mpfr_set_d(r26873, g, MPFR_RNDN);
        ;
        mpfr_set_si(r26875, mpfr_cmp(r26873, r26874) <= 0, MPFR_RNDN);
        mpfr_neg(r26876, r26873, MPFR_RNDN);
        mpfr_sub(r26877, r26876, r26873, MPFR_RNDN);
        mpfr_cbrt(r26878, r26877, MPFR_RNDN);
        ;
        mpfr_set_d(r26880, a, MPFR_RNDN);
        ;
        mpfr_mul(r26882, r26880, r26881, MPFR_RNDN);
        mpfr_div(r26883, r26879, r26882, MPFR_RNDN);
        mpfr_cbrt(r26884, r26883, MPFR_RNDN);
        mpfr_mul(r26885, r26873, r26873, MPFR_RNDN);
        mpfr_set_d(r26886, h, MPFR_RNDN);
        mpfr_mul(r26887, r26886, r26886, MPFR_RNDN);
        mpfr_sub(r26888, r26885, r26887, MPFR_RNDN);
        mpfr_sqrt(r26889, r26888, MPFR_RNDN);
        mpfr_sub(r26890, r26876, r26889, MPFR_RNDN);
        mpfr_div(r26891, r26890, r26882, MPFR_RNDN);
        mpfr_cbrt(r26892, r26891, MPFR_RNDN);
        mpfr_fma(r26893, r26878, r26884, r26892, MPFR_RNDN);
        mpfr_cbrt(r26894, r26887, MPFR_RNDN);
        mpfr_mul(r26895, r26881, r26880, MPFR_RNDN);
        mpfr_mul(r26896, r26895, r26890, MPFR_RNDN);
        mpfr_cbrt(r26897, r26896, MPFR_RNDN);
        mpfr_div(r26898, r26894, r26897, MPFR_RNDN);
        mpfr_sub(r26899, r26873, r26886, MPFR_RNDN);
        mpfr_add(r26900, r26873, r26886, MPFR_RNDN);
        mpfr_mul(r26901, r26899, r26900, MPFR_RNDN);
        mpfr_sqrt(r26902, r26901, MPFR_RNDN);
        mpfr_sub(r26903, r26876, r26902, MPFR_RNDN);
        mpfr_cbrt(r26904, r26903, MPFR_RNDN);
        mpfr_cbrt(r26905, r26895, MPFR_RNDN);
        mpfr_div(r26906, r26904, r26905, MPFR_RNDN);
        mpfr_add(r26907, r26898, r26906, MPFR_RNDN);
        if (mpfr_get_si(r26875, MPFR_RNDN)) { mpfr_set(r26908, r26893, MPFR_RNDN); } else { mpfr_set(r26908, r26907, MPFR_RNDN); };
        return mpfr_get_d(r26908, MPFR_RNDN);
}

