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

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

double f_if(float a, float b, float c) {
        float r25931 = b;
        float r25932 = -r25931;
        float r25933 = r25931 * r25931;
        float r25934 = 4;
        float r25935 = a;
        float r25936 = c;
        float r25937 = r25935 * r25936;
        float r25938 = r25934 * r25937;
        float r25939 = r25933 - r25938;
        float r25940 = sqrt(r25939);
        float r25941 = r25932 - r25940;
        float r25942 = 2;
        float r25943 = r25942 * r25935;
        float r25944 = r25941 / r25943;
        return r25944;
}

double f_id(double a, double b, double c) {
        double r25945 = b;
        double r25946 = -r25945;
        double r25947 = r25945 * r25945;
        double r25948 = 4;
        double r25949 = a;
        double r25950 = c;
        double r25951 = r25949 * r25950;
        double r25952 = r25948 * r25951;
        double r25953 = r25947 - r25952;
        double r25954 = sqrt(r25953);
        double r25955 = r25946 - r25954;
        double r25956 = 2;
        double r25957 = r25956 * r25949;
        double r25958 = r25955 / r25957;
        return r25958;
}


double f_of(float a, float b, float c) {
        float r25959 = b;
        float r25960 = -r25959;
        float r25961 = -2.145617390069589e+129;
        bool r25962 = r25960 <= r25961;
        float r25963 = c;
        float r25964 = r25963 / r25959;
        float r25965 = a;
        float r25966 = r25959 / r25965;
        float r25967 = r25964 - r25966;
        float r25968 = 6.754515802716235e-93;
        bool r25969 = r25960 <= r25968;
        float r25970 = r25959 * r25959;
        float r25971 = 4;
        float r25972 = r25965 * r25963;
        float r25973 = r25971 * r25972;
        float r25974 = r25970 - r25973;
        float r25975 = sqrt(r25974);
        float r25976 = r25960 - r25975;
        float r25977 = 2;
        float r25978 = r25965 * r25977;
        float r25979 = r25976 / r25978;
        float r25980 = 3.096942915246962e+94;
        bool r25981 = r25960 <= r25980;
        float r25982 = r25971 * r25963;
        float r25983 = r25965 * r25982;
        float r25984 = r25970 - r25983;
        float r25985 = sqrt(r25984);
        float r25986 = r25985 - r25959;
        float r25987 = r25973 / r25986;
        float r25988 = r25987 / r25978;
        float r25989 = -r25963;
        float r25990 = r25989 / r25959;
        float r25991 = r25981 ? r25988 : r25990;
        float r25992 = r25969 ? r25979 : r25991;
        float r25993 = r25962 ? r25967 : r25992;
        return r25993;
}

double f_od(double a, double b, double c) {
        double r25994 = b;
        double r25995 = -r25994;
        double r25996 = -2.145617390069589e+129;
        bool r25997 = r25995 <= r25996;
        double r25998 = c;
        double r25999 = r25998 / r25994;
        double r26000 = a;
        double r26001 = r25994 / r26000;
        double r26002 = r25999 - r26001;
        double r26003 = 6.754515802716235e-93;
        bool r26004 = r25995 <= r26003;
        double r26005 = r25994 * r25994;
        double r26006 = 4;
        double r26007 = r26000 * r25998;
        double r26008 = r26006 * r26007;
        double r26009 = r26005 - r26008;
        double r26010 = sqrt(r26009);
        double r26011 = r25995 - r26010;
        double r26012 = 2;
        double r26013 = r26000 * r26012;
        double r26014 = r26011 / r26013;
        double r26015 = 3.096942915246962e+94;
        bool r26016 = r25995 <= r26015;
        double r26017 = r26006 * r25998;
        double r26018 = r26000 * r26017;
        double r26019 = r26005 - r26018;
        double r26020 = sqrt(r26019);
        double r26021 = r26020 - r25994;
        double r26022 = r26008 / r26021;
        double r26023 = r26022 / r26013;
        double r26024 = -r25998;
        double r26025 = r26024 / r25994;
        double r26026 = r26016 ? r26023 : r26025;
        double r26027 = r26004 ? r26014 : r26026;
        double r26028 = r25997 ? r26002 : r26027;
        return r26028;
}

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 r26029, r26030, r26031, r26032, r26033, r26034, r26035, r26036, r26037, r26038, r26039, r26040, r26041, r26042;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26029);
        mpfr_init(r26030);
        mpfr_init(r26031);
        mpfr_init_set_str(r26032, "4", 10, MPFR_RNDN);
        mpfr_init(r26033);
        mpfr_init(r26034);
        mpfr_init(r26035);
        mpfr_init(r26036);
        mpfr_init(r26037);
        mpfr_init(r26038);
        mpfr_init(r26039);
        mpfr_init_set_str(r26040, "2", 10, MPFR_RNDN);
        mpfr_init(r26041);
        mpfr_init(r26042);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r26029, b, MPFR_RNDN);
        mpfr_neg(r26030, r26029, MPFR_RNDN);
        mpfr_mul(r26031, r26029, r26029, MPFR_RNDN);
        ;
        mpfr_set_d(r26033, a, MPFR_RNDN);
        mpfr_set_d(r26034, c, MPFR_RNDN);
        mpfr_mul(r26035, r26033, r26034, MPFR_RNDN);
        mpfr_mul(r26036, r26032, r26035, MPFR_RNDN);
        mpfr_sub(r26037, r26031, r26036, MPFR_RNDN);
        mpfr_sqrt(r26038, r26037, MPFR_RNDN);
        mpfr_sub(r26039, r26030, r26038, MPFR_RNDN);
        ;
        mpfr_mul(r26041, r26040, r26033, MPFR_RNDN);
        mpfr_div(r26042, r26039, r26041, MPFR_RNDN);
        return mpfr_get_d(r26042, MPFR_RNDN);
}

static mpfr_t r26043, r26044, r26045, r26046, r26047, r26048, r26049, r26050, r26051, r26052, r26053, r26054, r26055, r26056, r26057, r26058, r26059, r26060, r26061, r26062, r26063, r26064, r26065, r26066, r26067, r26068, r26069, r26070, r26071, r26072, r26073, r26074, r26075, r26076, r26077;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26043);
        mpfr_init(r26044);
        mpfr_init_set_str(r26045, "-2.145617390069589e+129", 10, MPFR_RNDN);
        mpfr_init(r26046);
        mpfr_init(r26047);
        mpfr_init(r26048);
        mpfr_init(r26049);
        mpfr_init(r26050);
        mpfr_init(r26051);
        mpfr_init_set_str(r26052, "6.754515802716235e-93", 10, MPFR_RNDN);
        mpfr_init(r26053);
        mpfr_init(r26054);
        mpfr_init_set_str(r26055, "4", 10, MPFR_RNDN);
        mpfr_init(r26056);
        mpfr_init(r26057);
        mpfr_init(r26058);
        mpfr_init(r26059);
        mpfr_init(r26060);
        mpfr_init_set_str(r26061, "2", 10, MPFR_RNDN);
        mpfr_init(r26062);
        mpfr_init(r26063);
        mpfr_init_set_str(r26064, "3.096942915246962e+94", 10, MPFR_RNDN);
        mpfr_init(r26065);
        mpfr_init(r26066);
        mpfr_init(r26067);
        mpfr_init(r26068);
        mpfr_init(r26069);
        mpfr_init(r26070);
        mpfr_init(r26071);
        mpfr_init(r26072);
        mpfr_init(r26073);
        mpfr_init(r26074);
        mpfr_init(r26075);
        mpfr_init(r26076);
        mpfr_init(r26077);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r26043, b, MPFR_RNDN);
        mpfr_neg(r26044, r26043, MPFR_RNDN);
        ;
        mpfr_set_si(r26046, mpfr_cmp(r26044, r26045) <= 0, MPFR_RNDN);
        mpfr_set_d(r26047, c, MPFR_RNDN);
        mpfr_div(r26048, r26047, r26043, MPFR_RNDN);
        mpfr_set_d(r26049, a, MPFR_RNDN);
        mpfr_div(r26050, r26043, r26049, MPFR_RNDN);
        mpfr_sub(r26051, r26048, r26050, MPFR_RNDN);
        ;
        mpfr_set_si(r26053, mpfr_cmp(r26044, r26052) <= 0, MPFR_RNDN);
        mpfr_mul(r26054, r26043, r26043, MPFR_RNDN);
        ;
        mpfr_mul(r26056, r26049, r26047, MPFR_RNDN);
        mpfr_mul(r26057, r26055, r26056, MPFR_RNDN);
        mpfr_sub(r26058, r26054, r26057, MPFR_RNDN);
        mpfr_sqrt(r26059, r26058, MPFR_RNDN);
        mpfr_sub(r26060, r26044, r26059, MPFR_RNDN);
        ;
        mpfr_mul(r26062, r26049, r26061, MPFR_RNDN);
        mpfr_div(r26063, r26060, r26062, MPFR_RNDN);
        ;
        mpfr_set_si(r26065, mpfr_cmp(r26044, r26064) <= 0, MPFR_RNDN);
        mpfr_mul(r26066, r26055, r26047, MPFR_RNDN);
        mpfr_mul(r26067, r26049, r26066, MPFR_RNDN);
        mpfr_sub(r26068, r26054, r26067, MPFR_RNDN);
        mpfr_sqrt(r26069, r26068, MPFR_RNDN);
        mpfr_sub(r26070, r26069, r26043, MPFR_RNDN);
        mpfr_div(r26071, r26057, r26070, MPFR_RNDN);
        mpfr_div(r26072, r26071, r26062, MPFR_RNDN);
        mpfr_neg(r26073, r26047, MPFR_RNDN);
        mpfr_div(r26074, r26073, r26043, MPFR_RNDN);
        if (mpfr_get_si(r26065, MPFR_RNDN)) { mpfr_set(r26075, r26072, MPFR_RNDN); } else { mpfr_set(r26075, r26074, MPFR_RNDN); };
        if (mpfr_get_si(r26053, MPFR_RNDN)) { mpfr_set(r26076, r26063, MPFR_RNDN); } else { mpfr_set(r26076, r26075, MPFR_RNDN); };
        if (mpfr_get_si(r26046, MPFR_RNDN)) { mpfr_set(r26077, r26051, MPFR_RNDN); } else { mpfr_set(r26077, r26076, MPFR_RNDN); };
        return mpfr_get_d(r26077, MPFR_RNDN);
}

static mpfr_t r26078, r26079, r26080, r26081, r26082, r26083, r26084, r26085, r26086, r26087, r26088, r26089, r26090, r26091, r26092, r26093, r26094, r26095, r26096, r26097, r26098, r26099, r26100, r26101, r26102, r26103, r26104, r26105, r26106, r26107, r26108, r26109, r26110, r26111, r26112;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26078);
        mpfr_init(r26079);
        mpfr_init_set_str(r26080, "-2.145617390069589e+129", 10, MPFR_RNDN);
        mpfr_init(r26081);
        mpfr_init(r26082);
        mpfr_init(r26083);
        mpfr_init(r26084);
        mpfr_init(r26085);
        mpfr_init(r26086);
        mpfr_init_set_str(r26087, "6.754515802716235e-93", 10, MPFR_RNDN);
        mpfr_init(r26088);
        mpfr_init(r26089);
        mpfr_init_set_str(r26090, "4", 10, MPFR_RNDN);
        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);
        mpfr_init_set_str(r26099, "3.096942915246962e+94", 10, MPFR_RNDN);
        mpfr_init(r26100);
        mpfr_init(r26101);
        mpfr_init(r26102);
        mpfr_init(r26103);
        mpfr_init(r26104);
        mpfr_init(r26105);
        mpfr_init(r26106);
        mpfr_init(r26107);
        mpfr_init(r26108);
        mpfr_init(r26109);
        mpfr_init(r26110);
        mpfr_init(r26111);
        mpfr_init(r26112);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r26078, b, MPFR_RNDN);
        mpfr_neg(r26079, r26078, MPFR_RNDN);
        ;
        mpfr_set_si(r26081, mpfr_cmp(r26079, r26080) <= 0, MPFR_RNDN);
        mpfr_set_d(r26082, c, MPFR_RNDN);
        mpfr_div(r26083, r26082, r26078, MPFR_RNDN);
        mpfr_set_d(r26084, a, MPFR_RNDN);
        mpfr_div(r26085, r26078, r26084, MPFR_RNDN);
        mpfr_sub(r26086, r26083, r26085, MPFR_RNDN);
        ;
        mpfr_set_si(r26088, mpfr_cmp(r26079, r26087) <= 0, MPFR_RNDN);
        mpfr_mul(r26089, r26078, r26078, MPFR_RNDN);
        ;
        mpfr_mul(r26091, r26084, r26082, MPFR_RNDN);
        mpfr_mul(r26092, r26090, r26091, MPFR_RNDN);
        mpfr_sub(r26093, r26089, r26092, MPFR_RNDN);
        mpfr_sqrt(r26094, r26093, MPFR_RNDN);
        mpfr_sub(r26095, r26079, r26094, MPFR_RNDN);
        ;
        mpfr_mul(r26097, r26084, r26096, MPFR_RNDN);
        mpfr_div(r26098, r26095, r26097, MPFR_RNDN);
        ;
        mpfr_set_si(r26100, mpfr_cmp(r26079, r26099) <= 0, MPFR_RNDN);
        mpfr_mul(r26101, r26090, r26082, MPFR_RNDN);
        mpfr_mul(r26102, r26084, r26101, MPFR_RNDN);
        mpfr_sub(r26103, r26089, r26102, MPFR_RNDN);
        mpfr_sqrt(r26104, r26103, MPFR_RNDN);
        mpfr_sub(r26105, r26104, r26078, MPFR_RNDN);
        mpfr_div(r26106, r26092, r26105, MPFR_RNDN);
        mpfr_div(r26107, r26106, r26097, MPFR_RNDN);
        mpfr_neg(r26108, r26082, MPFR_RNDN);
        mpfr_div(r26109, r26108, r26078, MPFR_RNDN);
        if (mpfr_get_si(r26100, MPFR_RNDN)) { mpfr_set(r26110, r26107, MPFR_RNDN); } else { mpfr_set(r26110, r26109, MPFR_RNDN); };
        if (mpfr_get_si(r26088, MPFR_RNDN)) { mpfr_set(r26111, r26098, MPFR_RNDN); } else { mpfr_set(r26111, r26110, MPFR_RNDN); };
        if (mpfr_get_si(r26081, MPFR_RNDN)) { mpfr_set(r26112, r26086, MPFR_RNDN); } else { mpfr_set(r26112, r26111, MPFR_RNDN); };
        return mpfr_get_d(r26112, MPFR_RNDN);
}

