#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 r10796 = 1;
        float r10797 = 2;
        float r10798 = a;
        float r10799 = r10797 * r10798;
        float r10800 = r10796 / r10799;
        float r10801 = g;
        float r10802 = -r10801;
        float r10803 = r10801 * r10801;
        float r10804 = h;
        float r10805 = r10804 * r10804;
        float r10806 = r10803 - r10805;
        float r10807 = sqrt(r10806);
        float r10808 = r10802 + r10807;
        float r10809 = r10800 * r10808;
        float r10810 = cbrt(r10809);
        float r10811 = r10802 - r10807;
        float r10812 = r10800 * r10811;
        float r10813 = cbrt(r10812);
        float r10814 = r10810 + r10813;
        return r10814;
}

double f_id(double g, double h, double a) {
        double r10815 = 1;
        double r10816 = 2;
        double r10817 = a;
        double r10818 = r10816 * r10817;
        double r10819 = r10815 / r10818;
        double r10820 = g;
        double r10821 = -r10820;
        double r10822 = r10820 * r10820;
        double r10823 = h;
        double r10824 = r10823 * r10823;
        double r10825 = r10822 - r10824;
        double r10826 = sqrt(r10825);
        double r10827 = r10821 + r10826;
        double r10828 = r10819 * r10827;
        double r10829 = cbrt(r10828);
        double r10830 = r10821 - r10826;
        double r10831 = r10819 * r10830;
        double r10832 = cbrt(r10831);
        double r10833 = r10829 + r10832;
        return r10833;
}


double f_of(float g, float h, float a) {
        float r10834 = g;
        float r10835 = h;
        float r10836 = r10834 - r10835;
        float r10837 = r10834 + r10835;
        float r10838 = r10836 * r10837;
        float r10839 = sqrt(r10838);
        float r10840 = r10839 - r10834;
        float r10841 = cbrt(r10840);
        float r10842 = a;
        float r10843 = 2;
        float r10844 = r10842 * r10843;
        float r10845 = cbrt(r10844);
        float r10846 = r10841 / r10845;
        float r10847 = 1;
        float r10848 = r10847 / r10844;
        float r10849 = r10835 * r10835;
        float r10850 = r10849 / r10840;
        float r10851 = r10848 * r10850;
        float r10852 = cbrt(r10851);
        float r10853 = r10846 + r10852;
        float r10854 = -1.9873215131330507e+182;
        bool r10855 = r10853 <= r10854;
        float r10856 = -r10834;
        float r10857 = r10834 * r10834;
        float r10858 = r10857 - r10849;
        float r10859 = sqrt(r10858);
        float r10860 = r10856 - r10859;
        float r10861 = cbrt(r10860);
        float r10862 = cbrt(r10848);
        float r10863 = r10861 * r10862;
        float r10864 = -r10835;
        float r10865 = r10835 * r10864;
        float r10866 = r10839 + r10834;
        float r10867 = r10865 / r10866;
        float r10868 = cbrt(r10867);
        float r10869 = r10868 / r10845;
        float r10870 = r10863 + r10869;
        float r10871 = 4.110261436178516e+296;
        bool r10872 = r10853 <= r10871;
        float r10873 = r10834 + r10834;
        float r10874 = r10835 - r10873;
        float r10875 = cbrt(r10874);
        float r10876 = r10875 / r10845;
        float r10877 = r10856 - r10839;
        float r10878 = r10877 / r10844;
        float r10879 = cbrt(r10878);
        float r10880 = r10876 + r10879;
        float r10881 = r10872 ? r10880 : r10870;
        float r10882 = r10855 ? r10870 : r10881;
        return r10882;
}

double f_od(double g, double h, double a) {
        double r10883 = g;
        double r10884 = h;
        double r10885 = r10883 - r10884;
        double r10886 = r10883 + r10884;
        double r10887 = r10885 * r10886;
        double r10888 = sqrt(r10887);
        double r10889 = r10888 - r10883;
        double r10890 = cbrt(r10889);
        double r10891 = a;
        double r10892 = 2;
        double r10893 = r10891 * r10892;
        double r10894 = cbrt(r10893);
        double r10895 = r10890 / r10894;
        double r10896 = 1;
        double r10897 = r10896 / r10893;
        double r10898 = r10884 * r10884;
        double r10899 = r10898 / r10889;
        double r10900 = r10897 * r10899;
        double r10901 = cbrt(r10900);
        double r10902 = r10895 + r10901;
        double r10903 = -1.9873215131330507e+182;
        bool r10904 = r10902 <= r10903;
        double r10905 = -r10883;
        double r10906 = r10883 * r10883;
        double r10907 = r10906 - r10898;
        double r10908 = sqrt(r10907);
        double r10909 = r10905 - r10908;
        double r10910 = cbrt(r10909);
        double r10911 = cbrt(r10897);
        double r10912 = r10910 * r10911;
        double r10913 = -r10884;
        double r10914 = r10884 * r10913;
        double r10915 = r10888 + r10883;
        double r10916 = r10914 / r10915;
        double r10917 = cbrt(r10916);
        double r10918 = r10917 / r10894;
        double r10919 = r10912 + r10918;
        double r10920 = 4.110261436178516e+296;
        bool r10921 = r10902 <= r10920;
        double r10922 = r10883 + r10883;
        double r10923 = r10884 - r10922;
        double r10924 = cbrt(r10923);
        double r10925 = r10924 / r10894;
        double r10926 = r10905 - r10888;
        double r10927 = r10926 / r10893;
        double r10928 = cbrt(r10927);
        double r10929 = r10925 + r10928;
        double r10930 = r10921 ? r10929 : r10919;
        double r10931 = r10904 ? r10919 : r10930;
        return r10931;
}

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 r10932, r10933, r10934, r10935, r10936, r10937, r10938, r10939, r10940, r10941, r10942, r10943, r10944, r10945, r10946, r10947, r10948, r10949, r10950;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10932, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10933, "2", 10, MPFR_RNDN);
        mpfr_init(r10934);
        mpfr_init(r10935);
        mpfr_init(r10936);
        mpfr_init(r10937);
        mpfr_init(r10938);
        mpfr_init(r10939);
        mpfr_init(r10940);
        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);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r10934, a, MPFR_RNDN);
        mpfr_mul(r10935, r10933, r10934, MPFR_RNDN);
        mpfr_div(r10936, r10932, r10935, MPFR_RNDN);
        mpfr_set_d(r10937, g, MPFR_RNDN);
        mpfr_neg(r10938, r10937, MPFR_RNDN);
        mpfr_mul(r10939, r10937, r10937, MPFR_RNDN);
        mpfr_set_d(r10940, h, MPFR_RNDN);
        mpfr_mul(r10941, r10940, r10940, MPFR_RNDN);
        mpfr_sub(r10942, r10939, r10941, MPFR_RNDN);
        mpfr_sqrt(r10943, r10942, MPFR_RNDN);
        mpfr_add(r10944, r10938, r10943, MPFR_RNDN);
        mpfr_mul(r10945, r10936, r10944, MPFR_RNDN);
        mpfr_cbrt(r10946, r10945, MPFR_RNDN);
        mpfr_sub(r10947, r10938, r10943, MPFR_RNDN);
        mpfr_mul(r10948, r10936, r10947, MPFR_RNDN);
        mpfr_cbrt(r10949, r10948, MPFR_RNDN);
        mpfr_add(r10950, r10946, r10949, MPFR_RNDN);
        return mpfr_get_d(r10950, MPFR_RNDN);
}

static mpfr_t r10951, r10952, r10953, r10954, r10955, r10956, r10957, r10958, r10959, r10960, r10961, r10962, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        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_set_str(r10960, "2", 10, MPFR_RNDN);
        mpfr_init(r10961);
        mpfr_init(r10962);
        mpfr_init(r10963);
        mpfr_init_set_str(r10964, "1", 10, MPFR_RNDN);
        mpfr_init(r10965);
        mpfr_init(r10966);
        mpfr_init(r10967);
        mpfr_init(r10968);
        mpfr_init(r10969);
        mpfr_init(r10970);
        mpfr_init_set_str(r10971, "-1.9873215131330507e+182", 10, MPFR_RNDN);
        mpfr_init(r10972);
        mpfr_init(r10973);
        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(r10985);
        mpfr_init(r10986);
        mpfr_init(r10987);
        mpfr_init_set_str(r10988, "4.110261436178516e+296", 10, MPFR_RNDN);
        mpfr_init(r10989);
        mpfr_init(r10990);
        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);
}

double f_fm(double g, double h, double a) {
        mpfr_set_d(r10951, g, MPFR_RNDN);
        mpfr_set_d(r10952, h, MPFR_RNDN);
        mpfr_sub(r10953, r10951, r10952, MPFR_RNDN);
        mpfr_add(r10954, r10951, r10952, MPFR_RNDN);
        mpfr_mul(r10955, r10953, r10954, MPFR_RNDN);
        mpfr_sqrt(r10956, r10955, MPFR_RNDN);
        mpfr_sub(r10957, r10956, r10951, MPFR_RNDN);
        mpfr_cbrt(r10958, r10957, MPFR_RNDN);
        mpfr_set_d(r10959, a, MPFR_RNDN);
        ;
        mpfr_mul(r10961, r10959, r10960, MPFR_RNDN);
        mpfr_cbrt(r10962, r10961, MPFR_RNDN);
        mpfr_div(r10963, r10958, r10962, MPFR_RNDN);
        ;
        mpfr_div(r10965, r10964, r10961, MPFR_RNDN);
        mpfr_mul(r10966, r10952, r10952, MPFR_RNDN);
        mpfr_div(r10967, r10966, r10957, MPFR_RNDN);
        mpfr_mul(r10968, r10965, r10967, MPFR_RNDN);
        mpfr_cbrt(r10969, r10968, MPFR_RNDN);
        mpfr_add(r10970, r10963, r10969, MPFR_RNDN);
        ;
        mpfr_set_si(r10972, mpfr_cmp(r10970, r10971) <= 0, MPFR_RNDN);
        mpfr_neg(r10973, r10951, MPFR_RNDN);
        mpfr_mul(r10974, r10951, r10951, MPFR_RNDN);
        mpfr_sub(r10975, r10974, r10966, MPFR_RNDN);
        mpfr_sqrt(r10976, r10975, MPFR_RNDN);
        mpfr_sub(r10977, r10973, r10976, MPFR_RNDN);
        mpfr_cbrt(r10978, r10977, MPFR_RNDN);
        mpfr_cbrt(r10979, r10965, MPFR_RNDN);
        mpfr_mul(r10980, r10978, r10979, MPFR_RNDN);
        mpfr_neg(r10981, r10952, MPFR_RNDN);
        mpfr_mul(r10982, r10952, r10981, MPFR_RNDN);
        mpfr_add(r10983, r10956, r10951, MPFR_RNDN);
        mpfr_div(r10984, r10982, r10983, MPFR_RNDN);
        mpfr_cbrt(r10985, r10984, MPFR_RNDN);
        mpfr_div(r10986, r10985, r10962, MPFR_RNDN);
        mpfr_add(r10987, r10980, r10986, MPFR_RNDN);
        ;
        mpfr_set_si(r10989, mpfr_cmp(r10970, r10988) <= 0, MPFR_RNDN);
        mpfr_add(r10990, r10951, r10951, MPFR_RNDN);
        mpfr_sub(r10991, r10952, r10990, MPFR_RNDN);
        mpfr_cbrt(r10992, r10991, MPFR_RNDN);
        mpfr_div(r10993, r10992, r10962, MPFR_RNDN);
        mpfr_sub(r10994, r10973, r10956, MPFR_RNDN);
        mpfr_div(r10995, r10994, r10961, MPFR_RNDN);
        mpfr_cbrt(r10996, r10995, MPFR_RNDN);
        mpfr_add(r10997, r10993, r10996, MPFR_RNDN);
        if (mpfr_get_si(r10989, MPFR_RNDN)) { mpfr_set(r10998, r10997, MPFR_RNDN); } else { mpfr_set(r10998, r10987, MPFR_RNDN); };
        if (mpfr_get_si(r10972, MPFR_RNDN)) { mpfr_set(r10999, r10987, MPFR_RNDN); } else { mpfr_set(r10999, r10998, MPFR_RNDN); };
        return mpfr_get_d(r10999, MPFR_RNDN);
}

static mpfr_t r11000, r11001, r11002, r11003, r11004, r11005, r11006, r11007, r11008, r11009, r11010, r11011, r11012, r11013, r11014, r11015, r11016, r11017, r11018, r11019, r11020, r11021, r11022, r11023, r11024, r11025, r11026, r11027, r11028, r11029, r11030, r11031, r11032, r11033, r11034, r11035, r11036, r11037, r11038, r11039, r11040, r11041, r11042, r11043, r11044, r11045, r11046, r11047, r11048;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        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_set_str(r11009, "2", 10, MPFR_RNDN);
        mpfr_init(r11010);
        mpfr_init(r11011);
        mpfr_init(r11012);
        mpfr_init_set_str(r11013, "1", 10, MPFR_RNDN);
        mpfr_init(r11014);
        mpfr_init(r11015);
        mpfr_init(r11016);
        mpfr_init(r11017);
        mpfr_init(r11018);
        mpfr_init(r11019);
        mpfr_init_set_str(r11020, "-1.9873215131330507e+182", 10, MPFR_RNDN);
        mpfr_init(r11021);
        mpfr_init(r11022);
        mpfr_init(r11023);
        mpfr_init(r11024);
        mpfr_init(r11025);
        mpfr_init(r11026);
        mpfr_init(r11027);
        mpfr_init(r11028);
        mpfr_init(r11029);
        mpfr_init(r11030);
        mpfr_init(r11031);
        mpfr_init(r11032);
        mpfr_init(r11033);
        mpfr_init(r11034);
        mpfr_init(r11035);
        mpfr_init(r11036);
        mpfr_init_set_str(r11037, "4.110261436178516e+296", 10, MPFR_RNDN);
        mpfr_init(r11038);
        mpfr_init(r11039);
        mpfr_init(r11040);
        mpfr_init(r11041);
        mpfr_init(r11042);
        mpfr_init(r11043);
        mpfr_init(r11044);
        mpfr_init(r11045);
        mpfr_init(r11046);
        mpfr_init(r11047);
        mpfr_init(r11048);
}

double f_dm(double g, double h, double a) {
        mpfr_set_d(r11000, g, MPFR_RNDN);
        mpfr_set_d(r11001, h, MPFR_RNDN);
        mpfr_sub(r11002, r11000, r11001, MPFR_RNDN);
        mpfr_add(r11003, r11000, r11001, MPFR_RNDN);
        mpfr_mul(r11004, r11002, r11003, MPFR_RNDN);
        mpfr_sqrt(r11005, r11004, MPFR_RNDN);
        mpfr_sub(r11006, r11005, r11000, MPFR_RNDN);
        mpfr_cbrt(r11007, r11006, MPFR_RNDN);
        mpfr_set_d(r11008, a, MPFR_RNDN);
        ;
        mpfr_mul(r11010, r11008, r11009, MPFR_RNDN);
        mpfr_cbrt(r11011, r11010, MPFR_RNDN);
        mpfr_div(r11012, r11007, r11011, MPFR_RNDN);
        ;
        mpfr_div(r11014, r11013, r11010, MPFR_RNDN);
        mpfr_mul(r11015, r11001, r11001, MPFR_RNDN);
        mpfr_div(r11016, r11015, r11006, MPFR_RNDN);
        mpfr_mul(r11017, r11014, r11016, MPFR_RNDN);
        mpfr_cbrt(r11018, r11017, MPFR_RNDN);
        mpfr_add(r11019, r11012, r11018, MPFR_RNDN);
        ;
        mpfr_set_si(r11021, mpfr_cmp(r11019, r11020) <= 0, MPFR_RNDN);
        mpfr_neg(r11022, r11000, MPFR_RNDN);
        mpfr_mul(r11023, r11000, r11000, MPFR_RNDN);
        mpfr_sub(r11024, r11023, r11015, MPFR_RNDN);
        mpfr_sqrt(r11025, r11024, MPFR_RNDN);
        mpfr_sub(r11026, r11022, r11025, MPFR_RNDN);
        mpfr_cbrt(r11027, r11026, MPFR_RNDN);
        mpfr_cbrt(r11028, r11014, MPFR_RNDN);
        mpfr_mul(r11029, r11027, r11028, MPFR_RNDN);
        mpfr_neg(r11030, r11001, MPFR_RNDN);
        mpfr_mul(r11031, r11001, r11030, MPFR_RNDN);
        mpfr_add(r11032, r11005, r11000, MPFR_RNDN);
        mpfr_div(r11033, r11031, r11032, MPFR_RNDN);
        mpfr_cbrt(r11034, r11033, MPFR_RNDN);
        mpfr_div(r11035, r11034, r11011, MPFR_RNDN);
        mpfr_add(r11036, r11029, r11035, MPFR_RNDN);
        ;
        mpfr_set_si(r11038, mpfr_cmp(r11019, r11037) <= 0, MPFR_RNDN);
        mpfr_add(r11039, r11000, r11000, MPFR_RNDN);
        mpfr_sub(r11040, r11001, r11039, MPFR_RNDN);
        mpfr_cbrt(r11041, r11040, MPFR_RNDN);
        mpfr_div(r11042, r11041, r11011, MPFR_RNDN);
        mpfr_sub(r11043, r11022, r11005, MPFR_RNDN);
        mpfr_div(r11044, r11043, r11010, MPFR_RNDN);
        mpfr_cbrt(r11045, r11044, MPFR_RNDN);
        mpfr_add(r11046, r11042, r11045, MPFR_RNDN);
        if (mpfr_get_si(r11038, MPFR_RNDN)) { mpfr_set(r11047, r11046, MPFR_RNDN); } else { mpfr_set(r11047, r11036, MPFR_RNDN); };
        if (mpfr_get_si(r11021, MPFR_RNDN)) { mpfr_set(r11048, r11036, MPFR_RNDN); } else { mpfr_set(r11048, r11047, MPFR_RNDN); };
        return mpfr_get_d(r11048, MPFR_RNDN);
}

