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

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


double f_of(float g, float h, float a) {
        float r26827 = 1;
        float r26828 = 2;
        float r26829 = a;
        float r26830 = r26828 * r26829;
        float r26831 = r26827 / r26830;
        float r26832 = g;
        float r26833 = r26832 * r26832;
        float r26834 = h;
        float r26835 = r26834 * r26834;
        float r26836 = r26833 - r26835;
        float r26837 = sqrt(r26836);
        float r26838 = r26837 - r26832;
        float r26839 = cbrt(r26838);
        float r26840 = r26839 * r26839;
        float r26841 = r26832 - r26834;
        float r26842 = r26832 + r26834;
        float r26843 = r26841 * r26842;
        float r26844 = sqrt(r26843);
        float r26845 = r26844 - r26832;
        float r26846 = cbrt(r26845);
        float r26847 = r26840 * r26846;
        float r26848 = r26831 * r26847;
        float r26849 = cbrt(r26848);
        float r26850 = -r26832;
        float r26851 = r26850 - r26837;
        float r26852 = r26831 * r26851;
        float r26853 = cbrt(r26852);
        float r26854 = r26849 + r26853;
        return r26854;
}

double f_od(double g, double h, double a) {
        double r26855 = 1;
        double r26856 = 2;
        double r26857 = a;
        double r26858 = r26856 * r26857;
        double r26859 = r26855 / r26858;
        double r26860 = g;
        double r26861 = r26860 * r26860;
        double r26862 = h;
        double r26863 = r26862 * r26862;
        double r26864 = r26861 - r26863;
        double r26865 = sqrt(r26864);
        double r26866 = r26865 - r26860;
        double r26867 = cbrt(r26866);
        double r26868 = r26867 * r26867;
        double r26869 = r26860 - r26862;
        double r26870 = r26860 + r26862;
        double r26871 = r26869 * r26870;
        double r26872 = sqrt(r26871);
        double r26873 = r26872 - r26860;
        double r26874 = cbrt(r26873);
        double r26875 = r26868 * r26874;
        double r26876 = r26859 * r26875;
        double r26877 = cbrt(r26876);
        double r26878 = -r26860;
        double r26879 = r26878 - r26865;
        double r26880 = r26859 * r26879;
        double r26881 = cbrt(r26880);
        double r26882 = r26877 + r26881;
        return r26882;
}

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 r26883, r26884, r26885, r26886, r26887, r26888, r26889, r26890, r26891, r26892, r26893, r26894, r26895, r26896, r26897, r26898, r26899, r26900, r26901;

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

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r26885, a, MPFR_RNDN);
        mpfr_mul(r26886, r26884, r26885, MPFR_RNDN);
        mpfr_div(r26887, r26883, r26886, MPFR_RNDN);
        mpfr_set_d(r26888, g, MPFR_RNDN);
        mpfr_neg(r26889, r26888, MPFR_RNDN);
        mpfr_mul(r26890, r26888, r26888, MPFR_RNDN);
        mpfr_set_d(r26891, h, MPFR_RNDN);
        mpfr_mul(r26892, r26891, r26891, MPFR_RNDN);
        mpfr_sub(r26893, r26890, r26892, MPFR_RNDN);
        mpfr_sqrt(r26894, r26893, MPFR_RNDN);
        mpfr_add(r26895, r26889, r26894, MPFR_RNDN);
        mpfr_mul(r26896, r26887, r26895, MPFR_RNDN);
        mpfr_cbrt(r26897, r26896, MPFR_RNDN);
        mpfr_sub(r26898, r26889, r26894, MPFR_RNDN);
        mpfr_mul(r26899, r26887, r26898, MPFR_RNDN);
        mpfr_cbrt(r26900, r26899, MPFR_RNDN);
        mpfr_add(r26901, r26897, r26900, MPFR_RNDN);
        return mpfr_get_d(r26901, MPFR_RNDN);
}

static mpfr_t r26902, r26903, r26904, r26905, r26906, r26907, r26908, r26909, r26910, r26911, r26912, r26913, r26914, r26915, r26916, r26917, r26918, r26919, r26920, r26921, r26922, r26923, r26924, r26925, r26926, r26927, r26928, r26929;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26902, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26903, "2", 10, MPFR_RNDN);
        mpfr_init(r26904);
        mpfr_init(r26905);
        mpfr_init(r26906);
        mpfr_init(r26907);
        mpfr_init(r26908);
        mpfr_init(r26909);
        mpfr_init(r26910);
        mpfr_init(r26911);
        mpfr_init(r26912);
        mpfr_init(r26913);
        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);
}

double f_fm(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r26904, a, MPFR_RNDN);
        mpfr_mul(r26905, r26903, r26904, MPFR_RNDN);
        mpfr_div(r26906, r26902, r26905, MPFR_RNDN);
        mpfr_set_d(r26907, g, MPFR_RNDN);
        mpfr_mul(r26908, r26907, r26907, MPFR_RNDN);
        mpfr_set_d(r26909, h, MPFR_RNDN);
        mpfr_mul(r26910, r26909, r26909, MPFR_RNDN);
        mpfr_sub(r26911, r26908, r26910, MPFR_RNDN);
        mpfr_sqrt(r26912, r26911, MPFR_RNDN);
        mpfr_sub(r26913, r26912, r26907, MPFR_RNDN);
        mpfr_cbrt(r26914, r26913, MPFR_RNDN);
        mpfr_mul(r26915, r26914, r26914, MPFR_RNDN);
        mpfr_sub(r26916, r26907, r26909, MPFR_RNDN);
        mpfr_add(r26917, r26907, r26909, MPFR_RNDN);
        mpfr_mul(r26918, r26916, r26917, MPFR_RNDN);
        mpfr_sqrt(r26919, r26918, MPFR_RNDN);
        mpfr_sub(r26920, r26919, r26907, MPFR_RNDN);
        mpfr_cbrt(r26921, r26920, MPFR_RNDN);
        mpfr_mul(r26922, r26915, r26921, MPFR_RNDN);
        mpfr_mul(r26923, r26906, r26922, MPFR_RNDN);
        mpfr_cbrt(r26924, r26923, MPFR_RNDN);
        mpfr_neg(r26925, r26907, MPFR_RNDN);
        mpfr_sub(r26926, r26925, r26912, MPFR_RNDN);
        mpfr_mul(r26927, r26906, r26926, MPFR_RNDN);
        mpfr_cbrt(r26928, r26927, MPFR_RNDN);
        mpfr_add(r26929, r26924, r26928, MPFR_RNDN);
        return mpfr_get_d(r26929, MPFR_RNDN);
}

static mpfr_t r26930, r26931, r26932, r26933, r26934, r26935, r26936, r26937, r26938, r26939, r26940, r26941, r26942, r26943, r26944, r26945, r26946, r26947, r26948, r26949, r26950, r26951, r26952, r26953, r26954, r26955, r26956, r26957;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r26930, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26931, "2", 10, MPFR_RNDN);
        mpfr_init(r26932);
        mpfr_init(r26933);
        mpfr_init(r26934);
        mpfr_init(r26935);
        mpfr_init(r26936);
        mpfr_init(r26937);
        mpfr_init(r26938);
        mpfr_init(r26939);
        mpfr_init(r26940);
        mpfr_init(r26941);
        mpfr_init(r26942);
        mpfr_init(r26943);
        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);
}

double f_dm(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r26932, a, MPFR_RNDN);
        mpfr_mul(r26933, r26931, r26932, MPFR_RNDN);
        mpfr_div(r26934, r26930, r26933, MPFR_RNDN);
        mpfr_set_d(r26935, g, MPFR_RNDN);
        mpfr_mul(r26936, r26935, r26935, MPFR_RNDN);
        mpfr_set_d(r26937, h, MPFR_RNDN);
        mpfr_mul(r26938, r26937, r26937, MPFR_RNDN);
        mpfr_sub(r26939, r26936, r26938, MPFR_RNDN);
        mpfr_sqrt(r26940, r26939, MPFR_RNDN);
        mpfr_sub(r26941, r26940, r26935, MPFR_RNDN);
        mpfr_cbrt(r26942, r26941, MPFR_RNDN);
        mpfr_mul(r26943, r26942, r26942, MPFR_RNDN);
        mpfr_sub(r26944, r26935, r26937, MPFR_RNDN);
        mpfr_add(r26945, r26935, r26937, MPFR_RNDN);
        mpfr_mul(r26946, r26944, r26945, MPFR_RNDN);
        mpfr_sqrt(r26947, r26946, MPFR_RNDN);
        mpfr_sub(r26948, r26947, r26935, MPFR_RNDN);
        mpfr_cbrt(r26949, r26948, MPFR_RNDN);
        mpfr_mul(r26950, r26943, r26949, MPFR_RNDN);
        mpfr_mul(r26951, r26934, r26950, MPFR_RNDN);
        mpfr_cbrt(r26952, r26951, MPFR_RNDN);
        mpfr_neg(r26953, r26935, MPFR_RNDN);
        mpfr_sub(r26954, r26953, r26940, MPFR_RNDN);
        mpfr_mul(r26955, r26934, r26954, MPFR_RNDN);
        mpfr_cbrt(r26956, r26955, MPFR_RNDN);
        mpfr_add(r26957, r26952, r26956, MPFR_RNDN);
        return mpfr_get_d(r26957, MPFR_RNDN);
}

