#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 r10756 = 1;
        float r10757 = 2;
        float r10758 = a;
        float r10759 = r10757 * r10758;
        float r10760 = r10756 / r10759;
        float r10761 = g;
        float r10762 = -r10761;
        float r10763 = r10761 * r10761;
        float r10764 = h;
        float r10765 = r10764 * r10764;
        float r10766 = r10763 - r10765;
        float r10767 = sqrt(r10766);
        float r10768 = r10762 + r10767;
        float r10769 = r10760 * r10768;
        float r10770 = cbrt(r10769);
        float r10771 = r10762 - r10767;
        float r10772 = r10760 * r10771;
        float r10773 = cbrt(r10772);
        float r10774 = r10770 + r10773;
        return r10774;
}

double f_id(double g, double h, double a) {
        double r10775 = 1;
        double r10776 = 2;
        double r10777 = a;
        double r10778 = r10776 * r10777;
        double r10779 = r10775 / r10778;
        double r10780 = g;
        double r10781 = -r10780;
        double r10782 = r10780 * r10780;
        double r10783 = h;
        double r10784 = r10783 * r10783;
        double r10785 = r10782 - r10784;
        double r10786 = sqrt(r10785);
        double r10787 = r10781 + r10786;
        double r10788 = r10779 * r10787;
        double r10789 = cbrt(r10788);
        double r10790 = r10781 - r10786;
        double r10791 = r10779 * r10790;
        double r10792 = cbrt(r10791);
        double r10793 = r10789 + r10792;
        return r10793;
}


double f_of(float g, float h, float a) {
        float r10794 = g;
        float r10795 = -6.249865151781854e-161;
        bool r10796 = r10794 <= r10795;
        float r10797 = h;
        float r10798 = r10797 + r10794;
        float r10799 = r10794 - r10797;
        float r10800 = r10798 * r10799;
        float r10801 = sqrt(r10800);
        float r10802 = r10801 - r10794;
        float r10803 = cbrt(r10802);
        float r10804 = 2;
        float r10805 = a;
        float r10806 = r10804 * r10805;
        float r10807 = cbrt(r10806);
        float r10808 = r10803 / r10807;
        float r10809 = r10794 * r10794;
        float r10810 = r10797 - r10794;
        float r10811 = r10798 * r10810;
        float r10812 = r10809 + r10811;
        float r10813 = r10812 / r10802;
        float r10814 = r10813 / r10804;
        float r10815 = cbrt(r10814);
        float r10816 = 1;
        float r10817 = r10816 / r10805;
        float r10818 = cbrt(r10817);
        float r10819 = r10815 * r10818;
        float r10820 = r10808 + r10819;
        float r10821 = 1.945276223793963e-134;
        bool r10822 = r10794 <= r10821;
        float r10823 = -r10794;
        float r10824 = r10823 - r10794;
        float r10825 = r10824 / r10804;
        float r10826 = cbrt(r10825);
        float r10827 = r10818 * r10826;
        float r10828 = r10802 / r10806;
        float r10829 = cbrt(r10828);
        float r10830 = r10827 + r10829;
        float r10831 = -r10797;
        float r10832 = r10831 * r10797;
        float r10833 = r10801 + r10794;
        float r10834 = r10832 / r10833;
        float r10835 = cbrt(r10834);
        float r10836 = r10835 / r10807;
        float r10837 = r10823 - r10801;
        float r10838 = r10837 / r10804;
        float r10839 = cbrt(r10838);
        float r10840 = r10818 * r10839;
        float r10841 = r10836 + r10840;
        float r10842 = r10822 ? r10830 : r10841;
        float r10843 = r10796 ? r10820 : r10842;
        return r10843;
}

double f_od(double g, double h, double a) {
        double r10844 = g;
        double r10845 = -6.249865151781854e-161;
        bool r10846 = r10844 <= r10845;
        double r10847 = h;
        double r10848 = r10847 + r10844;
        double r10849 = r10844 - r10847;
        double r10850 = r10848 * r10849;
        double r10851 = sqrt(r10850);
        double r10852 = r10851 - r10844;
        double r10853 = cbrt(r10852);
        double r10854 = 2;
        double r10855 = a;
        double r10856 = r10854 * r10855;
        double r10857 = cbrt(r10856);
        double r10858 = r10853 / r10857;
        double r10859 = r10844 * r10844;
        double r10860 = r10847 - r10844;
        double r10861 = r10848 * r10860;
        double r10862 = r10859 + r10861;
        double r10863 = r10862 / r10852;
        double r10864 = r10863 / r10854;
        double r10865 = cbrt(r10864);
        double r10866 = 1;
        double r10867 = r10866 / r10855;
        double r10868 = cbrt(r10867);
        double r10869 = r10865 * r10868;
        double r10870 = r10858 + r10869;
        double r10871 = 1.945276223793963e-134;
        bool r10872 = r10844 <= r10871;
        double r10873 = -r10844;
        double r10874 = r10873 - r10844;
        double r10875 = r10874 / r10854;
        double r10876 = cbrt(r10875);
        double r10877 = r10868 * r10876;
        double r10878 = r10852 / r10856;
        double r10879 = cbrt(r10878);
        double r10880 = r10877 + r10879;
        double r10881 = -r10847;
        double r10882 = r10881 * r10847;
        double r10883 = r10851 + r10844;
        double r10884 = r10882 / r10883;
        double r10885 = cbrt(r10884);
        double r10886 = r10885 / r10857;
        double r10887 = r10873 - r10851;
        double r10888 = r10887 / r10854;
        double r10889 = cbrt(r10888);
        double r10890 = r10868 * r10889;
        double r10891 = r10886 + r10890;
        double r10892 = r10872 ? r10880 : r10891;
        double r10893 = r10846 ? r10870 : r10892;
        return r10893;
}

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 r10894, r10895, r10896, r10897, r10898, r10899, r10900, r10901, r10902, r10903, r10904, r10905, r10906, r10907, r10908, r10909, r10910, r10911, r10912;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10894, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10895, "2", 10, MPFR_RNDN);
        mpfr_init(r10896);
        mpfr_init(r10897);
        mpfr_init(r10898);
        mpfr_init(r10899);
        mpfr_init(r10900);
        mpfr_init(r10901);
        mpfr_init(r10902);
        mpfr_init(r10903);
        mpfr_init(r10904);
        mpfr_init(r10905);
        mpfr_init(r10906);
        mpfr_init(r10907);
        mpfr_init(r10908);
        mpfr_init(r10909);
        mpfr_init(r10910);
        mpfr_init(r10911);
        mpfr_init(r10912);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r10896, a, MPFR_RNDN);
        mpfr_mul(r10897, r10895, r10896, MPFR_RNDN);
        mpfr_div(r10898, r10894, r10897, MPFR_RNDN);
        mpfr_set_d(r10899, g, MPFR_RNDN);
        mpfr_neg(r10900, r10899, MPFR_RNDN);
        mpfr_mul(r10901, r10899, r10899, MPFR_RNDN);
        mpfr_set_d(r10902, h, MPFR_RNDN);
        mpfr_mul(r10903, r10902, r10902, MPFR_RNDN);
        mpfr_sub(r10904, r10901, r10903, MPFR_RNDN);
        mpfr_sqrt(r10905, r10904, MPFR_RNDN);
        mpfr_add(r10906, r10900, r10905, MPFR_RNDN);
        mpfr_mul(r10907, r10898, r10906, MPFR_RNDN);
        mpfr_cbrt(r10908, r10907, MPFR_RNDN);
        mpfr_sub(r10909, r10900, r10905, MPFR_RNDN);
        mpfr_mul(r10910, r10898, r10909, MPFR_RNDN);
        mpfr_cbrt(r10911, r10910, MPFR_RNDN);
        mpfr_add(r10912, r10908, r10911, MPFR_RNDN);
        return mpfr_get_d(r10912, MPFR_RNDN);
}

static mpfr_t r10913, r10914, r10915, r10916, r10917, r10918, r10919, r10920, r10921, r10922, r10923, r10924, r10925, r10926, r10927, r10928, r10929, r10930, r10931, r10932, r10933, r10934, r10935, r10936, r10937, r10938, r10939, r10940, r10941, r10942, r10943, r10944, r10945, r10946, r10947, r10948, r10949, r10950, r10951, r10952, r10953, r10954, r10955, r10956, r10957, r10958, r10959, r10960, r10961, r10962;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10913);
        mpfr_init_set_str(r10914, "-6.249865151781854e-161", 10, MPFR_RNDN);
        mpfr_init(r10915);
        mpfr_init(r10916);
        mpfr_init(r10917);
        mpfr_init(r10918);
        mpfr_init(r10919);
        mpfr_init(r10920);
        mpfr_init(r10921);
        mpfr_init(r10922);
        mpfr_init_set_str(r10923, "2", 10, MPFR_RNDN);
        mpfr_init(r10924);
        mpfr_init(r10925);
        mpfr_init(r10926);
        mpfr_init(r10927);
        mpfr_init(r10928);
        mpfr_init(r10929);
        mpfr_init(r10930);
        mpfr_init(r10931);
        mpfr_init(r10932);
        mpfr_init(r10933);
        mpfr_init(r10934);
        mpfr_init_set_str(r10935, "1", 10, MPFR_RNDN);
        mpfr_init(r10936);
        mpfr_init(r10937);
        mpfr_init(r10938);
        mpfr_init(r10939);
        mpfr_init_set_str(r10940, "1.945276223793963e-134", 10, MPFR_RNDN);
        mpfr_init(r10941);
        mpfr_init(r10942);
        mpfr_init(r10943);
        mpfr_init(r10944);
        mpfr_init(r10945);
        mpfr_init(r10946);
        mpfr_init(r10947);
        mpfr_init(r10948);
        mpfr_init(r10949);
        mpfr_init(r10950);
        mpfr_init(r10951);
        mpfr_init(r10952);
        mpfr_init(r10953);
        mpfr_init(r10954);
        mpfr_init(r10955);
        mpfr_init(r10956);
        mpfr_init(r10957);
        mpfr_init(r10958);
        mpfr_init(r10959);
        mpfr_init(r10960);
        mpfr_init(r10961);
        mpfr_init(r10962);
}

double f_fm(double g, double h, double a) {
        mpfr_set_d(r10913, g, MPFR_RNDN);
        ;
        mpfr_set_si(r10915, mpfr_cmp(r10913, r10914) <= 0, MPFR_RNDN);
        mpfr_set_d(r10916, h, MPFR_RNDN);
        mpfr_add(r10917, r10916, r10913, MPFR_RNDN);
        mpfr_sub(r10918, r10913, r10916, MPFR_RNDN);
        mpfr_mul(r10919, r10917, r10918, MPFR_RNDN);
        mpfr_sqrt(r10920, r10919, MPFR_RNDN);
        mpfr_sub(r10921, r10920, r10913, MPFR_RNDN);
        mpfr_cbrt(r10922, r10921, MPFR_RNDN);
        ;
        mpfr_set_d(r10924, a, MPFR_RNDN);
        mpfr_mul(r10925, r10923, r10924, MPFR_RNDN);
        mpfr_cbrt(r10926, r10925, MPFR_RNDN);
        mpfr_div(r10927, r10922, r10926, MPFR_RNDN);
        mpfr_mul(r10928, r10913, r10913, MPFR_RNDN);
        mpfr_sub(r10929, r10916, r10913, MPFR_RNDN);
        mpfr_mul(r10930, r10917, r10929, MPFR_RNDN);
        mpfr_add(r10931, r10928, r10930, MPFR_RNDN);
        mpfr_div(r10932, r10931, r10921, MPFR_RNDN);
        mpfr_div(r10933, r10932, r10923, MPFR_RNDN);
        mpfr_cbrt(r10934, r10933, MPFR_RNDN);
        ;
        mpfr_div(r10936, r10935, r10924, MPFR_RNDN);
        mpfr_cbrt(r10937, r10936, MPFR_RNDN);
        mpfr_mul(r10938, r10934, r10937, MPFR_RNDN);
        mpfr_add(r10939, r10927, r10938, MPFR_RNDN);
        ;
        mpfr_set_si(r10941, mpfr_cmp(r10913, r10940) <= 0, MPFR_RNDN);
        mpfr_neg(r10942, r10913, MPFR_RNDN);
        mpfr_sub(r10943, r10942, r10913, MPFR_RNDN);
        mpfr_div(r10944, r10943, r10923, MPFR_RNDN);
        mpfr_cbrt(r10945, r10944, MPFR_RNDN);
        mpfr_mul(r10946, r10937, r10945, MPFR_RNDN);
        mpfr_div(r10947, r10921, r10925, MPFR_RNDN);
        mpfr_cbrt(r10948, r10947, MPFR_RNDN);
        mpfr_add(r10949, r10946, r10948, MPFR_RNDN);
        mpfr_neg(r10950, r10916, MPFR_RNDN);
        mpfr_mul(r10951, r10950, r10916, MPFR_RNDN);
        mpfr_add(r10952, r10920, r10913, MPFR_RNDN);
        mpfr_div(r10953, r10951, r10952, MPFR_RNDN);
        mpfr_cbrt(r10954, r10953, MPFR_RNDN);
        mpfr_div(r10955, r10954, r10926, MPFR_RNDN);
        mpfr_sub(r10956, r10942, r10920, MPFR_RNDN);
        mpfr_div(r10957, r10956, r10923, MPFR_RNDN);
        mpfr_cbrt(r10958, r10957, MPFR_RNDN);
        mpfr_mul(r10959, r10937, r10958, MPFR_RNDN);
        mpfr_add(r10960, r10955, r10959, MPFR_RNDN);
        if (mpfr_get_si(r10941, MPFR_RNDN)) { mpfr_set(r10961, r10949, MPFR_RNDN); } else { mpfr_set(r10961, r10960, MPFR_RNDN); };
        if (mpfr_get_si(r10915, MPFR_RNDN)) { mpfr_set(r10962, r10939, MPFR_RNDN); } else { mpfr_set(r10962, r10961, MPFR_RNDN); };
        return mpfr_get_d(r10962, MPFR_RNDN);
}

static mpfr_t r10963, r10964, r10965, r10966, r10967, r10968, r10969, r10970, r10971, r10972, r10973, r10974, r10975, r10976, r10977, r10978, r10979, r10980, r10981, r10982, r10983, r10984, r10985, r10986, r10987, r10988, r10989, r10990, r10991, r10992, r10993, r10994, r10995, r10996, r10997, r10998, r10999, r11000, r11001, r11002, r11003, r11004, r11005, r11006, r11007, r11008, r11009, r11010, r11011, r11012;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10963);
        mpfr_init_set_str(r10964, "-6.249865151781854e-161", 10, MPFR_RNDN);
        mpfr_init(r10965);
        mpfr_init(r10966);
        mpfr_init(r10967);
        mpfr_init(r10968);
        mpfr_init(r10969);
        mpfr_init(r10970);
        mpfr_init(r10971);
        mpfr_init(r10972);
        mpfr_init_set_str(r10973, "2", 10, MPFR_RNDN);
        mpfr_init(r10974);
        mpfr_init(r10975);
        mpfr_init(r10976);
        mpfr_init(r10977);
        mpfr_init(r10978);
        mpfr_init(r10979);
        mpfr_init(r10980);
        mpfr_init(r10981);
        mpfr_init(r10982);
        mpfr_init(r10983);
        mpfr_init(r10984);
        mpfr_init_set_str(r10985, "1", 10, MPFR_RNDN);
        mpfr_init(r10986);
        mpfr_init(r10987);
        mpfr_init(r10988);
        mpfr_init(r10989);
        mpfr_init_set_str(r10990, "1.945276223793963e-134", 10, MPFR_RNDN);
        mpfr_init(r10991);
        mpfr_init(r10992);
        mpfr_init(r10993);
        mpfr_init(r10994);
        mpfr_init(r10995);
        mpfr_init(r10996);
        mpfr_init(r10997);
        mpfr_init(r10998);
        mpfr_init(r10999);
        mpfr_init(r11000);
        mpfr_init(r11001);
        mpfr_init(r11002);
        mpfr_init(r11003);
        mpfr_init(r11004);
        mpfr_init(r11005);
        mpfr_init(r11006);
        mpfr_init(r11007);
        mpfr_init(r11008);
        mpfr_init(r11009);
        mpfr_init(r11010);
        mpfr_init(r11011);
        mpfr_init(r11012);
}

double f_dm(double g, double h, double a) {
        mpfr_set_d(r10963, g, MPFR_RNDN);
        ;
        mpfr_set_si(r10965, mpfr_cmp(r10963, r10964) <= 0, MPFR_RNDN);
        mpfr_set_d(r10966, h, MPFR_RNDN);
        mpfr_add(r10967, r10966, r10963, MPFR_RNDN);
        mpfr_sub(r10968, r10963, r10966, MPFR_RNDN);
        mpfr_mul(r10969, r10967, r10968, MPFR_RNDN);
        mpfr_sqrt(r10970, r10969, MPFR_RNDN);
        mpfr_sub(r10971, r10970, r10963, MPFR_RNDN);
        mpfr_cbrt(r10972, r10971, MPFR_RNDN);
        ;
        mpfr_set_d(r10974, a, MPFR_RNDN);
        mpfr_mul(r10975, r10973, r10974, MPFR_RNDN);
        mpfr_cbrt(r10976, r10975, MPFR_RNDN);
        mpfr_div(r10977, r10972, r10976, MPFR_RNDN);
        mpfr_mul(r10978, r10963, r10963, MPFR_RNDN);
        mpfr_sub(r10979, r10966, r10963, MPFR_RNDN);
        mpfr_mul(r10980, r10967, r10979, MPFR_RNDN);
        mpfr_add(r10981, r10978, r10980, MPFR_RNDN);
        mpfr_div(r10982, r10981, r10971, MPFR_RNDN);
        mpfr_div(r10983, r10982, r10973, MPFR_RNDN);
        mpfr_cbrt(r10984, r10983, MPFR_RNDN);
        ;
        mpfr_div(r10986, r10985, r10974, MPFR_RNDN);
        mpfr_cbrt(r10987, r10986, MPFR_RNDN);
        mpfr_mul(r10988, r10984, r10987, MPFR_RNDN);
        mpfr_add(r10989, r10977, r10988, MPFR_RNDN);
        ;
        mpfr_set_si(r10991, mpfr_cmp(r10963, r10990) <= 0, MPFR_RNDN);
        mpfr_neg(r10992, r10963, MPFR_RNDN);
        mpfr_sub(r10993, r10992, r10963, MPFR_RNDN);
        mpfr_div(r10994, r10993, r10973, MPFR_RNDN);
        mpfr_cbrt(r10995, r10994, MPFR_RNDN);
        mpfr_mul(r10996, r10987, r10995, MPFR_RNDN);
        mpfr_div(r10997, r10971, r10975, MPFR_RNDN);
        mpfr_cbrt(r10998, r10997, MPFR_RNDN);
        mpfr_add(r10999, r10996, r10998, MPFR_RNDN);
        mpfr_neg(r11000, r10966, MPFR_RNDN);
        mpfr_mul(r11001, r11000, r10966, MPFR_RNDN);
        mpfr_add(r11002, r10970, r10963, MPFR_RNDN);
        mpfr_div(r11003, r11001, r11002, MPFR_RNDN);
        mpfr_cbrt(r11004, r11003, MPFR_RNDN);
        mpfr_div(r11005, r11004, r10976, MPFR_RNDN);
        mpfr_sub(r11006, r10992, r10970, MPFR_RNDN);
        mpfr_div(r11007, r11006, r10973, MPFR_RNDN);
        mpfr_cbrt(r11008, r11007, MPFR_RNDN);
        mpfr_mul(r11009, r10987, r11008, MPFR_RNDN);
        mpfr_add(r11010, r11005, r11009, MPFR_RNDN);
        if (mpfr_get_si(r10991, MPFR_RNDN)) { mpfr_set(r11011, r10999, MPFR_RNDN); } else { mpfr_set(r11011, r11010, MPFR_RNDN); };
        if (mpfr_get_si(r10965, MPFR_RNDN)) { mpfr_set(r11012, r10989, MPFR_RNDN); } else { mpfr_set(r11012, r11011, MPFR_RNDN); };
        return mpfr_get_d(r11012, MPFR_RNDN);
}

