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

char *name = "The quadratic formula (r1)";

double f_if(float a, float b, float c) {
        float r9007 = b;
        float r9008 = -r9007;
        float r9009 = r9007 * r9007;
        float r9010 = 4.0f;
        float r9011 = a;
        float r9012 = r9010 * r9011;
        float r9013 = c;
        float r9014 = r9012 * r9013;
        float r9015 = r9009 - r9014;
        float r9016 = sqrt(r9015);
        float r9017 = r9008 + r9016;
        float r9018 = 2.0f;
        float r9019 = r9018 * r9011;
        float r9020 = r9017 / r9019;
        return r9020;
}

double f_id(double a, double b, double c) {
        double r9021 = b;
        double r9022 = -r9021;
        double r9023 = r9021 * r9021;
        double r9024 = 4.0;
        double r9025 = a;
        double r9026 = r9024 * r9025;
        double r9027 = c;
        double r9028 = r9026 * r9027;
        double r9029 = r9023 - r9028;
        double r9030 = sqrt(r9029);
        double r9031 = r9022 + r9030;
        double r9032 = 2.0;
        double r9033 = r9032 * r9025;
        double r9034 = r9031 / r9033;
        return r9034;
}


double f_of(float a, float b, float c) {
        float r9035 = b;
        float r9036 = -1.338815475246526e+154f;
        bool r9037 = r9035 <= r9036;
        float r9038 = -0.5f;
        float r9039 = a;
        float r9040 = r9035 / r9039;
        float r9041 = r9038 * r9040;
        float r9042 = 6.959587268650696e-95f;
        bool r9043 = r9035 <= r9042;
        float r9044 = 4.0f;
        float r9045 = r9039 * r9044;
        float r9046 = c;
        float r9047 = -r9046;
        float r9048 = r9035 * r9035;
        float r9049 = fma(r9045, r9047, r9048);
        float r9050 = sqrt(r9049);
        float r9051 = 2.0f;
        float r9052 = r9051 * r9039;
        float r9053 = r9050 / r9052;
        float r9054 = r9035 / r9052;
        float r9055 = r9053 - r9054;
        float r9056 = r9047 * r9045;
        float r9057 = r9050 + r9035;
        float r9058 = r9052 * r9057;
        float r9059 = r9056 / r9058;
        float r9060 = r9043 ? r9055 : r9059;
        float r9061 = r9037 ? r9041 : r9060;
        return r9061;
}

double f_od(double a, double b, double c) {
        double r9062 = b;
        double r9063 = -1.338815475246526e+154;
        bool r9064 = r9062 <= r9063;
        double r9065 = -0.5;
        double r9066 = a;
        double r9067 = r9062 / r9066;
        double r9068 = r9065 * r9067;
        double r9069 = 6.959587268650696e-95;
        bool r9070 = r9062 <= r9069;
        double r9071 = 4.0;
        double r9072 = r9066 * r9071;
        double r9073 = c;
        double r9074 = -r9073;
        double r9075 = r9062 * r9062;
        double r9076 = fma(r9072, r9074, r9075);
        double r9077 = sqrt(r9076);
        double r9078 = 2.0;
        double r9079 = r9078 * r9066;
        double r9080 = r9077 / r9079;
        double r9081 = r9062 / r9079;
        double r9082 = r9080 - r9081;
        double r9083 = r9074 * r9072;
        double r9084 = r9077 + r9062;
        double r9085 = r9079 * r9084;
        double r9086 = r9083 / r9085;
        double r9087 = r9070 ? r9082 : r9086;
        double r9088 = r9064 ? r9068 : r9087;
        return r9088;
}

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 r9089, r9090, r9091, r9092, r9093, r9094, r9095, r9096, r9097, r9098, r9099, r9100, r9101, r9102;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3152);
        mpfr_init(r9089);
        mpfr_init(r9090);
        mpfr_init(r9091);
        mpfr_init_set_str(r9092, "4", 10, MPFR_RNDN);
        mpfr_init(r9093);
        mpfr_init(r9094);
        mpfr_init(r9095);
        mpfr_init(r9096);
        mpfr_init(r9097);
        mpfr_init(r9098);
        mpfr_init(r9099);
        mpfr_init_set_str(r9100, "2", 10, MPFR_RNDN);
        mpfr_init(r9101);
        mpfr_init(r9102);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r9089, b, MPFR_RNDN);
        mpfr_neg(r9090, r9089, MPFR_RNDN);
        mpfr_mul(r9091, r9089, r9089, MPFR_RNDN);
        ;
        mpfr_set_d(r9093, a, MPFR_RNDN);
        mpfr_mul(r9094, r9092, r9093, MPFR_RNDN);
        mpfr_set_d(r9095, c, MPFR_RNDN);
        mpfr_mul(r9096, r9094, r9095, MPFR_RNDN);
        mpfr_sub(r9097, r9091, r9096, MPFR_RNDN);
        mpfr_sqrt(r9098, r9097, MPFR_RNDN);
        mpfr_add(r9099, r9090, r9098, MPFR_RNDN);
        ;
        mpfr_mul(r9101, r9100, r9093, MPFR_RNDN);
        mpfr_div(r9102, r9099, r9101, MPFR_RNDN);
        return mpfr_get_d(r9102, MPFR_RNDN);
}

static mpfr_t r9103, r9104, r9105, r9106, r9107, r9108, r9109, r9110, r9111, r9112, r9113, r9114, r9115, r9116, r9117, r9118, r9119, r9120, r9121, r9122, r9123, r9124, r9125, r9126, r9127, r9128, r9129;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r9103);
        mpfr_init_set_str(r9104, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r9105);
        mpfr_init_set_str(r9106, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r9107);
        mpfr_init(r9108);
        mpfr_init(r9109);
        mpfr_init_set_str(r9110, "6.959587268650696e-95", 10, MPFR_RNDN);
        mpfr_init(r9111);
        mpfr_init_set_str(r9112, "4", 10, MPFR_RNDN);
        mpfr_init(r9113);
        mpfr_init(r9114);
        mpfr_init(r9115);
        mpfr_init(r9116);
        mpfr_init(r9117);
        mpfr_init(r9118);
        mpfr_init_set_str(r9119, "2", 10, MPFR_RNDN);
        mpfr_init(r9120);
        mpfr_init(r9121);
        mpfr_init(r9122);
        mpfr_init(r9123);
        mpfr_init(r9124);
        mpfr_init(r9125);
        mpfr_init(r9126);
        mpfr_init(r9127);
        mpfr_init(r9128);
        mpfr_init(r9129);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r9103, b, MPFR_RNDN);
        ;
        mpfr_set_si(r9105, mpfr_cmp(r9103, r9104) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r9107, a, MPFR_RNDN);
        mpfr_div(r9108, r9103, r9107, MPFR_RNDN);
        mpfr_mul(r9109, r9106, r9108, MPFR_RNDN);
        ;
        mpfr_set_si(r9111, mpfr_cmp(r9103, r9110) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9113, r9107, r9112, MPFR_RNDN);
        mpfr_set_d(r9114, c, MPFR_RNDN);
        mpfr_neg(r9115, r9114, MPFR_RNDN);
        mpfr_mul(r9116, r9103, r9103, MPFR_RNDN);
        mpfr_fma(r9117, r9113, r9115, r9116, MPFR_RNDN);
        mpfr_sqrt(r9118, r9117, MPFR_RNDN);
        ;
        mpfr_mul(r9120, r9119, r9107, MPFR_RNDN);
        mpfr_div(r9121, r9118, r9120, MPFR_RNDN);
        mpfr_div(r9122, r9103, r9120, MPFR_RNDN);
        mpfr_sub(r9123, r9121, r9122, MPFR_RNDN);
        mpfr_mul(r9124, r9115, r9113, MPFR_RNDN);
        mpfr_add(r9125, r9118, r9103, MPFR_RNDN);
        mpfr_mul(r9126, r9120, r9125, MPFR_RNDN);
        mpfr_div(r9127, r9124, r9126, MPFR_RNDN);
        if (mpfr_get_si(r9111, MPFR_RNDN)) { mpfr_set(r9128, r9123, MPFR_RNDN); } else { mpfr_set(r9128, r9127, MPFR_RNDN); };
        if (mpfr_get_si(r9105, MPFR_RNDN)) { mpfr_set(r9129, r9109, MPFR_RNDN); } else { mpfr_set(r9129, r9128, MPFR_RNDN); };
        return mpfr_get_d(r9129, MPFR_RNDN);
}

static mpfr_t r9130, r9131, r9132, r9133, r9134, r9135, r9136, r9137, r9138, r9139, r9140, r9141, r9142, r9143, r9144, r9145, r9146, r9147, r9148, r9149, r9150, r9151, r9152, r9153, r9154, r9155, r9156;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r9130);
        mpfr_init_set_str(r9131, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r9132);
        mpfr_init_set_str(r9133, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r9134);
        mpfr_init(r9135);
        mpfr_init(r9136);
        mpfr_init_set_str(r9137, "6.959587268650696e-95", 10, MPFR_RNDN);
        mpfr_init(r9138);
        mpfr_init_set_str(r9139, "4", 10, MPFR_RNDN);
        mpfr_init(r9140);
        mpfr_init(r9141);
        mpfr_init(r9142);
        mpfr_init(r9143);
        mpfr_init(r9144);
        mpfr_init(r9145);
        mpfr_init_set_str(r9146, "2", 10, MPFR_RNDN);
        mpfr_init(r9147);
        mpfr_init(r9148);
        mpfr_init(r9149);
        mpfr_init(r9150);
        mpfr_init(r9151);
        mpfr_init(r9152);
        mpfr_init(r9153);
        mpfr_init(r9154);
        mpfr_init(r9155);
        mpfr_init(r9156);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r9130, b, MPFR_RNDN);
        ;
        mpfr_set_si(r9132, mpfr_cmp(r9130, r9131) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r9134, a, MPFR_RNDN);
        mpfr_div(r9135, r9130, r9134, MPFR_RNDN);
        mpfr_mul(r9136, r9133, r9135, MPFR_RNDN);
        ;
        mpfr_set_si(r9138, mpfr_cmp(r9130, r9137) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9140, r9134, r9139, MPFR_RNDN);
        mpfr_set_d(r9141, c, MPFR_RNDN);
        mpfr_neg(r9142, r9141, MPFR_RNDN);
        mpfr_mul(r9143, r9130, r9130, MPFR_RNDN);
        mpfr_fma(r9144, r9140, r9142, r9143, MPFR_RNDN);
        mpfr_sqrt(r9145, r9144, MPFR_RNDN);
        ;
        mpfr_mul(r9147, r9146, r9134, MPFR_RNDN);
        mpfr_div(r9148, r9145, r9147, MPFR_RNDN);
        mpfr_div(r9149, r9130, r9147, MPFR_RNDN);
        mpfr_sub(r9150, r9148, r9149, MPFR_RNDN);
        mpfr_mul(r9151, r9142, r9140, MPFR_RNDN);
        mpfr_add(r9152, r9145, r9130, MPFR_RNDN);
        mpfr_mul(r9153, r9147, r9152, MPFR_RNDN);
        mpfr_div(r9154, r9151, r9153, MPFR_RNDN);
        if (mpfr_get_si(r9138, MPFR_RNDN)) { mpfr_set(r9155, r9150, MPFR_RNDN); } else { mpfr_set(r9155, r9154, MPFR_RNDN); };
        if (mpfr_get_si(r9132, MPFR_RNDN)) { mpfr_set(r9156, r9136, MPFR_RNDN); } else { mpfr_set(r9156, r9155, MPFR_RNDN); };
        return mpfr_get_d(r9156, MPFR_RNDN);
}

