#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 r26725 = 1;
        float r26726 = 2;
        float r26727 = a;
        float r26728 = r26726 * r26727;
        float r26729 = r26725 / r26728;
        float r26730 = g;
        float r26731 = -r26730;
        float r26732 = r26730 * r26730;
        float r26733 = h;
        float r26734 = r26733 * r26733;
        float r26735 = r26732 - r26734;
        float r26736 = sqrt(r26735);
        float r26737 = r26731 + r26736;
        float r26738 = r26729 * r26737;
        float r26739 = cbrt(r26738);
        float r26740 = r26731 - r26736;
        float r26741 = r26729 * r26740;
        float r26742 = cbrt(r26741);
        float r26743 = r26739 + r26742;
        return r26743;
}

double f_id(double g, double h, double a) {
        double r26744 = 1;
        double r26745 = 2;
        double r26746 = a;
        double r26747 = r26745 * r26746;
        double r26748 = r26744 / r26747;
        double r26749 = g;
        double r26750 = -r26749;
        double r26751 = r26749 * r26749;
        double r26752 = h;
        double r26753 = r26752 * r26752;
        double r26754 = r26751 - r26753;
        double r26755 = sqrt(r26754);
        double r26756 = r26750 + r26755;
        double r26757 = r26748 * r26756;
        double r26758 = cbrt(r26757);
        double r26759 = r26750 - r26755;
        double r26760 = r26748 * r26759;
        double r26761 = cbrt(r26760);
        double r26762 = r26758 + r26761;
        return r26762;
}


double f_of(float g, float h, float a) {
        float r26763 = 1;
        float r26764 = 2;
        float r26765 = a;
        float r26766 = r26764 * r26765;
        float r26767 = r26763 / r26766;
        float r26768 = g;
        float r26769 = r26768 * r26768;
        float r26770 = h;
        float r26771 = r26770 * r26770;
        float r26772 = r26769 - r26771;
        float r26773 = sqrt(r26772);
        float r26774 = r26773 - r26768;
        float r26775 = cbrt(r26774);
        float r26776 = r26775 * r26775;
        float r26777 = r26768 - r26770;
        float r26778 = r26768 + r26770;
        float r26779 = r26777 * r26778;
        float r26780 = sqrt(r26779);
        float r26781 = r26780 - r26768;
        float r26782 = cbrt(r26781);
        float r26783 = r26776 * r26782;
        float r26784 = r26767 * r26783;
        float r26785 = cbrt(r26784);
        float r26786 = -r26768;
        float r26787 = r26786 - r26773;
        float r26788 = r26767 * r26787;
        float r26789 = cbrt(r26788);
        float r26790 = r26785 + r26789;
        return r26790;
}

double f_od(double g, double h, double a) {
        double r26791 = 1;
        double r26792 = 2;
        double r26793 = a;
        double r26794 = r26792 * r26793;
        double r26795 = r26791 / r26794;
        double r26796 = g;
        double r26797 = r26796 * r26796;
        double r26798 = h;
        double r26799 = r26798 * r26798;
        double r26800 = r26797 - r26799;
        double r26801 = sqrt(r26800);
        double r26802 = r26801 - r26796;
        double r26803 = cbrt(r26802);
        double r26804 = r26803 * r26803;
        double r26805 = r26796 - r26798;
        double r26806 = r26796 + r26798;
        double r26807 = r26805 * r26806;
        double r26808 = sqrt(r26807);
        double r26809 = r26808 - r26796;
        double r26810 = cbrt(r26809);
        double r26811 = r26804 * r26810;
        double r26812 = r26795 * r26811;
        double r26813 = cbrt(r26812);
        double r26814 = -r26796;
        double r26815 = r26814 - r26801;
        double r26816 = r26795 * r26815;
        double r26817 = cbrt(r26816);
        double r26818 = r26813 + r26817;
        return r26818;
}

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

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26819, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26820, "2", 10, MPFR_RNDN);
        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);
        mpfr_init(r26837);
}

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

static mpfr_t 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26838, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26839, "2", 10, MPFR_RNDN);
        mpfr_init(r26840);
        mpfr_init(r26841);
        mpfr_init(r26842);
        mpfr_init(r26843);
        mpfr_init(r26844);
        mpfr_init(r26845);
        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);
}

double f_fm(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r26840, a, MPFR_RNDN);
        mpfr_mul(r26841, r26839, r26840, MPFR_RNDN);
        mpfr_div(r26842, r26838, r26841, MPFR_RNDN);
        mpfr_set_d(r26843, g, MPFR_RNDN);
        mpfr_mul(r26844, r26843, r26843, MPFR_RNDN);
        mpfr_set_d(r26845, h, MPFR_RNDN);
        mpfr_mul(r26846, r26845, r26845, MPFR_RNDN);
        mpfr_sub(r26847, r26844, r26846, MPFR_RNDN);
        mpfr_sqrt(r26848, r26847, MPFR_RNDN);
        mpfr_sub(r26849, r26848, r26843, MPFR_RNDN);
        mpfr_cbrt(r26850, r26849, MPFR_RNDN);
        mpfr_mul(r26851, r26850, r26850, MPFR_RNDN);
        mpfr_sub(r26852, r26843, r26845, MPFR_RNDN);
        mpfr_add(r26853, r26843, r26845, MPFR_RNDN);
        mpfr_mul(r26854, r26852, r26853, MPFR_RNDN);
        mpfr_sqrt(r26855, r26854, MPFR_RNDN);
        mpfr_sub(r26856, r26855, r26843, MPFR_RNDN);
        mpfr_cbrt(r26857, r26856, MPFR_RNDN);
        mpfr_mul(r26858, r26851, r26857, MPFR_RNDN);
        mpfr_mul(r26859, r26842, r26858, MPFR_RNDN);
        mpfr_cbrt(r26860, r26859, MPFR_RNDN);
        mpfr_neg(r26861, r26843, MPFR_RNDN);
        mpfr_sub(r26862, r26861, r26848, MPFR_RNDN);
        mpfr_mul(r26863, r26842, r26862, MPFR_RNDN);
        mpfr_cbrt(r26864, r26863, MPFR_RNDN);
        mpfr_add(r26865, r26860, r26864, MPFR_RNDN);
        return mpfr_get_d(r26865, MPFR_RNDN);
}

static mpfr_t r26866, r26867, r26868, r26869, r26870, r26871, r26872, r26873, r26874, r26875, r26876, r26877, r26878, r26879, r26880, r26881, r26882, r26883, r26884, r26885, r26886, r26887, r26888, r26889, r26890, r26891, r26892, r26893;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26866, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26867, "2", 10, MPFR_RNDN);
        mpfr_init(r26868);
        mpfr_init(r26869);
        mpfr_init(r26870);
        mpfr_init(r26871);
        mpfr_init(r26872);
        mpfr_init(r26873);
        mpfr_init(r26874);
        mpfr_init(r26875);
        mpfr_init(r26876);
        mpfr_init(r26877);
        mpfr_init(r26878);
        mpfr_init(r26879);
        mpfr_init(r26880);
        mpfr_init(r26881);
        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);
}

double f_dm(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r26868, a, MPFR_RNDN);
        mpfr_mul(r26869, r26867, r26868, MPFR_RNDN);
        mpfr_div(r26870, r26866, r26869, MPFR_RNDN);
        mpfr_set_d(r26871, g, MPFR_RNDN);
        mpfr_mul(r26872, r26871, r26871, MPFR_RNDN);
        mpfr_set_d(r26873, h, MPFR_RNDN);
        mpfr_mul(r26874, r26873, r26873, MPFR_RNDN);
        mpfr_sub(r26875, r26872, r26874, MPFR_RNDN);
        mpfr_sqrt(r26876, r26875, MPFR_RNDN);
        mpfr_sub(r26877, r26876, r26871, MPFR_RNDN);
        mpfr_cbrt(r26878, r26877, MPFR_RNDN);
        mpfr_mul(r26879, r26878, r26878, MPFR_RNDN);
        mpfr_sub(r26880, r26871, r26873, MPFR_RNDN);
        mpfr_add(r26881, r26871, r26873, MPFR_RNDN);
        mpfr_mul(r26882, r26880, r26881, MPFR_RNDN);
        mpfr_sqrt(r26883, r26882, MPFR_RNDN);
        mpfr_sub(r26884, r26883, r26871, MPFR_RNDN);
        mpfr_cbrt(r26885, r26884, MPFR_RNDN);
        mpfr_mul(r26886, r26879, r26885, MPFR_RNDN);
        mpfr_mul(r26887, r26870, r26886, MPFR_RNDN);
        mpfr_cbrt(r26888, r26887, MPFR_RNDN);
        mpfr_neg(r26889, r26871, MPFR_RNDN);
        mpfr_sub(r26890, r26889, r26876, MPFR_RNDN);
        mpfr_mul(r26891, r26870, r26890, MPFR_RNDN);
        mpfr_cbrt(r26892, r26891, MPFR_RNDN);
        mpfr_add(r26893, r26888, r26892, MPFR_RNDN);
        return mpfr_get_d(r26893, MPFR_RNDN);
}

