#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_2, float c) {
        float r7811 = b_2;
        float r7812 = -r7811;
        float r7813 = r7811 * r7811;
        float r7814 = a;
        float r7815 = c;
        float r7816 = r7814 * r7815;
        float r7817 = r7813 - r7816;
        float r7818 = sqrt(r7817);
        float r7819 = r7812 - r7818;
        float r7820 = r7819 / r7814;
        return r7820;
}

double f_id(double a, double b_2, double c) {
        double r7821 = b_2;
        double r7822 = -r7821;
        double r7823 = r7821 * r7821;
        double r7824 = a;
        double r7825 = c;
        double r7826 = r7824 * r7825;
        double r7827 = r7823 - r7826;
        double r7828 = sqrt(r7827);
        double r7829 = r7822 - r7828;
        double r7830 = r7829 / r7824;
        return r7830;
}


double f_of(float a, float b_2, float c) {
        float r7831 = b_2;
        float r7832 = -1.3160410293825972e+74f;
        bool r7833 = r7831 <= r7832;
        float r7834 = -0.5f;
        float r7835 = c;
        float r7836 = r7835 / r7831;
        float r7837 = r7834 * r7836;
        float r7838 = -3.2039474619967217e-267f;
        bool r7839 = r7831 <= r7838;
        float r7840 = r7831 * r7831;
        float r7841 = a;
        float r7842 = r7841 * r7835;
        float r7843 = r7840 - r7842;
        float r7844 = sqrt(r7843);
        float r7845 = r7844 - r7831;
        float r7846 = sqrt(r7845);
        float r7847 = r7835 / r7846;
        float r7848 = 1.0f;
        float r7849 = r7848 / r7846;
        float r7850 = r7847 * r7849;
        float r7851 = 2.104016246956564e+85f;
        bool r7852 = r7831 <= r7851;
        float r7853 = r7848 / r7841;
        float r7854 = -r7831;
        float r7855 = r7854 - r7844;
        float r7856 = r7853 * r7855;
        float r7857 = r7831 / r7841;
        float r7858 = -2.0f;
        float r7859 = r7857 * r7858;
        float r7860 = r7852 ? r7856 : r7859;
        float r7861 = r7839 ? r7850 : r7860;
        float r7862 = r7833 ? r7837 : r7861;
        return r7862;
}

double f_od(double a, double b_2, double c) {
        double r7863 = b_2;
        double r7864 = -1.3160410293825972e+74;
        bool r7865 = r7863 <= r7864;
        double r7866 = -0.5;
        double r7867 = c;
        double r7868 = r7867 / r7863;
        double r7869 = r7866 * r7868;
        double r7870 = -3.2039474619967217e-267;
        bool r7871 = r7863 <= r7870;
        double r7872 = r7863 * r7863;
        double r7873 = a;
        double r7874 = r7873 * r7867;
        double r7875 = r7872 - r7874;
        double r7876 = sqrt(r7875);
        double r7877 = r7876 - r7863;
        double r7878 = sqrt(r7877);
        double r7879 = r7867 / r7878;
        double r7880 = 1.0;
        double r7881 = r7880 / r7878;
        double r7882 = r7879 * r7881;
        double r7883 = 2.104016246956564e+85;
        bool r7884 = r7863 <= r7883;
        double r7885 = r7880 / r7873;
        double r7886 = -r7863;
        double r7887 = r7886 - r7876;
        double r7888 = r7885 * r7887;
        double r7889 = r7863 / r7873;
        double r7890 = -2.0;
        double r7891 = r7889 * r7890;
        double r7892 = r7884 ? r7888 : r7891;
        double r7893 = r7871 ? r7882 : r7892;
        double r7894 = r7865 ? r7869 : r7893;
        return r7894;
}

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 r7895, r7896, r7897, r7898, r7899, r7900, r7901, r7902, r7903, r7904;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7895);
        mpfr_init(r7896);
        mpfr_init(r7897);
        mpfr_init(r7898);
        mpfr_init(r7899);
        mpfr_init(r7900);
        mpfr_init(r7901);
        mpfr_init(r7902);
        mpfr_init(r7903);
        mpfr_init(r7904);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r7895, b_2, MPFR_RNDN);
        mpfr_neg(r7896, r7895, MPFR_RNDN);
        mpfr_mul(r7897, r7895, r7895, MPFR_RNDN);
        mpfr_set_d(r7898, a, MPFR_RNDN);
        mpfr_set_d(r7899, c, MPFR_RNDN);
        mpfr_mul(r7900, r7898, r7899, MPFR_RNDN);
        mpfr_sub(r7901, r7897, r7900, MPFR_RNDN);
        mpfr_sqrt(r7902, r7901, MPFR_RNDN);
        mpfr_sub(r7903, r7896, r7902, MPFR_RNDN);
        mpfr_div(r7904, r7903, r7898, MPFR_RNDN);
        return mpfr_get_d(r7904, MPFR_RNDN);
}

static mpfr_t r7905, r7906, r7907, r7908, r7909, r7910, r7911, r7912, r7913, r7914, r7915, r7916, r7917, r7918, r7919, r7920, r7921, r7922, r7923, r7924, r7925, r7926, r7927, r7928, r7929, r7930, r7931, r7932, r7933, r7934, r7935, r7936;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7905);
        mpfr_init_set_str(r7906, "-1.3160410293825972e+74", 10, MPFR_RNDN);
        mpfr_init(r7907);
        mpfr_init_set_str(r7908, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r7909);
        mpfr_init(r7910);
        mpfr_init(r7911);
        mpfr_init_set_str(r7912, "-3.2039474619967217e-267", 10, MPFR_RNDN);
        mpfr_init(r7913);
        mpfr_init(r7914);
        mpfr_init(r7915);
        mpfr_init(r7916);
        mpfr_init(r7917);
        mpfr_init(r7918);
        mpfr_init(r7919);
        mpfr_init(r7920);
        mpfr_init(r7921);
        mpfr_init_set_str(r7922, "1", 10, MPFR_RNDN);
        mpfr_init(r7923);
        mpfr_init(r7924);
        mpfr_init_set_str(r7925, "2.104016246956564e+85", 10, MPFR_RNDN);
        mpfr_init(r7926);
        mpfr_init(r7927);
        mpfr_init(r7928);
        mpfr_init(r7929);
        mpfr_init(r7930);
        mpfr_init(r7931);
        mpfr_init_set_str(r7932, "-2", 10, MPFR_RNDN);
        mpfr_init(r7933);
        mpfr_init(r7934);
        mpfr_init(r7935);
        mpfr_init(r7936);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r7905, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r7907, mpfr_cmp(r7905, r7906) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r7909, c, MPFR_RNDN);
        mpfr_div(r7910, r7909, r7905, MPFR_RNDN);
        mpfr_mul(r7911, r7908, r7910, MPFR_RNDN);
        ;
        mpfr_set_si(r7913, mpfr_cmp(r7905, r7912) <= 0, MPFR_RNDN);
        mpfr_mul(r7914, r7905, r7905, MPFR_RNDN);
        mpfr_set_d(r7915, a, MPFR_RNDN);
        mpfr_mul(r7916, r7915, r7909, MPFR_RNDN);
        mpfr_sub(r7917, r7914, r7916, MPFR_RNDN);
        mpfr_sqrt(r7918, r7917, MPFR_RNDN);
        mpfr_sub(r7919, r7918, r7905, MPFR_RNDN);
        mpfr_sqrt(r7920, r7919, MPFR_RNDN);
        mpfr_div(r7921, r7909, r7920, MPFR_RNDN);
        ;
        mpfr_div(r7923, r7922, r7920, MPFR_RNDN);
        mpfr_mul(r7924, r7921, r7923, MPFR_RNDN);
        ;
        mpfr_set_si(r7926, mpfr_cmp(r7905, r7925) <= 0, MPFR_RNDN);
        mpfr_div(r7927, r7922, r7915, MPFR_RNDN);
        mpfr_neg(r7928, r7905, MPFR_RNDN);
        mpfr_sub(r7929, r7928, r7918, MPFR_RNDN);
        mpfr_mul(r7930, r7927, r7929, MPFR_RNDN);
        mpfr_div(r7931, r7905, r7915, MPFR_RNDN);
        ;
        mpfr_mul(r7933, r7931, r7932, MPFR_RNDN);
        if (mpfr_get_si(r7926, MPFR_RNDN)) { mpfr_set(r7934, r7930, MPFR_RNDN); } else { mpfr_set(r7934, r7933, MPFR_RNDN); };
        if (mpfr_get_si(r7913, MPFR_RNDN)) { mpfr_set(r7935, r7924, MPFR_RNDN); } else { mpfr_set(r7935, r7934, MPFR_RNDN); };
        if (mpfr_get_si(r7907, MPFR_RNDN)) { mpfr_set(r7936, r7911, MPFR_RNDN); } else { mpfr_set(r7936, r7935, MPFR_RNDN); };
        return mpfr_get_d(r7936, MPFR_RNDN);
}

static mpfr_t r7937, r7938, r7939, r7940, r7941, r7942, r7943, r7944, r7945, r7946, r7947, r7948, r7949, r7950, r7951, r7952, r7953, r7954, r7955, r7956, r7957, r7958, r7959, r7960, r7961, r7962, r7963, r7964, r7965, r7966, r7967, r7968;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7937);
        mpfr_init_set_str(r7938, "-1.3160410293825972e+74", 10, MPFR_RNDN);
        mpfr_init(r7939);
        mpfr_init_set_str(r7940, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r7941);
        mpfr_init(r7942);
        mpfr_init(r7943);
        mpfr_init_set_str(r7944, "-3.2039474619967217e-267", 10, MPFR_RNDN);
        mpfr_init(r7945);
        mpfr_init(r7946);
        mpfr_init(r7947);
        mpfr_init(r7948);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init(r7953);
        mpfr_init_set_str(r7954, "1", 10, MPFR_RNDN);
        mpfr_init(r7955);
        mpfr_init(r7956);
        mpfr_init_set_str(r7957, "2.104016246956564e+85", 10, MPFR_RNDN);
        mpfr_init(r7958);
        mpfr_init(r7959);
        mpfr_init(r7960);
        mpfr_init(r7961);
        mpfr_init(r7962);
        mpfr_init(r7963);
        mpfr_init_set_str(r7964, "-2", 10, MPFR_RNDN);
        mpfr_init(r7965);
        mpfr_init(r7966);
        mpfr_init(r7967);
        mpfr_init(r7968);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r7937, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r7939, mpfr_cmp(r7937, r7938) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r7941, c, MPFR_RNDN);
        mpfr_div(r7942, r7941, r7937, MPFR_RNDN);
        mpfr_mul(r7943, r7940, r7942, MPFR_RNDN);
        ;
        mpfr_set_si(r7945, mpfr_cmp(r7937, r7944) <= 0, MPFR_RNDN);
        mpfr_mul(r7946, r7937, r7937, MPFR_RNDN);
        mpfr_set_d(r7947, a, MPFR_RNDN);
        mpfr_mul(r7948, r7947, r7941, MPFR_RNDN);
        mpfr_sub(r7949, r7946, r7948, MPFR_RNDN);
        mpfr_sqrt(r7950, r7949, MPFR_RNDN);
        mpfr_sub(r7951, r7950, r7937, MPFR_RNDN);
        mpfr_sqrt(r7952, r7951, MPFR_RNDN);
        mpfr_div(r7953, r7941, r7952, MPFR_RNDN);
        ;
        mpfr_div(r7955, r7954, r7952, MPFR_RNDN);
        mpfr_mul(r7956, r7953, r7955, MPFR_RNDN);
        ;
        mpfr_set_si(r7958, mpfr_cmp(r7937, r7957) <= 0, MPFR_RNDN);
        mpfr_div(r7959, r7954, r7947, MPFR_RNDN);
        mpfr_neg(r7960, r7937, MPFR_RNDN);
        mpfr_sub(r7961, r7960, r7950, MPFR_RNDN);
        mpfr_mul(r7962, r7959, r7961, MPFR_RNDN);
        mpfr_div(r7963, r7937, r7947, MPFR_RNDN);
        ;
        mpfr_mul(r7965, r7963, r7964, MPFR_RNDN);
        if (mpfr_get_si(r7958, MPFR_RNDN)) { mpfr_set(r7966, r7962, MPFR_RNDN); } else { mpfr_set(r7966, r7965, MPFR_RNDN); };
        if (mpfr_get_si(r7945, MPFR_RNDN)) { mpfr_set(r7967, r7956, MPFR_RNDN); } else { mpfr_set(r7967, r7966, MPFR_RNDN); };
        if (mpfr_get_si(r7939, MPFR_RNDN)) { mpfr_set(r7968, r7943, MPFR_RNDN); } else { mpfr_set(r7968, r7967, MPFR_RNDN); };
        return mpfr_get_d(r7968, MPFR_RNDN);
}

