#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 r10764 = 1;
        float r10765 = 2;
        float r10766 = a;
        float r10767 = r10765 * r10766;
        float r10768 = r10764 / r10767;
        float r10769 = g;
        float r10770 = -r10769;
        float r10771 = r10769 * r10769;
        float r10772 = h;
        float r10773 = r10772 * r10772;
        float r10774 = r10771 - r10773;
        float r10775 = sqrt(r10774);
        float r10776 = r10770 + r10775;
        float r10777 = r10768 * r10776;
        float r10778 = cbrt(r10777);
        float r10779 = r10770 - r10775;
        float r10780 = r10768 * r10779;
        float r10781 = cbrt(r10780);
        float r10782 = r10778 + r10781;
        return r10782;
}

double f_id(double g, double h, double a) {
        double r10783 = 1;
        double r10784 = 2;
        double r10785 = a;
        double r10786 = r10784 * r10785;
        double r10787 = r10783 / r10786;
        double r10788 = g;
        double r10789 = -r10788;
        double r10790 = r10788 * r10788;
        double r10791 = h;
        double r10792 = r10791 * r10791;
        double r10793 = r10790 - r10792;
        double r10794 = sqrt(r10793);
        double r10795 = r10789 + r10794;
        double r10796 = r10787 * r10795;
        double r10797 = cbrt(r10796);
        double r10798 = r10789 - r10794;
        double r10799 = r10787 * r10798;
        double r10800 = cbrt(r10799);
        double r10801 = r10797 + r10800;
        return r10801;
}


double f_of(float g, float h, float a) {
        float r10802 = h;
        float r10803 = g;
        float r10804 = r10802 + r10803;
        float r10805 = r10803 - r10802;
        float r10806 = r10804 * r10805;
        float r10807 = sqrt(r10806);
        float r10808 = r10807 - r10803;
        float r10809 = a;
        float r10810 = 2;
        float r10811 = r10809 * r10810;
        float r10812 = r10808 / r10811;
        float r10813 = cbrt(r10812);
        float r10814 = -r10803;
        float r10815 = r10814 - r10807;
        float r10816 = cbrt(r10815);
        float r10817 = r10816 * r10816;
        float r10818 = r10803 + r10803;
        float r10819 = -r10818;
        float r10820 = cbrt(r10819);
        float r10821 = r10811 / r10820;
        float r10822 = r10817 / r10821;
        float r10823 = cbrt(r10822);
        float r10824 = r10813 + r10823;
        return r10824;
}

double f_od(double g, double h, double a) {
        double r10825 = h;
        double r10826 = g;
        double r10827 = r10825 + r10826;
        double r10828 = r10826 - r10825;
        double r10829 = r10827 * r10828;
        double r10830 = sqrt(r10829);
        double r10831 = r10830 - r10826;
        double r10832 = a;
        double r10833 = 2;
        double r10834 = r10832 * r10833;
        double r10835 = r10831 / r10834;
        double r10836 = cbrt(r10835);
        double r10837 = -r10826;
        double r10838 = r10837 - r10830;
        double r10839 = cbrt(r10838);
        double r10840 = r10839 * r10839;
        double r10841 = r10826 + r10826;
        double r10842 = -r10841;
        double r10843 = cbrt(r10842);
        double r10844 = r10834 / r10843;
        double r10845 = r10840 / r10844;
        double r10846 = cbrt(r10845);
        double r10847 = r10836 + r10846;
        return r10847;
}

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 r10848, r10849, r10850, r10851, r10852, r10853, r10854, r10855, r10856, r10857, r10858, r10859, r10860, r10861, r10862, r10863, r10864, r10865, r10866;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10848, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10849, "2", 10, MPFR_RNDN);
        mpfr_init(r10850);
        mpfr_init(r10851);
        mpfr_init(r10852);
        mpfr_init(r10853);
        mpfr_init(r10854);
        mpfr_init(r10855);
        mpfr_init(r10856);
        mpfr_init(r10857);
        mpfr_init(r10858);
        mpfr_init(r10859);
        mpfr_init(r10860);
        mpfr_init(r10861);
        mpfr_init(r10862);
        mpfr_init(r10863);
        mpfr_init(r10864);
        mpfr_init(r10865);
        mpfr_init(r10866);
}

double f_im(double g, double h, double a) {
        ;
        ;
        mpfr_set_d(r10850, a, MPFR_RNDN);
        mpfr_mul(r10851, r10849, r10850, MPFR_RNDN);
        mpfr_div(r10852, r10848, r10851, MPFR_RNDN);
        mpfr_set_d(r10853, g, MPFR_RNDN);
        mpfr_neg(r10854, r10853, MPFR_RNDN);
        mpfr_mul(r10855, r10853, r10853, MPFR_RNDN);
        mpfr_set_d(r10856, h, MPFR_RNDN);
        mpfr_mul(r10857, r10856, r10856, MPFR_RNDN);
        mpfr_sub(r10858, r10855, r10857, MPFR_RNDN);
        mpfr_sqrt(r10859, r10858, MPFR_RNDN);
        mpfr_add(r10860, r10854, r10859, MPFR_RNDN);
        mpfr_mul(r10861, r10852, r10860, MPFR_RNDN);
        mpfr_cbrt(r10862, r10861, MPFR_RNDN);
        mpfr_sub(r10863, r10854, r10859, MPFR_RNDN);
        mpfr_mul(r10864, r10852, r10863, MPFR_RNDN);
        mpfr_cbrt(r10865, r10864, MPFR_RNDN);
        mpfr_add(r10866, r10862, r10865, MPFR_RNDN);
        return mpfr_get_d(r10866, MPFR_RNDN);
}

static mpfr_t r10867, r10868, r10869, r10870, r10871, r10872, r10873, r10874, r10875, r10876, r10877, r10878, r10879, r10880, r10881, r10882, r10883, r10884, r10885, r10886, r10887, r10888, r10889;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10867);
        mpfr_init(r10868);
        mpfr_init(r10869);
        mpfr_init(r10870);
        mpfr_init(r10871);
        mpfr_init(r10872);
        mpfr_init(r10873);
        mpfr_init(r10874);
        mpfr_init_set_str(r10875, "2", 10, MPFR_RNDN);
        mpfr_init(r10876);
        mpfr_init(r10877);
        mpfr_init(r10878);
        mpfr_init(r10879);
        mpfr_init(r10880);
        mpfr_init(r10881);
        mpfr_init(r10882);
        mpfr_init(r10883);
        mpfr_init(r10884);
        mpfr_init(r10885);
        mpfr_init(r10886);
        mpfr_init(r10887);
        mpfr_init(r10888);
        mpfr_init(r10889);
}

double f_fm(double g, double h, double a) {
        mpfr_set_d(r10867, h, MPFR_RNDN);
        mpfr_set_d(r10868, g, MPFR_RNDN);
        mpfr_add(r10869, r10867, r10868, MPFR_RNDN);
        mpfr_sub(r10870, r10868, r10867, MPFR_RNDN);
        mpfr_mul(r10871, r10869, r10870, MPFR_RNDN);
        mpfr_sqrt(r10872, r10871, MPFR_RNDN);
        mpfr_sub(r10873, r10872, r10868, MPFR_RNDN);
        mpfr_set_d(r10874, a, MPFR_RNDN);
        ;
        mpfr_mul(r10876, r10874, r10875, MPFR_RNDN);
        mpfr_div(r10877, r10873, r10876, MPFR_RNDN);
        mpfr_cbrt(r10878, r10877, MPFR_RNDN);
        mpfr_neg(r10879, r10868, MPFR_RNDN);
        mpfr_sub(r10880, r10879, r10872, MPFR_RNDN);
        mpfr_cbrt(r10881, r10880, MPFR_RNDN);
        mpfr_mul(r10882, r10881, r10881, MPFR_RNDN);
        mpfr_add(r10883, r10868, r10868, MPFR_RNDN);
        mpfr_neg(r10884, r10883, MPFR_RNDN);
        mpfr_cbrt(r10885, r10884, MPFR_RNDN);
        mpfr_div(r10886, r10876, r10885, MPFR_RNDN);
        mpfr_div(r10887, r10882, r10886, MPFR_RNDN);
        mpfr_cbrt(r10888, r10887, MPFR_RNDN);
        mpfr_add(r10889, r10878, r10888, MPFR_RNDN);
        return mpfr_get_d(r10889, MPFR_RNDN);
}

static mpfr_t r10890, r10891, r10892, r10893, r10894, r10895, r10896, r10897, r10898, r10899, r10900, r10901, r10902, r10903, r10904, r10905, r10906, r10907, r10908, r10909, r10910, r10911, r10912;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10890);
        mpfr_init(r10891);
        mpfr_init(r10892);
        mpfr_init(r10893);
        mpfr_init(r10894);
        mpfr_init(r10895);
        mpfr_init(r10896);
        mpfr_init(r10897);
        mpfr_init_set_str(r10898, "2", 10, MPFR_RNDN);
        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_dm(double g, double h, double a) {
        mpfr_set_d(r10890, h, MPFR_RNDN);
        mpfr_set_d(r10891, g, MPFR_RNDN);
        mpfr_add(r10892, r10890, r10891, MPFR_RNDN);
        mpfr_sub(r10893, r10891, r10890, MPFR_RNDN);
        mpfr_mul(r10894, r10892, r10893, MPFR_RNDN);
        mpfr_sqrt(r10895, r10894, MPFR_RNDN);
        mpfr_sub(r10896, r10895, r10891, MPFR_RNDN);
        mpfr_set_d(r10897, a, MPFR_RNDN);
        ;
        mpfr_mul(r10899, r10897, r10898, MPFR_RNDN);
        mpfr_div(r10900, r10896, r10899, MPFR_RNDN);
        mpfr_cbrt(r10901, r10900, MPFR_RNDN);
        mpfr_neg(r10902, r10891, MPFR_RNDN);
        mpfr_sub(r10903, r10902, r10895, MPFR_RNDN);
        mpfr_cbrt(r10904, r10903, MPFR_RNDN);
        mpfr_mul(r10905, r10904, r10904, MPFR_RNDN);
        mpfr_add(r10906, r10891, r10891, MPFR_RNDN);
        mpfr_neg(r10907, r10906, MPFR_RNDN);
        mpfr_cbrt(r10908, r10907, MPFR_RNDN);
        mpfr_div(r10909, r10899, r10908, MPFR_RNDN);
        mpfr_div(r10910, r10905, r10909, MPFR_RNDN);
        mpfr_cbrt(r10911, r10910, MPFR_RNDN);
        mpfr_add(r10912, r10901, r10911, MPFR_RNDN);
        return mpfr_get_d(r10912, MPFR_RNDN);
}

