#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 r39961 = b;
        float r39962 = -r39961;
        float r39963 = r39961 * r39961;
        float r39964 = 4;
        float r39965 = a;
        float r39966 = r39964 * r39965;
        float r39967 = c;
        float r39968 = r39966 * r39967;
        float r39969 = r39963 - r39968;
        float r39970 = sqrt(r39969);
        float r39971 = r39962 + r39970;
        float r39972 = 2;
        float r39973 = r39972 * r39965;
        float r39974 = r39971 / r39973;
        return r39974;
}

double f_id(double a, double b, double c) {
        double r39975 = b;
        double r39976 = -r39975;
        double r39977 = r39975 * r39975;
        double r39978 = 4;
        double r39979 = a;
        double r39980 = r39978 * r39979;
        double r39981 = c;
        double r39982 = r39980 * r39981;
        double r39983 = r39977 - r39982;
        double r39984 = sqrt(r39983);
        double r39985 = r39976 + r39984;
        double r39986 = 2;
        double r39987 = r39986 * r39979;
        double r39988 = r39985 / r39987;
        return r39988;
}


double f_of(float a, float b, float c) {
        float r39989 = b;
        float r39990 = -8.111805193496531e+152;
        bool r39991 = r39989 <= r39990;
        float r39992 = -r39989;
        float r39993 = a;
        float r39994 = r39992 / r39993;
        float r39995 = 7.580412743766101e-138;
        bool r39996 = r39989 <= r39995;
        float r39997 = r39989 * r39989;
        float r39998 = 4;
        float r39999 = r39998 * r39993;
        float r40000 = c;
        float r40001 = r39999 * r40000;
        float r40002 = r39997 - r40001;
        float r40003 = sqrt(r40002);
        float r40004 = r39992 + r40003;
        float r40005 = 2;
        float r40006 = r40005 * r39993;
        float r40007 = r40004 / r40006;
        float r40008 = r40000 / r39989;
        float r40009 = -2;
        float r40010 = r40009 / r40005;
        float r40011 = r40008 * r40010;
        float r40012 = r39996 ? r40007 : r40011;
        float r40013 = r39991 ? r39994 : r40012;
        return r40013;
}

double f_od(double a, double b, double c) {
        double r40014 = b;
        double r40015 = -8.111805193496531e+152;
        bool r40016 = r40014 <= r40015;
        double r40017 = -r40014;
        double r40018 = a;
        double r40019 = r40017 / r40018;
        double r40020 = 7.580412743766101e-138;
        bool r40021 = r40014 <= r40020;
        double r40022 = r40014 * r40014;
        double r40023 = 4;
        double r40024 = r40023 * r40018;
        double r40025 = c;
        double r40026 = r40024 * r40025;
        double r40027 = r40022 - r40026;
        double r40028 = sqrt(r40027);
        double r40029 = r40017 + r40028;
        double r40030 = 2;
        double r40031 = r40030 * r40018;
        double r40032 = r40029 / r40031;
        double r40033 = r40025 / r40014;
        double r40034 = -2;
        double r40035 = r40034 / r40030;
        double r40036 = r40033 * r40035;
        double r40037 = r40021 ? r40032 : r40036;
        double r40038 = r40016 ? r40019 : r40037;
        return r40038;
}

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 r40039, r40040, r40041, r40042, r40043, r40044, r40045, r40046, r40047, r40048, r40049, r40050, r40051, r40052;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r40039);
        mpfr_init(r40040);
        mpfr_init(r40041);
        mpfr_init_set_str(r40042, "4", 10, MPFR_RNDN);
        mpfr_init(r40043);
        mpfr_init(r40044);
        mpfr_init(r40045);
        mpfr_init(r40046);
        mpfr_init(r40047);
        mpfr_init(r40048);
        mpfr_init(r40049);
        mpfr_init_set_str(r40050, "2", 10, MPFR_RNDN);
        mpfr_init(r40051);
        mpfr_init(r40052);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r40039, b, MPFR_RNDN);
        mpfr_neg(r40040, r40039, MPFR_RNDN);
        mpfr_mul(r40041, r40039, r40039, MPFR_RNDN);
        ;
        mpfr_set_d(r40043, a, MPFR_RNDN);
        mpfr_mul(r40044, r40042, r40043, MPFR_RNDN);
        mpfr_set_d(r40045, c, MPFR_RNDN);
        mpfr_mul(r40046, r40044, r40045, MPFR_RNDN);
        mpfr_sub(r40047, r40041, r40046, MPFR_RNDN);
        mpfr_sqrt(r40048, r40047, MPFR_RNDN);
        mpfr_add(r40049, r40040, r40048, MPFR_RNDN);
        ;
        mpfr_mul(r40051, r40050, r40043, MPFR_RNDN);
        mpfr_div(r40052, r40049, r40051, MPFR_RNDN);
        return mpfr_get_d(r40052, MPFR_RNDN);
}

static mpfr_t r40053, r40054, r40055, r40056, r40057, r40058, r40059, r40060, r40061, r40062, r40063, r40064, r40065, r40066, r40067, r40068, r40069, r40070, r40071, r40072, r40073, r40074, r40075, r40076, r40077;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r40053);
        mpfr_init_set_str(r40054, "-8.111805193496531e+152", 10, MPFR_RNDN);
        mpfr_init(r40055);
        mpfr_init(r40056);
        mpfr_init(r40057);
        mpfr_init(r40058);
        mpfr_init_set_str(r40059, "7.580412743766101e-138", 10, MPFR_RNDN);
        mpfr_init(r40060);
        mpfr_init(r40061);
        mpfr_init_set_str(r40062, "4", 10, MPFR_RNDN);
        mpfr_init(r40063);
        mpfr_init(r40064);
        mpfr_init(r40065);
        mpfr_init(r40066);
        mpfr_init(r40067);
        mpfr_init(r40068);
        mpfr_init_set_str(r40069, "2", 10, MPFR_RNDN);
        mpfr_init(r40070);
        mpfr_init(r40071);
        mpfr_init(r40072);
        mpfr_init_set_str(r40073, "-2", 10, MPFR_RNDN);
        mpfr_init(r40074);
        mpfr_init(r40075);
        mpfr_init(r40076);
        mpfr_init(r40077);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r40053, b, MPFR_RNDN);
        ;
        mpfr_set_si(r40055, mpfr_cmp(r40053, r40054) <= 0, MPFR_RNDN);
        mpfr_neg(r40056, r40053, MPFR_RNDN);
        mpfr_set_d(r40057, a, MPFR_RNDN);
        mpfr_div(r40058, r40056, r40057, MPFR_RNDN);
        ;
        mpfr_set_si(r40060, mpfr_cmp(r40053, r40059) <= 0, MPFR_RNDN);
        mpfr_mul(r40061, r40053, r40053, MPFR_RNDN);
        ;
        mpfr_mul(r40063, r40062, r40057, MPFR_RNDN);
        mpfr_set_d(r40064, c, MPFR_RNDN);
        mpfr_mul(r40065, r40063, r40064, MPFR_RNDN);
        mpfr_sub(r40066, r40061, r40065, MPFR_RNDN);
        mpfr_sqrt(r40067, r40066, MPFR_RNDN);
        mpfr_add(r40068, r40056, r40067, MPFR_RNDN);
        ;
        mpfr_mul(r40070, r40069, r40057, MPFR_RNDN);
        mpfr_div(r40071, r40068, r40070, MPFR_RNDN);
        mpfr_div(r40072, r40064, r40053, MPFR_RNDN);
        ;
        mpfr_div(r40074, r40073, r40069, MPFR_RNDN);
        mpfr_mul(r40075, r40072, r40074, MPFR_RNDN);
        if (mpfr_get_si(r40060, MPFR_RNDN)) { mpfr_set(r40076, r40071, MPFR_RNDN); } else { mpfr_set(r40076, r40075, MPFR_RNDN); };
        if (mpfr_get_si(r40055, MPFR_RNDN)) { mpfr_set(r40077, r40058, MPFR_RNDN); } else { mpfr_set(r40077, r40076, MPFR_RNDN); };
        return mpfr_get_d(r40077, MPFR_RNDN);
}

static mpfr_t r40078, r40079, r40080, r40081, r40082, r40083, r40084, r40085, r40086, r40087, r40088, r40089, r40090, r40091, r40092, r40093, r40094, r40095, r40096, r40097, r40098, r40099, r40100, r40101, r40102;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r40078);
        mpfr_init_set_str(r40079, "-8.111805193496531e+152", 10, MPFR_RNDN);
        mpfr_init(r40080);
        mpfr_init(r40081);
        mpfr_init(r40082);
        mpfr_init(r40083);
        mpfr_init_set_str(r40084, "7.580412743766101e-138", 10, MPFR_RNDN);
        mpfr_init(r40085);
        mpfr_init(r40086);
        mpfr_init_set_str(r40087, "4", 10, MPFR_RNDN);
        mpfr_init(r40088);
        mpfr_init(r40089);
        mpfr_init(r40090);
        mpfr_init(r40091);
        mpfr_init(r40092);
        mpfr_init(r40093);
        mpfr_init_set_str(r40094, "2", 10, MPFR_RNDN);
        mpfr_init(r40095);
        mpfr_init(r40096);
        mpfr_init(r40097);
        mpfr_init_set_str(r40098, "-2", 10, MPFR_RNDN);
        mpfr_init(r40099);
        mpfr_init(r40100);
        mpfr_init(r40101);
        mpfr_init(r40102);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r40078, b, MPFR_RNDN);
        ;
        mpfr_set_si(r40080, mpfr_cmp(r40078, r40079) <= 0, MPFR_RNDN);
        mpfr_neg(r40081, r40078, MPFR_RNDN);
        mpfr_set_d(r40082, a, MPFR_RNDN);
        mpfr_div(r40083, r40081, r40082, MPFR_RNDN);
        ;
        mpfr_set_si(r40085, mpfr_cmp(r40078, r40084) <= 0, MPFR_RNDN);
        mpfr_mul(r40086, r40078, r40078, MPFR_RNDN);
        ;
        mpfr_mul(r40088, r40087, r40082, MPFR_RNDN);
        mpfr_set_d(r40089, c, MPFR_RNDN);
        mpfr_mul(r40090, r40088, r40089, MPFR_RNDN);
        mpfr_sub(r40091, r40086, r40090, MPFR_RNDN);
        mpfr_sqrt(r40092, r40091, MPFR_RNDN);
        mpfr_add(r40093, r40081, r40092, MPFR_RNDN);
        ;
        mpfr_mul(r40095, r40094, r40082, MPFR_RNDN);
        mpfr_div(r40096, r40093, r40095, MPFR_RNDN);
        mpfr_div(r40097, r40089, r40078, MPFR_RNDN);
        ;
        mpfr_div(r40099, r40098, r40094, MPFR_RNDN);
        mpfr_mul(r40100, r40097, r40099, MPFR_RNDN);
        if (mpfr_get_si(r40085, MPFR_RNDN)) { mpfr_set(r40101, r40096, MPFR_RNDN); } else { mpfr_set(r40101, r40100, MPFR_RNDN); };
        if (mpfr_get_si(r40080, MPFR_RNDN)) { mpfr_set(r40102, r40083, MPFR_RNDN); } else { mpfr_set(r40102, r40101, MPFR_RNDN); };
        return mpfr_get_d(r40102, MPFR_RNDN);
}

