#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 r26792 = 1;
        float r26793 = 2;
        float r26794 = a;
        float r26795 = r26793 * r26794;
        float r26796 = r26792 / r26795;
        float r26797 = g;
        float r26798 = -r26797;
        float r26799 = r26797 * r26797;
        float r26800 = h;
        float r26801 = r26800 * r26800;
        float r26802 = r26799 - r26801;
        float r26803 = sqrt(r26802);
        float r26804 = r26798 + r26803;
        float r26805 = r26796 * r26804;
        float r26806 = cbrt(r26805);
        float r26807 = r26798 - r26803;
        float r26808 = r26796 * r26807;
        float r26809 = cbrt(r26808);
        float r26810 = r26806 + r26809;
        return r26810;
}

double f_id(double g, double h, double a) {
        double r26811 = 1;
        double r26812 = 2;
        double r26813 = a;
        double r26814 = r26812 * r26813;
        double r26815 = r26811 / r26814;
        double r26816 = g;
        double r26817 = -r26816;
        double r26818 = r26816 * r26816;
        double r26819 = h;
        double r26820 = r26819 * r26819;
        double r26821 = r26818 - r26820;
        double r26822 = sqrt(r26821);
        double r26823 = r26817 + r26822;
        double r26824 = r26815 * r26823;
        double r26825 = cbrt(r26824);
        double r26826 = r26817 - r26822;
        double r26827 = r26815 * r26826;
        double r26828 = cbrt(r26827);
        double r26829 = r26825 + r26828;
        return r26829;
}


double f_of(float g, float h, float a) {
        float r26830 = g;
        float r26831 = -1.5584971956813441e-162;
        bool r26832 = r26830 <= r26831;
        float r26833 = 1;
        float r26834 = 2;
        float r26835 = a;
        float r26836 = r26834 * r26835;
        float r26837 = r26833 / r26836;
        float r26838 = -r26830;
        float r26839 = r26830 * r26830;
        float r26840 = h;
        float r26841 = r26840 * r26840;
        float r26842 = r26839 - r26841;
        float r26843 = sqrt(r26842);
        float r26844 = r26838 + r26843;
        float r26845 = r26837 * r26844;
        float r26846 = cbrt(r26845);
        float r26847 = r26843 - r26830;
        float r26848 = r26841 / r26847;
        float r26849 = r26837 * r26848;
        float r26850 = cbrt(r26849);
        float r26851 = r26846 + r26850;
        float r26852 = r26838 - r26843;
        float r26853 = r26841 / r26852;
        float r26854 = r26837 * r26853;
        float r26855 = cbrt(r26854);
        float r26856 = r26837 * r26852;
        float r26857 = cbrt(r26856);
        float r26858 = r26855 + r26857;
        float r26859 = r26832 ? r26851 : r26858;
        return r26859;
}

double f_od(double g, double h, double a) {
        double r26860 = g;
        double r26861 = -1.5584971956813441e-162;
        bool r26862 = r26860 <= r26861;
        double r26863 = 1;
        double r26864 = 2;
        double r26865 = a;
        double r26866 = r26864 * r26865;
        double r26867 = r26863 / r26866;
        double r26868 = -r26860;
        double r26869 = r26860 * r26860;
        double r26870 = h;
        double r26871 = r26870 * r26870;
        double r26872 = r26869 - r26871;
        double r26873 = sqrt(r26872);
        double r26874 = r26868 + r26873;
        double r26875 = r26867 * r26874;
        double r26876 = cbrt(r26875);
        double r26877 = r26873 - r26860;
        double r26878 = r26871 / r26877;
        double r26879 = r26867 * r26878;
        double r26880 = cbrt(r26879);
        double r26881 = r26876 + r26880;
        double r26882 = r26868 - r26873;
        double r26883 = r26871 / r26882;
        double r26884 = r26867 * r26883;
        double r26885 = cbrt(r26884);
        double r26886 = r26867 * r26882;
        double r26887 = cbrt(r26886);
        double r26888 = r26885 + r26887;
        double r26889 = r26862 ? r26881 : r26888;
        return r26889;
}

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 r26890, r26891, r26892, r26893, r26894, r26895, r26896, r26897, r26898, r26899, r26900, r26901, r26902, r26903, r26904, r26905, r26906, r26907, r26908;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26890, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26891, "2", 10, MPFR_RNDN);
        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_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r26892, a, MPFR_RNDN);
        mpfr_mul(r26893, r26891, r26892, MPFR_RNDN);
        mpfr_div(r26894, r26890, r26893, MPFR_RNDN);
        mpfr_set_d(r26895, g, MPFR_RNDN);
        mpfr_neg(r26896, r26895, MPFR_RNDN);
        mpfr_mul(r26897, r26895, r26895, MPFR_RNDN);
        mpfr_set_d(r26898, h, MPFR_RNDN);
        mpfr_mul(r26899, r26898, r26898, MPFR_RNDN);
        mpfr_sub(r26900, r26897, r26899, MPFR_RNDN);
        mpfr_sqrt(r26901, r26900, MPFR_RNDN);
        mpfr_add(r26902, r26896, r26901, MPFR_RNDN);
        mpfr_mul(r26903, r26894, r26902, MPFR_RNDN);
        mpfr_cbrt(r26904, r26903, MPFR_RNDN);
        mpfr_sub(r26905, r26896, r26901, MPFR_RNDN);
        mpfr_mul(r26906, r26894, r26905, MPFR_RNDN);
        mpfr_cbrt(r26907, r26906, MPFR_RNDN);
        mpfr_add(r26908, r26904, r26907, MPFR_RNDN);
        return mpfr_get_d(r26908, MPFR_RNDN);
}

static mpfr_t r26909, r26910, r26911, r26912, r26913, r26914, r26915, r26916, r26917, r26918, r26919, r26920, r26921, r26922, r26923, r26924, r26925, r26926, r26927, r26928, r26929, r26930, r26931, r26932, r26933, r26934, r26935, r26936, r26937, r26938;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26909);
        mpfr_init_set_str(r26910, "-1.5584971956813441e-162", 10, MPFR_RNDN);
        mpfr_init(r26911);
        mpfr_init_set_str(r26912, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26913, "2", 10, MPFR_RNDN);
        mpfr_init(r26914);
        mpfr_init(r26915);
        mpfr_init(r26916);
        mpfr_init(r26917);
        mpfr_init(r26918);
        mpfr_init(r26919);
        mpfr_init(r26920);
        mpfr_init(r26921);
        mpfr_init(r26922);
        mpfr_init(r26923);
        mpfr_init(r26924);
        mpfr_init(r26925);
        mpfr_init(r26926);
        mpfr_init(r26927);
        mpfr_init(r26928);
        mpfr_init(r26929);
        mpfr_init(r26930);
        mpfr_init(r26931);
        mpfr_init(r26932);
        mpfr_init(r26933);
        mpfr_init(r26934);
        mpfr_init(r26935);
        mpfr_init(r26936);
        mpfr_init(r26937);
        mpfr_init(r26938);
}

double f_fm(double g, double h, double a) {
        mpfr_set_d(r26909, g, MPFR_RNDN);
        ;
        mpfr_set_si(r26911, mpfr_cmp(r26909, r26910) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r26914, a, MPFR_RNDN);
        mpfr_mul(r26915, r26913, r26914, MPFR_RNDN);
        mpfr_div(r26916, r26912, r26915, MPFR_RNDN);
        mpfr_neg(r26917, r26909, MPFR_RNDN);
        mpfr_mul(r26918, r26909, r26909, MPFR_RNDN);
        mpfr_set_d(r26919, h, MPFR_RNDN);
        mpfr_mul(r26920, r26919, r26919, MPFR_RNDN);
        mpfr_sub(r26921, r26918, r26920, MPFR_RNDN);
        mpfr_sqrt(r26922, r26921, MPFR_RNDN);
        mpfr_add(r26923, r26917, r26922, MPFR_RNDN);
        mpfr_mul(r26924, r26916, r26923, MPFR_RNDN);
        mpfr_cbrt(r26925, r26924, MPFR_RNDN);
        mpfr_sub(r26926, r26922, r26909, MPFR_RNDN);
        mpfr_div(r26927, r26920, r26926, MPFR_RNDN);
        mpfr_mul(r26928, r26916, r26927, MPFR_RNDN);
        mpfr_cbrt(r26929, r26928, MPFR_RNDN);
        mpfr_add(r26930, r26925, r26929, MPFR_RNDN);
        mpfr_sub(r26931, r26917, r26922, MPFR_RNDN);
        mpfr_div(r26932, r26920, r26931, MPFR_RNDN);
        mpfr_mul(r26933, r26916, r26932, MPFR_RNDN);
        mpfr_cbrt(r26934, r26933, MPFR_RNDN);
        mpfr_mul(r26935, r26916, r26931, MPFR_RNDN);
        mpfr_cbrt(r26936, r26935, MPFR_RNDN);
        mpfr_add(r26937, r26934, r26936, MPFR_RNDN);
        if (mpfr_get_si(r26911, MPFR_RNDN)) { mpfr_set(r26938, r26930, MPFR_RNDN); } else { mpfr_set(r26938, r26937, MPFR_RNDN); };
        return mpfr_get_d(r26938, MPFR_RNDN);
}

static mpfr_t r26939, r26940, r26941, r26942, r26943, r26944, r26945, r26946, r26947, r26948, r26949, r26950, r26951, r26952, r26953, r26954, r26955, r26956, r26957, r26958, r26959, r26960, r26961, r26962, r26963, r26964, r26965, r26966, r26967, r26968;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26939);
        mpfr_init_set_str(r26940, "-1.5584971956813441e-162", 10, MPFR_RNDN);
        mpfr_init(r26941);
        mpfr_init_set_str(r26942, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26943, "2", 10, MPFR_RNDN);
        mpfr_init(r26944);
        mpfr_init(r26945);
        mpfr_init(r26946);
        mpfr_init(r26947);
        mpfr_init(r26948);
        mpfr_init(r26949);
        mpfr_init(r26950);
        mpfr_init(r26951);
        mpfr_init(r26952);
        mpfr_init(r26953);
        mpfr_init(r26954);
        mpfr_init(r26955);
        mpfr_init(r26956);
        mpfr_init(r26957);
        mpfr_init(r26958);
        mpfr_init(r26959);
        mpfr_init(r26960);
        mpfr_init(r26961);
        mpfr_init(r26962);
        mpfr_init(r26963);
        mpfr_init(r26964);
        mpfr_init(r26965);
        mpfr_init(r26966);
        mpfr_init(r26967);
        mpfr_init(r26968);
}

double f_dm(double g, double h, double a) {
        mpfr_set_d(r26939, g, MPFR_RNDN);
        ;
        mpfr_set_si(r26941, mpfr_cmp(r26939, r26940) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r26944, a, MPFR_RNDN);
        mpfr_mul(r26945, r26943, r26944, MPFR_RNDN);
        mpfr_div(r26946, r26942, r26945, MPFR_RNDN);
        mpfr_neg(r26947, r26939, MPFR_RNDN);
        mpfr_mul(r26948, r26939, r26939, MPFR_RNDN);
        mpfr_set_d(r26949, h, MPFR_RNDN);
        mpfr_mul(r26950, r26949, r26949, MPFR_RNDN);
        mpfr_sub(r26951, r26948, r26950, MPFR_RNDN);
        mpfr_sqrt(r26952, r26951, MPFR_RNDN);
        mpfr_add(r26953, r26947, r26952, MPFR_RNDN);
        mpfr_mul(r26954, r26946, r26953, MPFR_RNDN);
        mpfr_cbrt(r26955, r26954, MPFR_RNDN);
        mpfr_sub(r26956, r26952, r26939, MPFR_RNDN);
        mpfr_div(r26957, r26950, r26956, MPFR_RNDN);
        mpfr_mul(r26958, r26946, r26957, MPFR_RNDN);
        mpfr_cbrt(r26959, r26958, MPFR_RNDN);
        mpfr_add(r26960, r26955, r26959, MPFR_RNDN);
        mpfr_sub(r26961, r26947, r26952, MPFR_RNDN);
        mpfr_div(r26962, r26950, r26961, MPFR_RNDN);
        mpfr_mul(r26963, r26946, r26962, MPFR_RNDN);
        mpfr_cbrt(r26964, r26963, MPFR_RNDN);
        mpfr_mul(r26965, r26946, r26961, MPFR_RNDN);
        mpfr_cbrt(r26966, r26965, MPFR_RNDN);
        mpfr_add(r26967, r26964, r26966, MPFR_RNDN);
        if (mpfr_get_si(r26941, MPFR_RNDN)) { mpfr_set(r26968, r26960, MPFR_RNDN); } else { mpfr_set(r26968, r26967, MPFR_RNDN); };
        return mpfr_get_d(r26968, MPFR_RNDN);
}

