#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 r19817 = b_2F2;
        float r19818 = -r19817;
        float r19819 = r19817 * r19817;
        float r19820 = a;
        float r19821 = c;
        float r19822 = r19820 * r19821;
        float r19823 = r19819 - r19822;
        float r19824 = sqrt(r19823);
        float r19825 = r19818 - r19824;
        float r19826 = r19825 / r19820;
        return r19826;
}

double f_id(double a, double b_2F2, double c) {
        double r19827 = b_2F2;
        double r19828 = -r19827;
        double r19829 = r19827 * r19827;
        double r19830 = a;
        double r19831 = c;
        double r19832 = r19830 * r19831;
        double r19833 = r19829 - r19832;
        double r19834 = sqrt(r19833);
        double r19835 = r19828 - r19834;
        double r19836 = r19835 / r19830;
        return r19836;
}


double f_of(float a, float b_2F2, float c) {
        float r19837 = b_2F2;
        float r19838 = -9.379389100315109e+138;
        bool r19839 = r19837 <= r19838;
        float r19840 = c;
        float r19841 = r19840 / r19837;
        float r19842 = -1/2;
        float r19843 = r19841 * r19842;
        float r19844 = -1.1578962494443976e-204;
        bool r19845 = r19837 <= r19844;
        float r19846 = -r19837;
        float r19847 = r19837 * r19837;
        float r19848 = a;
        float r19849 = r19848 * r19840;
        float r19850 = r19847 - r19849;
        float r19851 = sqrt(r19850);
        float r19852 = r19846 + r19851;
        float r19853 = r19840 / r19852;
        float r19854 = cbrt(r19853);
        float r19855 = r19854 * r19854;
        float r19856 = r19855 * r19854;
        float r19857 = 2.668929577274876e+121;
        bool r19858 = r19837 <= r19857;
        float r19859 = 1;
        float r19860 = r19846 - r19851;
        float r19861 = r19848 / r19860;
        float r19862 = r19859 / r19861;
        float r19863 = -2;
        float r19864 = r19837 / r19848;
        float r19865 = r19863 * r19864;
        float r19866 = r19858 ? r19862 : r19865;
        float r19867 = r19845 ? r19856 : r19866;
        float r19868 = r19839 ? r19843 : r19867;
        return r19868;
}

double f_od(double a, double b_2F2, double c) {
        double r19869 = b_2F2;
        double r19870 = -9.379389100315109e+138;
        bool r19871 = r19869 <= r19870;
        double r19872 = c;
        double r19873 = r19872 / r19869;
        double r19874 = -1/2;
        double r19875 = r19873 * r19874;
        double r19876 = -1.1578962494443976e-204;
        bool r19877 = r19869 <= r19876;
        double r19878 = -r19869;
        double r19879 = r19869 * r19869;
        double r19880 = a;
        double r19881 = r19880 * r19872;
        double r19882 = r19879 - r19881;
        double r19883 = sqrt(r19882);
        double r19884 = r19878 + r19883;
        double r19885 = r19872 / r19884;
        double r19886 = cbrt(r19885);
        double r19887 = r19886 * r19886;
        double r19888 = r19887 * r19886;
        double r19889 = 2.668929577274876e+121;
        bool r19890 = r19869 <= r19889;
        double r19891 = 1;
        double r19892 = r19878 - r19883;
        double r19893 = r19880 / r19892;
        double r19894 = r19891 / r19893;
        double r19895 = -2;
        double r19896 = r19869 / r19880;
        double r19897 = r19895 * r19896;
        double r19898 = r19890 ? r19894 : r19897;
        double r19899 = r19877 ? r19888 : r19898;
        double r19900 = r19871 ? r19875 : r19899;
        return r19900;
}

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 r19901, r19902, r19903, r19904, r19905, r19906, r19907, r19908, r19909, r19910;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r19901);
        mpfr_init(r19902);
        mpfr_init(r19903);
        mpfr_init(r19904);
        mpfr_init(r19905);
        mpfr_init(r19906);
        mpfr_init(r19907);
        mpfr_init(r19908);
        mpfr_init(r19909);
        mpfr_init(r19910);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r19901, b_2F2, MPFR_RNDN);
        mpfr_neg(r19902, r19901, MPFR_RNDN);
        mpfr_mul(r19903, r19901, r19901, MPFR_RNDN);
        mpfr_set_d(r19904, a, MPFR_RNDN);
        mpfr_set_d(r19905, c, MPFR_RNDN);
        mpfr_mul(r19906, r19904, r19905, MPFR_RNDN);
        mpfr_sub(r19907, r19903, r19906, MPFR_RNDN);
        mpfr_sqrt(r19908, r19907, MPFR_RNDN);
        mpfr_sub(r19909, r19902, r19908, MPFR_RNDN);
        mpfr_div(r19910, r19909, r19904, MPFR_RNDN);
        return mpfr_get_d(r19910, MPFR_RNDN);
}

static mpfr_t r19911, r19912, r19913, r19914, r19915, r19916, r19917, r19918, r19919, r19920, r19921, r19922, r19923, r19924, r19925, r19926, r19927, r19928, r19929, r19930, r19931, r19932, r19933, r19934, r19935, r19936, r19937, r19938, r19939, r19940, r19941, r19942;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r19911);
        mpfr_init_set_str(r19912, "-9.379389100315109e+138", 10, MPFR_RNDN);
        mpfr_init(r19913);
        mpfr_init(r19914);
        mpfr_init(r19915);
        mpfr_init_set_str(r19916, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19917);
        mpfr_init_set_str(r19918, "-1.1578962494443976e-204", 10, MPFR_RNDN);
        mpfr_init(r19919);
        mpfr_init(r19920);
        mpfr_init(r19921);
        mpfr_init(r19922);
        mpfr_init(r19923);
        mpfr_init(r19924);
        mpfr_init(r19925);
        mpfr_init(r19926);
        mpfr_init(r19927);
        mpfr_init(r19928);
        mpfr_init(r19929);
        mpfr_init(r19930);
        mpfr_init_set_str(r19931, "2.668929577274876e+121", 10, MPFR_RNDN);
        mpfr_init(r19932);
        mpfr_init_set_str(r19933, "1", 10, MPFR_RNDN);
        mpfr_init(r19934);
        mpfr_init(r19935);
        mpfr_init(r19936);
        mpfr_init_set_str(r19937, "-2", 10, MPFR_RNDN);
        mpfr_init(r19938);
        mpfr_init(r19939);
        mpfr_init(r19940);
        mpfr_init(r19941);
        mpfr_init(r19942);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r19911, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19913, mpfr_cmp(r19911, r19912) <= 0, MPFR_RNDN);
        mpfr_set_d(r19914, c, MPFR_RNDN);
        mpfr_div(r19915, r19914, r19911, MPFR_RNDN);
        ;
        mpfr_mul(r19917, r19915, r19916, MPFR_RNDN);
        ;
        mpfr_set_si(r19919, mpfr_cmp(r19911, r19918) <= 0, MPFR_RNDN);
        mpfr_neg(r19920, r19911, MPFR_RNDN);
        mpfr_mul(r19921, r19911, r19911, MPFR_RNDN);
        mpfr_set_d(r19922, a, MPFR_RNDN);
        mpfr_mul(r19923, r19922, r19914, MPFR_RNDN);
        mpfr_sub(r19924, r19921, r19923, MPFR_RNDN);
        mpfr_sqrt(r19925, r19924, MPFR_RNDN);
        mpfr_add(r19926, r19920, r19925, MPFR_RNDN);
        mpfr_div(r19927, r19914, r19926, MPFR_RNDN);
        mpfr_cbrt(r19928, r19927, MPFR_RNDN);
        mpfr_mul(r19929, r19928, r19928, MPFR_RNDN);
        mpfr_mul(r19930, r19929, r19928, MPFR_RNDN);
        ;
        mpfr_set_si(r19932, mpfr_cmp(r19911, r19931) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r19934, r19920, r19925, MPFR_RNDN);
        mpfr_div(r19935, r19922, r19934, MPFR_RNDN);
        mpfr_div(r19936, r19933, r19935, MPFR_RNDN);
        ;
        mpfr_div(r19938, r19911, r19922, MPFR_RNDN);
        mpfr_mul(r19939, r19937, r19938, MPFR_RNDN);
        if (mpfr_get_si(r19932, MPFR_RNDN)) { mpfr_set(r19940, r19936, MPFR_RNDN); } else { mpfr_set(r19940, r19939, MPFR_RNDN); };
        if (mpfr_get_si(r19919, MPFR_RNDN)) { mpfr_set(r19941, r19930, MPFR_RNDN); } else { mpfr_set(r19941, r19940, MPFR_RNDN); };
        if (mpfr_get_si(r19913, MPFR_RNDN)) { mpfr_set(r19942, r19917, MPFR_RNDN); } else { mpfr_set(r19942, r19941, MPFR_RNDN); };
        return mpfr_get_d(r19942, MPFR_RNDN);
}

static mpfr_t r19943, r19944, r19945, r19946, r19947, r19948, r19949, r19950, r19951, r19952, r19953, r19954, r19955, r19956, r19957, r19958, r19959, r19960, r19961, r19962, r19963, r19964, r19965, r19966, r19967, r19968, r19969, r19970, r19971, r19972, r19973, r19974;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r19943);
        mpfr_init_set_str(r19944, "-9.379389100315109e+138", 10, MPFR_RNDN);
        mpfr_init(r19945);
        mpfr_init(r19946);
        mpfr_init(r19947);
        mpfr_init_set_str(r19948, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19949);
        mpfr_init_set_str(r19950, "-1.1578962494443976e-204", 10, MPFR_RNDN);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init(r19953);
        mpfr_init(r19954);
        mpfr_init(r19955);
        mpfr_init(r19956);
        mpfr_init(r19957);
        mpfr_init(r19958);
        mpfr_init(r19959);
        mpfr_init(r19960);
        mpfr_init(r19961);
        mpfr_init(r19962);
        mpfr_init_set_str(r19963, "2.668929577274876e+121", 10, MPFR_RNDN);
        mpfr_init(r19964);
        mpfr_init_set_str(r19965, "1", 10, MPFR_RNDN);
        mpfr_init(r19966);
        mpfr_init(r19967);
        mpfr_init(r19968);
        mpfr_init_set_str(r19969, "-2", 10, MPFR_RNDN);
        mpfr_init(r19970);
        mpfr_init(r19971);
        mpfr_init(r19972);
        mpfr_init(r19973);
        mpfr_init(r19974);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19943, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19945, mpfr_cmp(r19943, r19944) <= 0, MPFR_RNDN);
        mpfr_set_d(r19946, c, MPFR_RNDN);
        mpfr_div(r19947, r19946, r19943, MPFR_RNDN);
        ;
        mpfr_mul(r19949, r19947, r19948, MPFR_RNDN);
        ;
        mpfr_set_si(r19951, mpfr_cmp(r19943, r19950) <= 0, MPFR_RNDN);
        mpfr_neg(r19952, r19943, MPFR_RNDN);
        mpfr_mul(r19953, r19943, r19943, MPFR_RNDN);
        mpfr_set_d(r19954, a, MPFR_RNDN);
        mpfr_mul(r19955, r19954, r19946, MPFR_RNDN);
        mpfr_sub(r19956, r19953, r19955, MPFR_RNDN);
        mpfr_sqrt(r19957, r19956, MPFR_RNDN);
        mpfr_add(r19958, r19952, r19957, MPFR_RNDN);
        mpfr_div(r19959, r19946, r19958, MPFR_RNDN);
        mpfr_cbrt(r19960, r19959, MPFR_RNDN);
        mpfr_mul(r19961, r19960, r19960, MPFR_RNDN);
        mpfr_mul(r19962, r19961, r19960, MPFR_RNDN);
        ;
        mpfr_set_si(r19964, mpfr_cmp(r19943, r19963) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r19966, r19952, r19957, MPFR_RNDN);
        mpfr_div(r19967, r19954, r19966, MPFR_RNDN);
        mpfr_div(r19968, r19965, r19967, MPFR_RNDN);
        ;
        mpfr_div(r19970, r19943, r19954, MPFR_RNDN);
        mpfr_mul(r19971, r19969, r19970, MPFR_RNDN);
        if (mpfr_get_si(r19964, MPFR_RNDN)) { mpfr_set(r19972, r19968, MPFR_RNDN); } else { mpfr_set(r19972, r19971, MPFR_RNDN); };
        if (mpfr_get_si(r19951, MPFR_RNDN)) { mpfr_set(r19973, r19962, MPFR_RNDN); } else { mpfr_set(r19973, r19972, MPFR_RNDN); };
        if (mpfr_get_si(r19945, MPFR_RNDN)) { mpfr_set(r19974, r19949, MPFR_RNDN); } else { mpfr_set(r19974, r19973, MPFR_RNDN); };
        return mpfr_get_d(r19974, MPFR_RNDN);
}

