#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 r8092 = b_2;
        float r8093 = -r8092;
        float r8094 = r8092 * r8092;
        float r8095 = a;
        float r8096 = c;
        float r8097 = r8095 * r8096;
        float r8098 = r8094 - r8097;
        float r8099 = sqrt(r8098);
        float r8100 = r8093 - r8099;
        float r8101 = r8100 / r8095;
        return r8101;
}

double f_id(double a, double b_2, double c) {
        double r8102 = b_2;
        double r8103 = -r8102;
        double r8104 = r8102 * r8102;
        double r8105 = a;
        double r8106 = c;
        double r8107 = r8105 * r8106;
        double r8108 = r8104 - r8107;
        double r8109 = sqrt(r8108);
        double r8110 = r8103 - r8109;
        double r8111 = r8110 / r8105;
        return r8111;
}


double f_of(float a, float b_2, float c) {
        float r8112 = b_2;
        float r8113 = -1.9043593287864955e+87;
        bool r8114 = r8112 <= r8113;
        float r8115 = c;
        float r8116 = -r8115;
        float r8117 = 1/2;
        float r8118 = r8112 / r8117;
        float r8119 = r8116 / r8118;
        float r8120 = -1.4312929690958086e-190;
        bool r8121 = r8112 <= r8120;
        float r8122 = a;
        float r8123 = r8122 * r8115;
        float r8124 = r8112 * r8112;
        float r8125 = r8124 - r8123;
        float r8126 = sqrt(r8125);
        float r8127 = r8126 - r8112;
        float r8128 = r8123 / r8127;
        float r8129 = r8128 / r8122;
        float r8130 = 2.696518439055105e+143;
        bool r8131 = r8112 <= r8130;
        float r8132 = 1;
        float r8133 = -r8112;
        float r8134 = r8133 - r8126;
        float r8135 = r8122 / r8134;
        float r8136 = r8132 / r8135;
        float r8137 = r8115 * r8117;
        float r8138 = r8137 / r8112;
        float r8139 = r8112 / r8122;
        float r8140 = 2;
        float r8141 = r8139 * r8140;
        float r8142 = r8138 - r8141;
        float r8143 = r8131 ? r8136 : r8142;
        float r8144 = r8121 ? r8129 : r8143;
        float r8145 = r8114 ? r8119 : r8144;
        return r8145;
}

double f_od(double a, double b_2, double c) {
        double r8146 = b_2;
        double r8147 = -1.9043593287864955e+87;
        bool r8148 = r8146 <= r8147;
        double r8149 = c;
        double r8150 = -r8149;
        double r8151 = 1/2;
        double r8152 = r8146 / r8151;
        double r8153 = r8150 / r8152;
        double r8154 = -1.4312929690958086e-190;
        bool r8155 = r8146 <= r8154;
        double r8156 = a;
        double r8157 = r8156 * r8149;
        double r8158 = r8146 * r8146;
        double r8159 = r8158 - r8157;
        double r8160 = sqrt(r8159);
        double r8161 = r8160 - r8146;
        double r8162 = r8157 / r8161;
        double r8163 = r8162 / r8156;
        double r8164 = 2.696518439055105e+143;
        bool r8165 = r8146 <= r8164;
        double r8166 = 1;
        double r8167 = -r8146;
        double r8168 = r8167 - r8160;
        double r8169 = r8156 / r8168;
        double r8170 = r8166 / r8169;
        double r8171 = r8149 * r8151;
        double r8172 = r8171 / r8146;
        double r8173 = r8146 / r8156;
        double r8174 = 2;
        double r8175 = r8173 * r8174;
        double r8176 = r8172 - r8175;
        double r8177 = r8165 ? r8170 : r8176;
        double r8178 = r8155 ? r8163 : r8177;
        double r8179 = r8148 ? r8153 : r8178;
        return r8179;
}

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 r8180, r8181, r8182, r8183, r8184, r8185, r8186, r8187, r8188, r8189;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8180);
        mpfr_init(r8181);
        mpfr_init(r8182);
        mpfr_init(r8183);
        mpfr_init(r8184);
        mpfr_init(r8185);
        mpfr_init(r8186);
        mpfr_init(r8187);
        mpfr_init(r8188);
        mpfr_init(r8189);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8180, b_2, MPFR_RNDN);
        mpfr_neg(r8181, r8180, MPFR_RNDN);
        mpfr_mul(r8182, r8180, r8180, MPFR_RNDN);
        mpfr_set_d(r8183, a, MPFR_RNDN);
        mpfr_set_d(r8184, c, MPFR_RNDN);
        mpfr_mul(r8185, r8183, r8184, MPFR_RNDN);
        mpfr_sub(r8186, r8182, r8185, MPFR_RNDN);
        mpfr_sqrt(r8187, r8186, MPFR_RNDN);
        mpfr_sub(r8188, r8181, r8187, MPFR_RNDN);
        mpfr_div(r8189, r8188, r8183, MPFR_RNDN);
        return mpfr_get_d(r8189, MPFR_RNDN);
}

static mpfr_t r8190, r8191, r8192, r8193, r8194, r8195, r8196, r8197, r8198, r8199, r8200, r8201, r8202, r8203, r8204, r8205, r8206, r8207, r8208, r8209, r8210, r8211, r8212, r8213, r8214, r8215, r8216, r8217, r8218, r8219, r8220, r8221, r8222, r8223;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8190);
        mpfr_init_set_str(r8191, "-1.9043593287864955e+87", 10, MPFR_RNDN);
        mpfr_init(r8192);
        mpfr_init(r8193);
        mpfr_init(r8194);
        mpfr_init_set_str(r8195, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8196);
        mpfr_init(r8197);
        mpfr_init_set_str(r8198, "-1.4312929690958086e-190", 10, MPFR_RNDN);
        mpfr_init(r8199);
        mpfr_init(r8200);
        mpfr_init(r8201);
        mpfr_init(r8202);
        mpfr_init(r8203);
        mpfr_init(r8204);
        mpfr_init(r8205);
        mpfr_init(r8206);
        mpfr_init(r8207);
        mpfr_init_set_str(r8208, "2.696518439055105e+143", 10, MPFR_RNDN);
        mpfr_init(r8209);
        mpfr_init_set_str(r8210, "1", 10, MPFR_RNDN);
        mpfr_init(r8211);
        mpfr_init(r8212);
        mpfr_init(r8213);
        mpfr_init(r8214);
        mpfr_init(r8215);
        mpfr_init(r8216);
        mpfr_init(r8217);
        mpfr_init_set_str(r8218, "2", 10, MPFR_RNDN);
        mpfr_init(r8219);
        mpfr_init(r8220);
        mpfr_init(r8221);
        mpfr_init(r8222);
        mpfr_init(r8223);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r8190, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r8192, mpfr_cmp(r8190, r8191) <= 0, MPFR_RNDN);
        mpfr_set_d(r8193, c, MPFR_RNDN);
        mpfr_neg(r8194, r8193, MPFR_RNDN);
        ;
        mpfr_div(r8196, r8190, r8195, MPFR_RNDN);
        mpfr_div(r8197, r8194, r8196, MPFR_RNDN);
        ;
        mpfr_set_si(r8199, mpfr_cmp(r8190, r8198) <= 0, MPFR_RNDN);
        mpfr_set_d(r8200, a, MPFR_RNDN);
        mpfr_mul(r8201, r8200, r8193, MPFR_RNDN);
        mpfr_mul(r8202, r8190, r8190, MPFR_RNDN);
        mpfr_sub(r8203, r8202, r8201, MPFR_RNDN);
        mpfr_sqrt(r8204, r8203, MPFR_RNDN);
        mpfr_sub(r8205, r8204, r8190, MPFR_RNDN);
        mpfr_div(r8206, r8201, r8205, MPFR_RNDN);
        mpfr_div(r8207, r8206, r8200, MPFR_RNDN);
        ;
        mpfr_set_si(r8209, mpfr_cmp(r8190, r8208) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8211, r8190, MPFR_RNDN);
        mpfr_sub(r8212, r8211, r8204, MPFR_RNDN);
        mpfr_div(r8213, r8200, r8212, MPFR_RNDN);
        mpfr_div(r8214, r8210, r8213, MPFR_RNDN);
        mpfr_mul(r8215, r8193, r8195, MPFR_RNDN);
        mpfr_div(r8216, r8215, r8190, MPFR_RNDN);
        mpfr_div(r8217, r8190, r8200, MPFR_RNDN);
        ;
        mpfr_mul(r8219, r8217, r8218, MPFR_RNDN);
        mpfr_sub(r8220, r8216, r8219, MPFR_RNDN);
        if (mpfr_get_si(r8209, MPFR_RNDN)) { mpfr_set(r8221, r8214, MPFR_RNDN); } else { mpfr_set(r8221, r8220, MPFR_RNDN); };
        if (mpfr_get_si(r8199, MPFR_RNDN)) { mpfr_set(r8222, r8207, MPFR_RNDN); } else { mpfr_set(r8222, r8221, MPFR_RNDN); };
        if (mpfr_get_si(r8192, MPFR_RNDN)) { mpfr_set(r8223, r8197, MPFR_RNDN); } else { mpfr_set(r8223, r8222, MPFR_RNDN); };
        return mpfr_get_d(r8223, MPFR_RNDN);
}

static mpfr_t r8224, r8225, r8226, r8227, r8228, r8229, r8230, r8231, r8232, r8233, r8234, r8235, r8236, r8237, r8238, r8239, r8240, r8241, r8242, r8243, r8244, r8245, r8246, r8247, r8248, r8249, r8250, r8251, r8252, r8253, r8254, r8255, r8256, r8257;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8224);
        mpfr_init_set_str(r8225, "-1.9043593287864955e+87", 10, MPFR_RNDN);
        mpfr_init(r8226);
        mpfr_init(r8227);
        mpfr_init(r8228);
        mpfr_init_set_str(r8229, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8230);
        mpfr_init(r8231);
        mpfr_init_set_str(r8232, "-1.4312929690958086e-190", 10, MPFR_RNDN);
        mpfr_init(r8233);
        mpfr_init(r8234);
        mpfr_init(r8235);
        mpfr_init(r8236);
        mpfr_init(r8237);
        mpfr_init(r8238);
        mpfr_init(r8239);
        mpfr_init(r8240);
        mpfr_init(r8241);
        mpfr_init_set_str(r8242, "2.696518439055105e+143", 10, MPFR_RNDN);
        mpfr_init(r8243);
        mpfr_init_set_str(r8244, "1", 10, MPFR_RNDN);
        mpfr_init(r8245);
        mpfr_init(r8246);
        mpfr_init(r8247);
        mpfr_init(r8248);
        mpfr_init(r8249);
        mpfr_init(r8250);
        mpfr_init(r8251);
        mpfr_init_set_str(r8252, "2", 10, MPFR_RNDN);
        mpfr_init(r8253);
        mpfr_init(r8254);
        mpfr_init(r8255);
        mpfr_init(r8256);
        mpfr_init(r8257);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r8224, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r8226, mpfr_cmp(r8224, r8225) <= 0, MPFR_RNDN);
        mpfr_set_d(r8227, c, MPFR_RNDN);
        mpfr_neg(r8228, r8227, MPFR_RNDN);
        ;
        mpfr_div(r8230, r8224, r8229, MPFR_RNDN);
        mpfr_div(r8231, r8228, r8230, MPFR_RNDN);
        ;
        mpfr_set_si(r8233, mpfr_cmp(r8224, r8232) <= 0, MPFR_RNDN);
        mpfr_set_d(r8234, a, MPFR_RNDN);
        mpfr_mul(r8235, r8234, r8227, MPFR_RNDN);
        mpfr_mul(r8236, r8224, r8224, MPFR_RNDN);
        mpfr_sub(r8237, r8236, r8235, MPFR_RNDN);
        mpfr_sqrt(r8238, r8237, MPFR_RNDN);
        mpfr_sub(r8239, r8238, r8224, MPFR_RNDN);
        mpfr_div(r8240, r8235, r8239, MPFR_RNDN);
        mpfr_div(r8241, r8240, r8234, MPFR_RNDN);
        ;
        mpfr_set_si(r8243, mpfr_cmp(r8224, r8242) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8245, r8224, MPFR_RNDN);
        mpfr_sub(r8246, r8245, r8238, MPFR_RNDN);
        mpfr_div(r8247, r8234, r8246, MPFR_RNDN);
        mpfr_div(r8248, r8244, r8247, MPFR_RNDN);
        mpfr_mul(r8249, r8227, r8229, MPFR_RNDN);
        mpfr_div(r8250, r8249, r8224, MPFR_RNDN);
        mpfr_div(r8251, r8224, r8234, MPFR_RNDN);
        ;
        mpfr_mul(r8253, r8251, r8252, MPFR_RNDN);
        mpfr_sub(r8254, r8250, r8253, MPFR_RNDN);
        if (mpfr_get_si(r8243, MPFR_RNDN)) { mpfr_set(r8255, r8248, MPFR_RNDN); } else { mpfr_set(r8255, r8254, MPFR_RNDN); };
        if (mpfr_get_si(r8233, MPFR_RNDN)) { mpfr_set(r8256, r8241, MPFR_RNDN); } else { mpfr_set(r8256, r8255, MPFR_RNDN); };
        if (mpfr_get_si(r8226, MPFR_RNDN)) { mpfr_set(r8257, r8231, MPFR_RNDN); } else { mpfr_set(r8257, r8256, MPFR_RNDN); };
        return mpfr_get_d(r8257, MPFR_RNDN);
}

