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

char *name = "quad2m (problem 3.2.1, negative)";

double f_if(float a, float b_2F2, float c) {
        float r19841 = b_2F2;
        float r19842 = -r19841;
        float r19843 = r19841 * r19841;
        float r19844 = a;
        float r19845 = c;
        float r19846 = r19844 * r19845;
        float r19847 = r19843 - r19846;
        float r19848 = sqrt(r19847);
        float r19849 = r19842 - r19848;
        float r19850 = r19849 / r19844;
        return r19850;
}

double f_id(double a, double b_2F2, double c) {
        double r19851 = b_2F2;
        double r19852 = -r19851;
        double r19853 = r19851 * r19851;
        double r19854 = a;
        double r19855 = c;
        double r19856 = r19854 * r19855;
        double r19857 = r19853 - r19856;
        double r19858 = sqrt(r19857);
        double r19859 = r19852 - r19858;
        double r19860 = r19859 / r19854;
        return r19860;
}


double f_of(float a, float b_2F2, float c) {
        float r19861 = b_2F2;
        float r19862 = -5.018034098196628e+28;
        bool r19863 = r19861 <= r19862;
        float r19864 = c;
        float r19865 = r19864 / r19861;
        float r19866 = -1/2;
        float r19867 = r19865 * r19866;
        float r19868 = -1.992853954034314e-66;
        bool r19869 = r19861 <= r19868;
        float r19870 = a;
        float r19871 = r19864 * r19870;
        float r19872 = -r19861;
        float r19873 = r19861 * r19861;
        float r19874 = r19870 * r19864;
        float r19875 = r19873 - r19874;
        float r19876 = sqrt(r19875);
        float r19877 = r19872 + r19876;
        float r19878 = r19871 / r19877;
        float r19879 = r19878 / r19870;
        float r19880 = -5.3589749776329416e-108;
        bool r19881 = r19861 <= r19880;
        float r19882 = 1.7007616628281973e+81;
        bool r19883 = r19861 <= r19882;
        float r19884 = r19872 - r19876;
        float r19885 = r19884 / r19870;
        float r19886 = -2;
        float r19887 = r19861 / r19870;
        float r19888 = r19886 * r19887;
        float r19889 = r19883 ? r19885 : r19888;
        float r19890 = r19881 ? r19867 : r19889;
        float r19891 = r19869 ? r19879 : r19890;
        float r19892 = r19863 ? r19867 : r19891;
        return r19892;
}

double f_od(double a, double b_2F2, double c) {
        double r19893 = b_2F2;
        double r19894 = -5.018034098196628e+28;
        bool r19895 = r19893 <= r19894;
        double r19896 = c;
        double r19897 = r19896 / r19893;
        double r19898 = -1/2;
        double r19899 = r19897 * r19898;
        double r19900 = -1.992853954034314e-66;
        bool r19901 = r19893 <= r19900;
        double r19902 = a;
        double r19903 = r19896 * r19902;
        double r19904 = -r19893;
        double r19905 = r19893 * r19893;
        double r19906 = r19902 * r19896;
        double r19907 = r19905 - r19906;
        double r19908 = sqrt(r19907);
        double r19909 = r19904 + r19908;
        double r19910 = r19903 / r19909;
        double r19911 = r19910 / r19902;
        double r19912 = -5.3589749776329416e-108;
        bool r19913 = r19893 <= r19912;
        double r19914 = 1.7007616628281973e+81;
        bool r19915 = r19893 <= r19914;
        double r19916 = r19904 - r19908;
        double r19917 = r19916 / r19902;
        double r19918 = -2;
        double r19919 = r19893 / r19902;
        double r19920 = r19918 * r19919;
        double r19921 = r19915 ? r19917 : r19920;
        double r19922 = r19913 ? r19899 : r19921;
        double r19923 = r19901 ? r19911 : r19922;
        double r19924 = r19895 ? r19899 : r19923;
        return r19924;
}

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 r19925, r19926, r19927, r19928, r19929, r19930, r19931, r19932, r19933, r19934;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19925);
        mpfr_init(r19926);
        mpfr_init(r19927);
        mpfr_init(r19928);
        mpfr_init(r19929);
        mpfr_init(r19930);
        mpfr_init(r19931);
        mpfr_init(r19932);
        mpfr_init(r19933);
        mpfr_init(r19934);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r19925, b_2F2, MPFR_RNDN);
        mpfr_neg(r19926, r19925, MPFR_RNDN);
        mpfr_mul(r19927, r19925, r19925, MPFR_RNDN);
        mpfr_set_d(r19928, a, MPFR_RNDN);
        mpfr_set_d(r19929, c, MPFR_RNDN);
        mpfr_mul(r19930, r19928, r19929, MPFR_RNDN);
        mpfr_sub(r19931, r19927, r19930, MPFR_RNDN);
        mpfr_sqrt(r19932, r19931, MPFR_RNDN);
        mpfr_sub(r19933, r19926, r19932, MPFR_RNDN);
        mpfr_div(r19934, r19933, r19928, MPFR_RNDN);
        return mpfr_get_d(r19934, MPFR_RNDN);
}

static mpfr_t r19935, r19936, r19937, r19938, r19939, r19940, r19941, r19942, r19943, r19944, r19945, r19946, r19947, r19948, r19949, r19950, r19951, r19952, r19953, r19954, r19955, r19956, r19957, r19958, r19959, r19960, r19961, r19962, r19963, r19964, r19965, r19966;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19935);
        mpfr_init_set_str(r19936, "-5.018034098196628e+28", 10, MPFR_RNDN);
        mpfr_init(r19937);
        mpfr_init(r19938);
        mpfr_init(r19939);
        mpfr_init_set_str(r19940, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19941);
        mpfr_init_set_str(r19942, "-1.992853954034314e-66", 10, MPFR_RNDN);
        mpfr_init(r19943);
        mpfr_init(r19944);
        mpfr_init(r19945);
        mpfr_init(r19946);
        mpfr_init(r19947);
        mpfr_init(r19948);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init(r19953);
        mpfr_init_set_str(r19954, "-5.3589749776329416e-108", 10, MPFR_RNDN);
        mpfr_init(r19955);
        mpfr_init_set_str(r19956, "1.7007616628281973e+81", 10, MPFR_RNDN);
        mpfr_init(r19957);
        mpfr_init(r19958);
        mpfr_init(r19959);
        mpfr_init_set_str(r19960, "-2", 10, MPFR_RNDN);
        mpfr_init(r19961);
        mpfr_init(r19962);
        mpfr_init(r19963);
        mpfr_init(r19964);
        mpfr_init(r19965);
        mpfr_init(r19966);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r19935, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19937, mpfr_cmp(r19935, r19936) <= 0, MPFR_RNDN);
        mpfr_set_d(r19938, c, MPFR_RNDN);
        mpfr_div(r19939, r19938, r19935, MPFR_RNDN);
        ;
        mpfr_mul(r19941, r19939, r19940, MPFR_RNDN);
        ;
        mpfr_set_si(r19943, mpfr_cmp(r19935, r19942) <= 0, MPFR_RNDN);
        mpfr_set_d(r19944, a, MPFR_RNDN);
        mpfr_mul(r19945, r19938, r19944, MPFR_RNDN);
        mpfr_neg(r19946, r19935, MPFR_RNDN);
        mpfr_mul(r19947, r19935, r19935, MPFR_RNDN);
        mpfr_mul(r19948, r19944, r19938, MPFR_RNDN);
        mpfr_sub(r19949, r19947, r19948, MPFR_RNDN);
        mpfr_sqrt(r19950, r19949, MPFR_RNDN);
        mpfr_add(r19951, r19946, r19950, MPFR_RNDN);
        mpfr_div(r19952, r19945, r19951, MPFR_RNDN);
        mpfr_div(r19953, r19952, r19944, MPFR_RNDN);
        ;
        mpfr_set_si(r19955, mpfr_cmp(r19935, r19954) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r19957, mpfr_cmp(r19935, r19956) <= 0, MPFR_RNDN);
        mpfr_sub(r19958, r19946, r19950, MPFR_RNDN);
        mpfr_div(r19959, r19958, r19944, MPFR_RNDN);
        ;
        mpfr_div(r19961, r19935, r19944, MPFR_RNDN);
        mpfr_mul(r19962, r19960, r19961, MPFR_RNDN);
        if (mpfr_get_si(r19957, MPFR_RNDN)) { mpfr_set(r19963, r19959, MPFR_RNDN); } else { mpfr_set(r19963, r19962, MPFR_RNDN); };
        if (mpfr_get_si(r19955, MPFR_RNDN)) { mpfr_set(r19964, r19941, MPFR_RNDN); } else { mpfr_set(r19964, r19963, MPFR_RNDN); };
        if (mpfr_get_si(r19943, MPFR_RNDN)) { mpfr_set(r19965, r19953, MPFR_RNDN); } else { mpfr_set(r19965, r19964, MPFR_RNDN); };
        if (mpfr_get_si(r19937, MPFR_RNDN)) { mpfr_set(r19966, r19941, MPFR_RNDN); } else { mpfr_set(r19966, r19965, MPFR_RNDN); };
        return mpfr_get_d(r19966, MPFR_RNDN);
}

static mpfr_t r19967, r19968, r19969, r19970, r19971, r19972, r19973, r19974, r19975, r19976, r19977, r19978, r19979, r19980, r19981, r19982, r19983, r19984, r19985, r19986, r19987, r19988, r19989, r19990, r19991, r19992, r19993, r19994, r19995, r19996, r19997, r19998;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19967);
        mpfr_init_set_str(r19968, "-5.018034098196628e+28", 10, MPFR_RNDN);
        mpfr_init(r19969);
        mpfr_init(r19970);
        mpfr_init(r19971);
        mpfr_init_set_str(r19972, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19973);
        mpfr_init_set_str(r19974, "-1.992853954034314e-66", 10, MPFR_RNDN);
        mpfr_init(r19975);
        mpfr_init(r19976);
        mpfr_init(r19977);
        mpfr_init(r19978);
        mpfr_init(r19979);
        mpfr_init(r19980);
        mpfr_init(r19981);
        mpfr_init(r19982);
        mpfr_init(r19983);
        mpfr_init(r19984);
        mpfr_init(r19985);
        mpfr_init_set_str(r19986, "-5.3589749776329416e-108", 10, MPFR_RNDN);
        mpfr_init(r19987);
        mpfr_init_set_str(r19988, "1.7007616628281973e+81", 10, MPFR_RNDN);
        mpfr_init(r19989);
        mpfr_init(r19990);
        mpfr_init(r19991);
        mpfr_init_set_str(r19992, "-2", 10, MPFR_RNDN);
        mpfr_init(r19993);
        mpfr_init(r19994);
        mpfr_init(r19995);
        mpfr_init(r19996);
        mpfr_init(r19997);
        mpfr_init(r19998);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19967, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19969, mpfr_cmp(r19967, r19968) <= 0, MPFR_RNDN);
        mpfr_set_d(r19970, c, MPFR_RNDN);
        mpfr_div(r19971, r19970, r19967, MPFR_RNDN);
        ;
        mpfr_mul(r19973, r19971, r19972, MPFR_RNDN);
        ;
        mpfr_set_si(r19975, mpfr_cmp(r19967, r19974) <= 0, MPFR_RNDN);
        mpfr_set_d(r19976, a, MPFR_RNDN);
        mpfr_mul(r19977, r19970, r19976, MPFR_RNDN);
        mpfr_neg(r19978, r19967, MPFR_RNDN);
        mpfr_mul(r19979, r19967, r19967, MPFR_RNDN);
        mpfr_mul(r19980, r19976, r19970, MPFR_RNDN);
        mpfr_sub(r19981, r19979, r19980, MPFR_RNDN);
        mpfr_sqrt(r19982, r19981, MPFR_RNDN);
        mpfr_add(r19983, r19978, r19982, MPFR_RNDN);
        mpfr_div(r19984, r19977, r19983, MPFR_RNDN);
        mpfr_div(r19985, r19984, r19976, MPFR_RNDN);
        ;
        mpfr_set_si(r19987, mpfr_cmp(r19967, r19986) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r19989, mpfr_cmp(r19967, r19988) <= 0, MPFR_RNDN);
        mpfr_sub(r19990, r19978, r19982, MPFR_RNDN);
        mpfr_div(r19991, r19990, r19976, MPFR_RNDN);
        ;
        mpfr_div(r19993, r19967, r19976, MPFR_RNDN);
        mpfr_mul(r19994, r19992, r19993, MPFR_RNDN);
        if (mpfr_get_si(r19989, MPFR_RNDN)) { mpfr_set(r19995, r19991, MPFR_RNDN); } else { mpfr_set(r19995, r19994, MPFR_RNDN); };
        if (mpfr_get_si(r19987, MPFR_RNDN)) { mpfr_set(r19996, r19973, MPFR_RNDN); } else { mpfr_set(r19996, r19995, MPFR_RNDN); };
        if (mpfr_get_si(r19975, MPFR_RNDN)) { mpfr_set(r19997, r19985, MPFR_RNDN); } else { mpfr_set(r19997, r19996, MPFR_RNDN); };
        if (mpfr_get_si(r19969, MPFR_RNDN)) { mpfr_set(r19998, r19973, MPFR_RNDN); } else { mpfr_set(r19998, r19997, MPFR_RNDN); };
        return mpfr_get_d(r19998, MPFR_RNDN);
}

