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

char *name = "quadm (p42, negative)";

double f_if(float a, float b, float c) {
        float r26009 = b;
        float r26010 = -r26009;
        float r26011 = r26009 * r26009;
        float r26012 = 4;
        float r26013 = a;
        float r26014 = c;
        float r26015 = r26013 * r26014;
        float r26016 = r26012 * r26015;
        float r26017 = r26011 - r26016;
        float r26018 = sqrt(r26017);
        float r26019 = r26010 - r26018;
        float r26020 = 2;
        float r26021 = r26020 * r26013;
        float r26022 = r26019 / r26021;
        return r26022;
}

double f_id(double a, double b, double c) {
        double r26023 = b;
        double r26024 = -r26023;
        double r26025 = r26023 * r26023;
        double r26026 = 4;
        double r26027 = a;
        double r26028 = c;
        double r26029 = r26027 * r26028;
        double r26030 = r26026 * r26029;
        double r26031 = r26025 - r26030;
        double r26032 = sqrt(r26031);
        double r26033 = r26024 - r26032;
        double r26034 = 2;
        double r26035 = r26034 * r26027;
        double r26036 = r26033 / r26035;
        return r26036;
}


double f_of(float a, float b, float c) {
        float r26037 = b;
        float r26038 = -7.00316255654111e-54;
        bool r26039 = r26037 <= r26038;
        float r26040 = c;
        float r26041 = -r26040;
        float r26042 = r26041 / r26037;
        float r26043 = 3.64096818765191e+95;
        bool r26044 = r26037 <= r26043;
        float r26045 = -r26037;
        float r26046 = 2;
        float r26047 = a;
        float r26048 = r26046 * r26047;
        float r26049 = r26045 / r26048;
        float r26050 = r26037 * r26037;
        float r26051 = 4;
        float r26052 = r26047 * r26040;
        float r26053 = r26051 * r26052;
        float r26054 = r26050 - r26053;
        float r26055 = sqrt(r26054);
        float r26056 = r26055 / r26048;
        float r26057 = r26049 - r26056;
        float r26058 = r26045 / r26047;
        float r26059 = r26044 ? r26057 : r26058;
        float r26060 = r26039 ? r26042 : r26059;
        return r26060;
}

double f_od(double a, double b, double c) {
        double r26061 = b;
        double r26062 = -7.00316255654111e-54;
        bool r26063 = r26061 <= r26062;
        double r26064 = c;
        double r26065 = -r26064;
        double r26066 = r26065 / r26061;
        double r26067 = 3.64096818765191e+95;
        bool r26068 = r26061 <= r26067;
        double r26069 = -r26061;
        double r26070 = 2;
        double r26071 = a;
        double r26072 = r26070 * r26071;
        double r26073 = r26069 / r26072;
        double r26074 = r26061 * r26061;
        double r26075 = 4;
        double r26076 = r26071 * r26064;
        double r26077 = r26075 * r26076;
        double r26078 = r26074 - r26077;
        double r26079 = sqrt(r26078);
        double r26080 = r26079 / r26072;
        double r26081 = r26073 - r26080;
        double r26082 = r26069 / r26071;
        double r26083 = r26068 ? r26081 : r26082;
        double r26084 = r26063 ? r26066 : r26083;
        return r26084;
}

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 r26085, r26086, r26087, r26088, r26089, r26090, r26091, r26092, r26093, r26094, r26095, r26096, r26097, r26098;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26085);
        mpfr_init(r26086);
        mpfr_init(r26087);
        mpfr_init_set_str(r26088, "4", 10, MPFR_RNDN);
        mpfr_init(r26089);
        mpfr_init(r26090);
        mpfr_init(r26091);
        mpfr_init(r26092);
        mpfr_init(r26093);
        mpfr_init(r26094);
        mpfr_init(r26095);
        mpfr_init_set_str(r26096, "2", 10, MPFR_RNDN);
        mpfr_init(r26097);
        mpfr_init(r26098);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r26085, b, MPFR_RNDN);
        mpfr_neg(r26086, r26085, MPFR_RNDN);
        mpfr_mul(r26087, r26085, r26085, MPFR_RNDN);
        ;
        mpfr_set_d(r26089, a, MPFR_RNDN);
        mpfr_set_d(r26090, c, MPFR_RNDN);
        mpfr_mul(r26091, r26089, r26090, MPFR_RNDN);
        mpfr_mul(r26092, r26088, r26091, MPFR_RNDN);
        mpfr_sub(r26093, r26087, r26092, MPFR_RNDN);
        mpfr_sqrt(r26094, r26093, MPFR_RNDN);
        mpfr_sub(r26095, r26086, r26094, MPFR_RNDN);
        ;
        mpfr_mul(r26097, r26096, r26089, MPFR_RNDN);
        mpfr_div(r26098, r26095, r26097, MPFR_RNDN);
        return mpfr_get_d(r26098, MPFR_RNDN);
}

static mpfr_t r26099, r26100, r26101, r26102, r26103, r26104, r26105, r26106, r26107, r26108, r26109, r26110, r26111, r26112, r26113, r26114, r26115, r26116, r26117, r26118, r26119, r26120, r26121, r26122;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26099);
        mpfr_init_set_str(r26100, "-7.00316255654111e-54", 10, MPFR_RNDN);
        mpfr_init(r26101);
        mpfr_init(r26102);
        mpfr_init(r26103);
        mpfr_init(r26104);
        mpfr_init_set_str(r26105, "3.64096818765191e+95", 10, MPFR_RNDN);
        mpfr_init(r26106);
        mpfr_init(r26107);
        mpfr_init_set_str(r26108, "2", 10, MPFR_RNDN);
        mpfr_init(r26109);
        mpfr_init(r26110);
        mpfr_init(r26111);
        mpfr_init(r26112);
        mpfr_init_set_str(r26113, "4", 10, MPFR_RNDN);
        mpfr_init(r26114);
        mpfr_init(r26115);
        mpfr_init(r26116);
        mpfr_init(r26117);
        mpfr_init(r26118);
        mpfr_init(r26119);
        mpfr_init(r26120);
        mpfr_init(r26121);
        mpfr_init(r26122);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r26099, b, MPFR_RNDN);
        ;
        mpfr_set_si(r26101, mpfr_cmp(r26099, r26100) <= 0, MPFR_RNDN);
        mpfr_set_d(r26102, c, MPFR_RNDN);
        mpfr_neg(r26103, r26102, MPFR_RNDN);
        mpfr_div(r26104, r26103, r26099, MPFR_RNDN);
        ;
        mpfr_set_si(r26106, mpfr_cmp(r26099, r26105) <= 0, MPFR_RNDN);
        mpfr_neg(r26107, r26099, MPFR_RNDN);
        ;
        mpfr_set_d(r26109, a, MPFR_RNDN);
        mpfr_mul(r26110, r26108, r26109, MPFR_RNDN);
        mpfr_div(r26111, r26107, r26110, MPFR_RNDN);
        mpfr_mul(r26112, r26099, r26099, MPFR_RNDN);
        ;
        mpfr_mul(r26114, r26109, r26102, MPFR_RNDN);
        mpfr_mul(r26115, r26113, r26114, MPFR_RNDN);
        mpfr_sub(r26116, r26112, r26115, MPFR_RNDN);
        mpfr_sqrt(r26117, r26116, MPFR_RNDN);
        mpfr_div(r26118, r26117, r26110, MPFR_RNDN);
        mpfr_sub(r26119, r26111, r26118, MPFR_RNDN);
        mpfr_div(r26120, r26107, r26109, MPFR_RNDN);
        if (mpfr_get_si(r26106, MPFR_RNDN)) { mpfr_set(r26121, r26119, MPFR_RNDN); } else { mpfr_set(r26121, r26120, MPFR_RNDN); };
        if (mpfr_get_si(r26101, MPFR_RNDN)) { mpfr_set(r26122, r26104, MPFR_RNDN); } else { mpfr_set(r26122, r26121, MPFR_RNDN); };
        return mpfr_get_d(r26122, MPFR_RNDN);
}

static mpfr_t r26123, r26124, r26125, r26126, r26127, r26128, r26129, r26130, r26131, r26132, r26133, r26134, r26135, r26136, r26137, r26138, r26139, r26140, r26141, r26142, r26143, r26144, r26145, r26146;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26123);
        mpfr_init_set_str(r26124, "-7.00316255654111e-54", 10, MPFR_RNDN);
        mpfr_init(r26125);
        mpfr_init(r26126);
        mpfr_init(r26127);
        mpfr_init(r26128);
        mpfr_init_set_str(r26129, "3.64096818765191e+95", 10, MPFR_RNDN);
        mpfr_init(r26130);
        mpfr_init(r26131);
        mpfr_init_set_str(r26132, "2", 10, MPFR_RNDN);
        mpfr_init(r26133);
        mpfr_init(r26134);
        mpfr_init(r26135);
        mpfr_init(r26136);
        mpfr_init_set_str(r26137, "4", 10, MPFR_RNDN);
        mpfr_init(r26138);
        mpfr_init(r26139);
        mpfr_init(r26140);
        mpfr_init(r26141);
        mpfr_init(r26142);
        mpfr_init(r26143);
        mpfr_init(r26144);
        mpfr_init(r26145);
        mpfr_init(r26146);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r26123, b, MPFR_RNDN);
        ;
        mpfr_set_si(r26125, mpfr_cmp(r26123, r26124) <= 0, MPFR_RNDN);
        mpfr_set_d(r26126, c, MPFR_RNDN);
        mpfr_neg(r26127, r26126, MPFR_RNDN);
        mpfr_div(r26128, r26127, r26123, MPFR_RNDN);
        ;
        mpfr_set_si(r26130, mpfr_cmp(r26123, r26129) <= 0, MPFR_RNDN);
        mpfr_neg(r26131, r26123, MPFR_RNDN);
        ;
        mpfr_set_d(r26133, a, MPFR_RNDN);
        mpfr_mul(r26134, r26132, r26133, MPFR_RNDN);
        mpfr_div(r26135, r26131, r26134, MPFR_RNDN);
        mpfr_mul(r26136, r26123, r26123, MPFR_RNDN);
        ;
        mpfr_mul(r26138, r26133, r26126, MPFR_RNDN);
        mpfr_mul(r26139, r26137, r26138, MPFR_RNDN);
        mpfr_sub(r26140, r26136, r26139, MPFR_RNDN);
        mpfr_sqrt(r26141, r26140, MPFR_RNDN);
        mpfr_div(r26142, r26141, r26134, MPFR_RNDN);
        mpfr_sub(r26143, r26135, r26142, MPFR_RNDN);
        mpfr_div(r26144, r26131, r26133, MPFR_RNDN);
        if (mpfr_get_si(r26130, MPFR_RNDN)) { mpfr_set(r26145, r26143, MPFR_RNDN); } else { mpfr_set(r26145, r26144, MPFR_RNDN); };
        if (mpfr_get_si(r26125, MPFR_RNDN)) { mpfr_set(r26146, r26128, MPFR_RNDN); } else { mpfr_set(r26146, r26145, MPFR_RNDN); };
        return mpfr_get_d(r26146, MPFR_RNDN);
}

