#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 r19829 = b_2F2;
        float r19830 = -r19829;
        float r19831 = r19829 * r19829;
        float r19832 = a;
        float r19833 = c;
        float r19834 = r19832 * r19833;
        float r19835 = r19831 - r19834;
        float r19836 = sqrt(r19835);
        float r19837 = r19830 - r19836;
        float r19838 = r19837 / r19832;
        return r19838;
}

double f_id(double a, double b_2F2, double c) {
        double r19839 = b_2F2;
        double r19840 = -r19839;
        double r19841 = r19839 * r19839;
        double r19842 = a;
        double r19843 = c;
        double r19844 = r19842 * r19843;
        double r19845 = r19841 - r19844;
        double r19846 = sqrt(r19845);
        double r19847 = r19840 - r19846;
        double r19848 = r19847 / r19842;
        return r19848;
}


double f_of(float a, float b_2F2, float c) {
        float r19849 = b_2F2;
        float r19850 = -5.018034098196628e+28;
        bool r19851 = r19849 <= r19850;
        float r19852 = c;
        float r19853 = r19852 / r19849;
        float r19854 = -1/2;
        float r19855 = r19853 * r19854;
        float r19856 = -1.992853954034314e-66;
        bool r19857 = r19849 <= r19856;
        float r19858 = a;
        float r19859 = r19852 * r19858;
        float r19860 = -r19849;
        float r19861 = r19849 * r19849;
        float r19862 = r19858 * r19852;
        float r19863 = r19861 - r19862;
        float r19864 = sqrt(r19863);
        float r19865 = r19860 + r19864;
        float r19866 = r19859 / r19865;
        float r19867 = r19866 / r19858;
        float r19868 = -5.3589749776329416e-108;
        bool r19869 = r19849 <= r19868;
        float r19870 = 1.7007616628281973e+81;
        bool r19871 = r19849 <= r19870;
        float r19872 = r19860 - r19864;
        float r19873 = r19872 / r19858;
        float r19874 = -2;
        float r19875 = r19849 / r19858;
        float r19876 = r19874 * r19875;
        float r19877 = r19871 ? r19873 : r19876;
        float r19878 = r19869 ? r19855 : r19877;
        float r19879 = r19857 ? r19867 : r19878;
        float r19880 = r19851 ? r19855 : r19879;
        return r19880;
}

double f_od(double a, double b_2F2, double c) {
        double r19881 = b_2F2;
        double r19882 = -5.018034098196628e+28;
        bool r19883 = r19881 <= r19882;
        double r19884 = c;
        double r19885 = r19884 / r19881;
        double r19886 = -1/2;
        double r19887 = r19885 * r19886;
        double r19888 = -1.992853954034314e-66;
        bool r19889 = r19881 <= r19888;
        double r19890 = a;
        double r19891 = r19884 * r19890;
        double r19892 = -r19881;
        double r19893 = r19881 * r19881;
        double r19894 = r19890 * r19884;
        double r19895 = r19893 - r19894;
        double r19896 = sqrt(r19895);
        double r19897 = r19892 + r19896;
        double r19898 = r19891 / r19897;
        double r19899 = r19898 / r19890;
        double r19900 = -5.3589749776329416e-108;
        bool r19901 = r19881 <= r19900;
        double r19902 = 1.7007616628281973e+81;
        bool r19903 = r19881 <= r19902;
        double r19904 = r19892 - r19896;
        double r19905 = r19904 / r19890;
        double r19906 = -2;
        double r19907 = r19881 / r19890;
        double r19908 = r19906 * r19907;
        double r19909 = r19903 ? r19905 : r19908;
        double r19910 = r19901 ? r19887 : r19909;
        double r19911 = r19889 ? r19899 : r19910;
        double r19912 = r19883 ? r19887 : r19911;
        return r19912;
}

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 r19913, r19914, r19915, r19916, r19917, r19918, r19919, r19920, r19921, r19922;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19913);
        mpfr_init(r19914);
        mpfr_init(r19915);
        mpfr_init(r19916);
        mpfr_init(r19917);
        mpfr_init(r19918);
        mpfr_init(r19919);
        mpfr_init(r19920);
        mpfr_init(r19921);
        mpfr_init(r19922);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r19913, b_2F2, MPFR_RNDN);
        mpfr_neg(r19914, r19913, MPFR_RNDN);
        mpfr_mul(r19915, r19913, r19913, MPFR_RNDN);
        mpfr_set_d(r19916, a, MPFR_RNDN);
        mpfr_set_d(r19917, c, MPFR_RNDN);
        mpfr_mul(r19918, r19916, r19917, MPFR_RNDN);
        mpfr_sub(r19919, r19915, r19918, MPFR_RNDN);
        mpfr_sqrt(r19920, r19919, MPFR_RNDN);
        mpfr_sub(r19921, r19914, r19920, MPFR_RNDN);
        mpfr_div(r19922, r19921, r19916, MPFR_RNDN);
        return mpfr_get_d(r19922, MPFR_RNDN);
}

static mpfr_t r19923, r19924, r19925, r19926, r19927, r19928, r19929, r19930, r19931, r19932, r19933, r19934, r19935, r19936, r19937, r19938, r19939, r19940, r19941, r19942, r19943, r19944, r19945, r19946, r19947, r19948, r19949, r19950, r19951, r19952, r19953, r19954;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19923);
        mpfr_init_set_str(r19924, "-5.018034098196628e+28", 10, MPFR_RNDN);
        mpfr_init(r19925);
        mpfr_init(r19926);
        mpfr_init(r19927);
        mpfr_init_set_str(r19928, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19929);
        mpfr_init_set_str(r19930, "-1.992853954034314e-66", 10, MPFR_RNDN);
        mpfr_init(r19931);
        mpfr_init(r19932);
        mpfr_init(r19933);
        mpfr_init(r19934);
        mpfr_init(r19935);
        mpfr_init(r19936);
        mpfr_init(r19937);
        mpfr_init(r19938);
        mpfr_init(r19939);
        mpfr_init(r19940);
        mpfr_init(r19941);
        mpfr_init_set_str(r19942, "-5.3589749776329416e-108", 10, MPFR_RNDN);
        mpfr_init(r19943);
        mpfr_init_set_str(r19944, "1.7007616628281973e+81", 10, MPFR_RNDN);
        mpfr_init(r19945);
        mpfr_init(r19946);
        mpfr_init(r19947);
        mpfr_init_set_str(r19948, "-2", 10, MPFR_RNDN);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init(r19953);
        mpfr_init(r19954);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r19923, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19925, mpfr_cmp(r19923, r19924) <= 0, MPFR_RNDN);
        mpfr_set_d(r19926, c, MPFR_RNDN);
        mpfr_div(r19927, r19926, r19923, MPFR_RNDN);
        ;
        mpfr_mul(r19929, r19927, r19928, MPFR_RNDN);
        ;
        mpfr_set_si(r19931, mpfr_cmp(r19923, r19930) <= 0, MPFR_RNDN);
        mpfr_set_d(r19932, a, MPFR_RNDN);
        mpfr_mul(r19933, r19926, r19932, MPFR_RNDN);
        mpfr_neg(r19934, r19923, MPFR_RNDN);
        mpfr_mul(r19935, r19923, r19923, MPFR_RNDN);
        mpfr_mul(r19936, r19932, r19926, MPFR_RNDN);
        mpfr_sub(r19937, r19935, r19936, MPFR_RNDN);
        mpfr_sqrt(r19938, r19937, MPFR_RNDN);
        mpfr_add(r19939, r19934, r19938, MPFR_RNDN);
        mpfr_div(r19940, r19933, r19939, MPFR_RNDN);
        mpfr_div(r19941, r19940, r19932, MPFR_RNDN);
        ;
        mpfr_set_si(r19943, mpfr_cmp(r19923, r19942) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r19945, mpfr_cmp(r19923, r19944) <= 0, MPFR_RNDN);
        mpfr_sub(r19946, r19934, r19938, MPFR_RNDN);
        mpfr_div(r19947, r19946, r19932, MPFR_RNDN);
        ;
        mpfr_div(r19949, r19923, r19932, MPFR_RNDN);
        mpfr_mul(r19950, r19948, r19949, MPFR_RNDN);
        if (mpfr_get_si(r19945, MPFR_RNDN)) { mpfr_set(r19951, r19947, MPFR_RNDN); } else { mpfr_set(r19951, r19950, MPFR_RNDN); };
        if (mpfr_get_si(r19943, MPFR_RNDN)) { mpfr_set(r19952, r19929, MPFR_RNDN); } else { mpfr_set(r19952, r19951, MPFR_RNDN); };
        if (mpfr_get_si(r19931, MPFR_RNDN)) { mpfr_set(r19953, r19941, MPFR_RNDN); } else { mpfr_set(r19953, r19952, MPFR_RNDN); };
        if (mpfr_get_si(r19925, MPFR_RNDN)) { mpfr_set(r19954, r19929, MPFR_RNDN); } else { mpfr_set(r19954, r19953, MPFR_RNDN); };
        return mpfr_get_d(r19954, MPFR_RNDN);
}

static mpfr_t r19955, r19956, r19957, r19958, r19959, r19960, r19961, r19962, r19963, r19964, r19965, r19966, r19967, r19968, r19969, r19970, r19971, r19972, r19973, r19974, r19975, r19976, r19977, r19978, r19979, r19980, r19981, r19982, r19983, r19984, r19985, r19986;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r19955);
        mpfr_init_set_str(r19956, "-5.018034098196628e+28", 10, MPFR_RNDN);
        mpfr_init(r19957);
        mpfr_init(r19958);
        mpfr_init(r19959);
        mpfr_init_set_str(r19960, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19961);
        mpfr_init_set_str(r19962, "-1.992853954034314e-66", 10, MPFR_RNDN);
        mpfr_init(r19963);
        mpfr_init(r19964);
        mpfr_init(r19965);
        mpfr_init(r19966);
        mpfr_init(r19967);
        mpfr_init(r19968);
        mpfr_init(r19969);
        mpfr_init(r19970);
        mpfr_init(r19971);
        mpfr_init(r19972);
        mpfr_init(r19973);
        mpfr_init_set_str(r19974, "-5.3589749776329416e-108", 10, MPFR_RNDN);
        mpfr_init(r19975);
        mpfr_init_set_str(r19976, "1.7007616628281973e+81", 10, MPFR_RNDN);
        mpfr_init(r19977);
        mpfr_init(r19978);
        mpfr_init(r19979);
        mpfr_init_set_str(r19980, "-2", 10, MPFR_RNDN);
        mpfr_init(r19981);
        mpfr_init(r19982);
        mpfr_init(r19983);
        mpfr_init(r19984);
        mpfr_init(r19985);
        mpfr_init(r19986);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19955, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19957, mpfr_cmp(r19955, r19956) <= 0, MPFR_RNDN);
        mpfr_set_d(r19958, c, MPFR_RNDN);
        mpfr_div(r19959, r19958, r19955, MPFR_RNDN);
        ;
        mpfr_mul(r19961, r19959, r19960, MPFR_RNDN);
        ;
        mpfr_set_si(r19963, mpfr_cmp(r19955, r19962) <= 0, MPFR_RNDN);
        mpfr_set_d(r19964, a, MPFR_RNDN);
        mpfr_mul(r19965, r19958, r19964, MPFR_RNDN);
        mpfr_neg(r19966, r19955, MPFR_RNDN);
        mpfr_mul(r19967, r19955, r19955, MPFR_RNDN);
        mpfr_mul(r19968, r19964, r19958, MPFR_RNDN);
        mpfr_sub(r19969, r19967, r19968, MPFR_RNDN);
        mpfr_sqrt(r19970, r19969, MPFR_RNDN);
        mpfr_add(r19971, r19966, r19970, MPFR_RNDN);
        mpfr_div(r19972, r19965, r19971, MPFR_RNDN);
        mpfr_div(r19973, r19972, r19964, MPFR_RNDN);
        ;
        mpfr_set_si(r19975, mpfr_cmp(r19955, r19974) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r19977, mpfr_cmp(r19955, r19976) <= 0, MPFR_RNDN);
        mpfr_sub(r19978, r19966, r19970, MPFR_RNDN);
        mpfr_div(r19979, r19978, r19964, MPFR_RNDN);
        ;
        mpfr_div(r19981, r19955, r19964, MPFR_RNDN);
        mpfr_mul(r19982, r19980, r19981, MPFR_RNDN);
        if (mpfr_get_si(r19977, MPFR_RNDN)) { mpfr_set(r19983, r19979, MPFR_RNDN); } else { mpfr_set(r19983, r19982, MPFR_RNDN); };
        if (mpfr_get_si(r19975, MPFR_RNDN)) { mpfr_set(r19984, r19961, MPFR_RNDN); } else { mpfr_set(r19984, r19983, MPFR_RNDN); };
        if (mpfr_get_si(r19963, MPFR_RNDN)) { mpfr_set(r19985, r19973, MPFR_RNDN); } else { mpfr_set(r19985, r19984, MPFR_RNDN); };
        if (mpfr_get_si(r19957, MPFR_RNDN)) { mpfr_set(r19986, r19961, MPFR_RNDN); } else { mpfr_set(r19986, r19985, MPFR_RNDN); };
        return mpfr_get_d(r19986, MPFR_RNDN);
}

