#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "2-ancestry mixing, negative discriminant";

double f_if(float g, float h) {
        float r37825 = 2;
        float r37826 = atan2(1.0, 0.0);
        float r37827 = r37825 * r37826;
        float r37828 = 3;
        float r37829 = r37827 / r37828;
        float r37830 = g;
        float r37831 = -r37830;
        float r37832 = h;
        float r37833 = r37831 / r37832;
        float r37834 = acos(r37833);
        float r37835 = r37834 / r37828;
        float r37836 = r37829 + r37835;
        float r37837 = cos(r37836);
        float r37838 = r37825 * r37837;
        return r37838;
}

double f_id(double g, double h) {
        double r37839 = 2;
        double r37840 = atan2(1.0, 0.0);
        double r37841 = r37839 * r37840;
        double r37842 = 3;
        double r37843 = r37841 / r37842;
        double r37844 = g;
        double r37845 = -r37844;
        double r37846 = h;
        double r37847 = r37845 / r37846;
        double r37848 = acos(r37847);
        double r37849 = r37848 / r37842;
        double r37850 = r37843 + r37849;
        double r37851 = cos(r37850);
        double r37852 = r37839 * r37851;
        return r37852;
}


double f_of(float g, float h) {
        float r37853 = 2;
        float r37854 = g;
        float r37855 = h;
        float r37856 = r37854 / r37855;
        float r37857 = acos(r37856);
        float r37858 = 3;
        float r37859 = r37857 / r37858;
        float r37860 = cos(r37859);
        float r37861 = 1;
        float r37862 = r37853 + r37861;
        float r37863 = atan2(1.0, 0.0);
        float r37864 = r37863 / r37858;
        float r37865 = r37862 * r37864;
        float r37866 = cos(r37865);
        float r37867 = r37860 * r37866;
        float r37868 = sin(r37859);
        float r37869 = sin(r37865);
        float r37870 = r37868 * r37869;
        float r37871 = r37867 + r37870;
        float r37872 = r37853 * r37871;
        return r37872;
}

double f_od(double g, double h) {
        double r37873 = 2;
        double r37874 = g;
        double r37875 = h;
        double r37876 = r37874 / r37875;
        double r37877 = acos(r37876);
        double r37878 = 3;
        double r37879 = r37877 / r37878;
        double r37880 = cos(r37879);
        double r37881 = 1;
        double r37882 = r37873 + r37881;
        double r37883 = atan2(1.0, 0.0);
        double r37884 = r37883 / r37878;
        double r37885 = r37882 * r37884;
        double r37886 = cos(r37885);
        double r37887 = r37880 * r37886;
        double r37888 = sin(r37879);
        double r37889 = sin(r37885);
        double r37890 = r37888 * r37889;
        double r37891 = r37887 + r37890;
        double r37892 = r37873 * r37891;
        return r37892;
}

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 r37893, r37894, r37895, r37896, r37897, r37898, r37899, r37900, r37901, r37902, r37903, r37904, r37905, r37906;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r37893, "2", 10, MPFR_RNDN);
        mpfr_init(r37894);
        mpfr_init(r37895);
        mpfr_init_set_str(r37896, "3", 10, MPFR_RNDN);
        mpfr_init(r37897);
        mpfr_init(r37898);
        mpfr_init(r37899);
        mpfr_init(r37900);
        mpfr_init(r37901);
        mpfr_init(r37902);
        mpfr_init(r37903);
        mpfr_init(r37904);
        mpfr_init(r37905);
        mpfr_init(r37906);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r37894, MPFR_RNDN);
        mpfr_mul(r37895, r37893, r37894, MPFR_RNDN);
        ;
        mpfr_div(r37897, r37895, r37896, MPFR_RNDN);
        mpfr_set_d(r37898, g, MPFR_RNDN);
        mpfr_neg(r37899, r37898, MPFR_RNDN);
        mpfr_set_d(r37900, h, MPFR_RNDN);
        mpfr_div(r37901, r37899, r37900, MPFR_RNDN);
        mpfr_acos(r37902, r37901, MPFR_RNDN);
        mpfr_div(r37903, r37902, r37896, MPFR_RNDN);
        mpfr_add(r37904, r37897, r37903, MPFR_RNDN);
        mpfr_cos(r37905, r37904, MPFR_RNDN);
        mpfr_mul(r37906, r37893, r37905, MPFR_RNDN);
        return mpfr_get_d(r37906, MPFR_RNDN);
}

static mpfr_t r37907, r37908, r37909, r37910, r37911, r37912, r37913, r37914, r37915, r37916, r37917, r37918, r37919, r37920, r37921, r37922, r37923, r37924, r37925, r37926;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r37907, "2", 10, MPFR_RNDN);
        mpfr_init(r37908);
        mpfr_init(r37909);
        mpfr_init(r37910);
        mpfr_init(r37911);
        mpfr_init_set_str(r37912, "3", 10, MPFR_RNDN);
        mpfr_init(r37913);
        mpfr_init(r37914);
        mpfr_init_set_str(r37915, "1", 10, MPFR_RNDN);
        mpfr_init(r37916);
        mpfr_init(r37917);
        mpfr_init(r37918);
        mpfr_init(r37919);
        mpfr_init(r37920);
        mpfr_init(r37921);
        mpfr_init(r37922);
        mpfr_init(r37923);
        mpfr_init(r37924);
        mpfr_init(r37925);
        mpfr_init(r37926);
}

double f_fm(double g, double h) {
        ;
        mpfr_set_d(r37908, g, MPFR_RNDN);
        mpfr_set_d(r37909, h, MPFR_RNDN);
        mpfr_div(r37910, r37908, r37909, MPFR_RNDN);
        mpfr_acos(r37911, r37910, MPFR_RNDN);
        ;
        mpfr_div(r37913, r37911, r37912, MPFR_RNDN);
        mpfr_cos(r37914, r37913, MPFR_RNDN);
        ;
        mpfr_add(r37916, r37907, r37915, MPFR_RNDN);
        mpfr_const_pi(r37917, MPFR_RNDN);
        mpfr_div(r37918, r37917, r37912, MPFR_RNDN);
        mpfr_mul(r37919, r37916, r37918, MPFR_RNDN);
        mpfr_cos(r37920, r37919, MPFR_RNDN);
        mpfr_mul(r37921, r37914, r37920, MPFR_RNDN);
        mpfr_sin(r37922, r37913, MPFR_RNDN);
        mpfr_sin(r37923, r37919, MPFR_RNDN);
        mpfr_mul(r37924, r37922, r37923, MPFR_RNDN);
        mpfr_add(r37925, r37921, r37924, MPFR_RNDN);
        mpfr_mul(r37926, r37907, r37925, MPFR_RNDN);
        return mpfr_get_d(r37926, MPFR_RNDN);
}

static mpfr_t r37927, r37928, r37929, r37930, r37931, r37932, r37933, r37934, r37935, r37936, r37937, r37938, r37939, r37940, r37941, r37942, r37943, r37944, r37945, r37946;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r37927, "2", 10, MPFR_RNDN);
        mpfr_init(r37928);
        mpfr_init(r37929);
        mpfr_init(r37930);
        mpfr_init(r37931);
        mpfr_init_set_str(r37932, "3", 10, MPFR_RNDN);
        mpfr_init(r37933);
        mpfr_init(r37934);
        mpfr_init_set_str(r37935, "1", 10, MPFR_RNDN);
        mpfr_init(r37936);
        mpfr_init(r37937);
        mpfr_init(r37938);
        mpfr_init(r37939);
        mpfr_init(r37940);
        mpfr_init(r37941);
        mpfr_init(r37942);
        mpfr_init(r37943);
        mpfr_init(r37944);
        mpfr_init(r37945);
        mpfr_init(r37946);
}

double f_dm(double g, double h) {
        ;
        mpfr_set_d(r37928, g, MPFR_RNDN);
        mpfr_set_d(r37929, h, MPFR_RNDN);
        mpfr_div(r37930, r37928, r37929, MPFR_RNDN);
        mpfr_acos(r37931, r37930, MPFR_RNDN);
        ;
        mpfr_div(r37933, r37931, r37932, MPFR_RNDN);
        mpfr_cos(r37934, r37933, MPFR_RNDN);
        ;
        mpfr_add(r37936, r37927, r37935, MPFR_RNDN);
        mpfr_const_pi(r37937, MPFR_RNDN);
        mpfr_div(r37938, r37937, r37932, MPFR_RNDN);
        mpfr_mul(r37939, r37936, r37938, MPFR_RNDN);
        mpfr_cos(r37940, r37939, MPFR_RNDN);
        mpfr_mul(r37941, r37934, r37940, MPFR_RNDN);
        mpfr_sin(r37942, r37933, MPFR_RNDN);
        mpfr_sin(r37943, r37939, MPFR_RNDN);
        mpfr_mul(r37944, r37942, r37943, MPFR_RNDN);
        mpfr_add(r37945, r37941, r37944, MPFR_RNDN);
        mpfr_mul(r37946, r37927, r37945, MPFR_RNDN);
        return mpfr_get_d(r37946, MPFR_RNDN);
}

