#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 r10850 = 2;
        float r10851 = atan2(1.0, 0.0);
        float r10852 = r10850 * r10851;
        float r10853 = 3;
        float r10854 = r10852 / r10853;
        float r10855 = g;
        float r10856 = -r10855;
        float r10857 = h;
        float r10858 = r10856 / r10857;
        float r10859 = acos(r10858);
        float r10860 = r10859 / r10853;
        float r10861 = r10854 + r10860;
        float r10862 = cos(r10861);
        float r10863 = r10850 * r10862;
        return r10863;
}

double f_id(double g, double h) {
        double r10864 = 2;
        double r10865 = atan2(1.0, 0.0);
        double r10866 = r10864 * r10865;
        double r10867 = 3;
        double r10868 = r10866 / r10867;
        double r10869 = g;
        double r10870 = -r10869;
        double r10871 = h;
        double r10872 = r10870 / r10871;
        double r10873 = acos(r10872);
        double r10874 = r10873 / r10867;
        double r10875 = r10868 + r10874;
        double r10876 = cos(r10875);
        double r10877 = r10864 * r10876;
        return r10877;
}


double f_of(float g, float h) {
        float r10878 = 2;
        float r10879 = 3;
        float r10880 = r10878 / r10879;
        float r10881 = atan2(1.0, 0.0);
        float r10882 = g;
        float r10883 = h;
        float r10884 = r10882 / r10883;
        float r10885 = -r10884;
        float r10886 = acos(r10885);
        float r10887 = r10886 / r10879;
        float r10888 = fma(r10880, r10881, r10887);
        float r10889 = cos(r10888);
        float r10890 = r10889 * r10889;
        float r10891 = cbrt(r10890);
        float r10892 = -r10882;
        float r10893 = r10892 / r10883;
        float r10894 = acos(r10893);
        float r10895 = r10894 / r10879;
        float r10896 = fma(r10880, r10881, r10895);
        float r10897 = cos(r10896);
        float r10898 = cbrt(r10897);
        float r10899 = r10891 * r10898;
        float r10900 = r10899 * r10878;
        return r10900;
}

double f_od(double g, double h) {
        double r10901 = 2;
        double r10902 = 3;
        double r10903 = r10901 / r10902;
        double r10904 = atan2(1.0, 0.0);
        double r10905 = g;
        double r10906 = h;
        double r10907 = r10905 / r10906;
        double r10908 = -r10907;
        double r10909 = acos(r10908);
        double r10910 = r10909 / r10902;
        double r10911 = fma(r10903, r10904, r10910);
        double r10912 = cos(r10911);
        double r10913 = r10912 * r10912;
        double r10914 = cbrt(r10913);
        double r10915 = -r10905;
        double r10916 = r10915 / r10906;
        double r10917 = acos(r10916);
        double r10918 = r10917 / r10902;
        double r10919 = fma(r10903, r10904, r10918);
        double r10920 = cos(r10919);
        double r10921 = cbrt(r10920);
        double r10922 = r10914 * r10921;
        double r10923 = r10922 * r10901;
        return r10923;
}

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 r10924, r10925, r10926, r10927, r10928, r10929, r10930, r10931, r10932, r10933, r10934, r10935, r10936, r10937;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10924, "2", 10, MPFR_RNDN);
        mpfr_init(r10925);
        mpfr_init(r10926);
        mpfr_init_set_str(r10927, "3", 10, MPFR_RNDN);
        mpfr_init(r10928);
        mpfr_init(r10929);
        mpfr_init(r10930);
        mpfr_init(r10931);
        mpfr_init(r10932);
        mpfr_init(r10933);
        mpfr_init(r10934);
        mpfr_init(r10935);
        mpfr_init(r10936);
        mpfr_init(r10937);
}

double f_im(double g, double h) {
        ;
        mpfr_const_pi(r10925, MPFR_RNDN);
        mpfr_mul(r10926, r10924, r10925, MPFR_RNDN);
        ;
        mpfr_div(r10928, r10926, r10927, MPFR_RNDN);
        mpfr_set_d(r10929, g, MPFR_RNDN);
        mpfr_neg(r10930, r10929, MPFR_RNDN);
        mpfr_set_d(r10931, h, MPFR_RNDN);
        mpfr_div(r10932, r10930, r10931, MPFR_RNDN);
        mpfr_acos(r10933, r10932, MPFR_RNDN);
        mpfr_div(r10934, r10933, r10927, MPFR_RNDN);
        mpfr_add(r10935, r10928, r10934, MPFR_RNDN);
        mpfr_cos(r10936, r10935, MPFR_RNDN);
        mpfr_mul(r10937, r10924, r10936, MPFR_RNDN);
        return mpfr_get_d(r10937, MPFR_RNDN);
}

static mpfr_t r10938, r10939, r10940, r10941, r10942, r10943, r10944, r10945, r10946, r10947, r10948, r10949, r10950, r10951, r10952, r10953, r10954, r10955, r10956, r10957, r10958, r10959, r10960;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10938, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10939, "3", 10, MPFR_RNDN);
        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);
        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(r10960);
}

double f_fm(double g, double h) {
        ;
        ;
        mpfr_div(r10940, r10938, r10939, MPFR_RNDN);
        mpfr_const_pi(r10941, MPFR_RNDN);
        mpfr_set_d(r10942, g, MPFR_RNDN);
        mpfr_set_d(r10943, h, MPFR_RNDN);
        mpfr_div(r10944, r10942, r10943, MPFR_RNDN);
        mpfr_neg(r10945, r10944, MPFR_RNDN);
        mpfr_acos(r10946, r10945, MPFR_RNDN);
        mpfr_div(r10947, r10946, r10939, MPFR_RNDN);
        mpfr_fma(r10948, r10940, r10941, r10947, MPFR_RNDN);
        mpfr_cos(r10949, r10948, MPFR_RNDN);
        mpfr_mul(r10950, r10949, r10949, MPFR_RNDN);
        mpfr_cbrt(r10951, r10950, MPFR_RNDN);
        mpfr_neg(r10952, r10942, MPFR_RNDN);
        mpfr_div(r10953, r10952, r10943, MPFR_RNDN);
        mpfr_acos(r10954, r10953, MPFR_RNDN);
        mpfr_div(r10955, r10954, r10939, MPFR_RNDN);
        mpfr_fma(r10956, r10940, r10941, r10955, MPFR_RNDN);
        mpfr_cos(r10957, r10956, MPFR_RNDN);
        mpfr_cbrt(r10958, r10957, MPFR_RNDN);
        mpfr_mul(r10959, r10951, r10958, MPFR_RNDN);
        mpfr_mul(r10960, r10959, r10938, MPFR_RNDN);
        return mpfr_get_d(r10960, MPFR_RNDN);
}

static mpfr_t r10961, r10962, r10963, r10964, r10965, r10966, r10967, r10968, r10969, r10970, r10971, r10972, r10973, r10974, r10975, r10976, r10977, r10978, r10979, r10980, r10981, r10982, r10983;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10961, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10962, "3", 10, MPFR_RNDN);
        mpfr_init(r10963);
        mpfr_init(r10964);
        mpfr_init(r10965);
        mpfr_init(r10966);
        mpfr_init(r10967);
        mpfr_init(r10968);
        mpfr_init(r10969);
        mpfr_init(r10970);
        mpfr_init(r10971);
        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);
}

double f_dm(double g, double h) {
        ;
        ;
        mpfr_div(r10963, r10961, r10962, MPFR_RNDN);
        mpfr_const_pi(r10964, MPFR_RNDN);
        mpfr_set_d(r10965, g, MPFR_RNDN);
        mpfr_set_d(r10966, h, MPFR_RNDN);
        mpfr_div(r10967, r10965, r10966, MPFR_RNDN);
        mpfr_neg(r10968, r10967, MPFR_RNDN);
        mpfr_acos(r10969, r10968, MPFR_RNDN);
        mpfr_div(r10970, r10969, r10962, MPFR_RNDN);
        mpfr_fma(r10971, r10963, r10964, r10970, MPFR_RNDN);
        mpfr_cos(r10972, r10971, MPFR_RNDN);
        mpfr_mul(r10973, r10972, r10972, MPFR_RNDN);
        mpfr_cbrt(r10974, r10973, MPFR_RNDN);
        mpfr_neg(r10975, r10965, MPFR_RNDN);
        mpfr_div(r10976, r10975, r10966, MPFR_RNDN);
        mpfr_acos(r10977, r10976, MPFR_RNDN);
        mpfr_div(r10978, r10977, r10962, MPFR_RNDN);
        mpfr_fma(r10979, r10963, r10964, r10978, MPFR_RNDN);
        mpfr_cos(r10980, r10979, MPFR_RNDN);
        mpfr_cbrt(r10981, r10980, MPFR_RNDN);
        mpfr_mul(r10982, r10974, r10981, MPFR_RNDN);
        mpfr_mul(r10983, r10982, r10961, MPFR_RNDN);
        return mpfr_get_d(r10983, MPFR_RNDN);
}

