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

char *name = "Cubic critical";

double f_if(float a, float b, float c, float __attribute__((unused)) d) {
        float r3912082 = b;
        float r3912083 = -r3912082;
        float r3912084 = r3912082 * r3912082;
        float r3912085 = 3;
        float r3912086 = a;
        float r3912087 = r3912085 * r3912086;
        float r3912088 = c;
        float r3912089 = r3912087 * r3912088;
        float r3912090 = r3912084 - r3912089;
        float r3912091 = sqrt(r3912090);
        float r3912092 = r3912083 + r3912091;
        float r3912093 = r3912092 / r3912087;
        return r3912093;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r3912094 = b;
        double r3912095 = -r3912094;
        double r3912096 = r3912094 * r3912094;
        double r3912097 = 3;
        double r3912098 = a;
        double r3912099 = r3912097 * r3912098;
        double r3912100 = c;
        double r3912101 = r3912099 * r3912100;
        double r3912102 = r3912096 - r3912101;
        double r3912103 = sqrt(r3912102);
        double r3912104 = r3912095 + r3912103;
        double r3912105 = r3912104 / r3912099;
        return r3912105;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r3912106 = b;
        float r3912107 = -3.759852933912212e+153;
        bool r3912108 = r3912106 <= r3912107;
        float r3912109 = 3/2;
        float r3912110 = a;
        float r3912111 = r3912109 * r3912110;
        float r3912112 = c;
        float r3912113 = r3912106 / r3912112;
        float r3912114 = r3912111 / r3912113;
        float r3912115 = r3912106 + r3912106;
        float r3912116 = r3912114 - r3912115;
        float r3912117 = 3;
        float r3912118 = r3912117 * r3912110;
        float r3912119 = r3912116 / r3912118;
        float r3912120 = -2.315050446741968e-308;
        bool r3912121 = r3912106 <= r3912120;
        float r3912122 = 1;
        float r3912123 = r3912122 / r3912117;
        float r3912124 = -r3912106;
        float r3912125 = r3912106 * r3912106;
        float r3912126 = r3912118 * r3912112;
        float r3912127 = r3912125 - r3912126;
        float r3912128 = sqrt(r3912127);
        float r3912129 = r3912124 + r3912128;
        float r3912130 = r3912129 / r3912110;
        float r3912131 = r3912123 * r3912130;
        float r3912132 = 8.510116380805124e+33;
        bool r3912133 = r3912106 <= r3912132;
        float r3912134 = r3912110 * r3912112;
        float r3912135 = r3912117 * r3912134;
        float r3912136 = r3912124 - r3912128;
        float r3912137 = r3912135 / r3912136;
        float r3912138 = r3912137 / r3912118;
        float r3912139 = r3912112 / r3912106;
        float r3912140 = -3/2;
        float r3912141 = r3912140 / r3912117;
        float r3912142 = r3912139 * r3912141;
        float r3912143 = r3912133 ? r3912138 : r3912142;
        float r3912144 = r3912121 ? r3912131 : r3912143;
        float r3912145 = r3912108 ? r3912119 : r3912144;
        return r3912145;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r3912146 = b;
        double r3912147 = -3.759852933912212e+153;
        bool r3912148 = r3912146 <= r3912147;
        double r3912149 = 3/2;
        double r3912150 = a;
        double r3912151 = r3912149 * r3912150;
        double r3912152 = c;
        double r3912153 = r3912146 / r3912152;
        double r3912154 = r3912151 / r3912153;
        double r3912155 = r3912146 + r3912146;
        double r3912156 = r3912154 - r3912155;
        double r3912157 = 3;
        double r3912158 = r3912157 * r3912150;
        double r3912159 = r3912156 / r3912158;
        double r3912160 = -2.315050446741968e-308;
        bool r3912161 = r3912146 <= r3912160;
        double r3912162 = 1;
        double r3912163 = r3912162 / r3912157;
        double r3912164 = -r3912146;
        double r3912165 = r3912146 * r3912146;
        double r3912166 = r3912158 * r3912152;
        double r3912167 = r3912165 - r3912166;
        double r3912168 = sqrt(r3912167);
        double r3912169 = r3912164 + r3912168;
        double r3912170 = r3912169 / r3912150;
        double r3912171 = r3912163 * r3912170;
        double r3912172 = 8.510116380805124e+33;
        bool r3912173 = r3912146 <= r3912172;
        double r3912174 = r3912150 * r3912152;
        double r3912175 = r3912157 * r3912174;
        double r3912176 = r3912164 - r3912168;
        double r3912177 = r3912175 / r3912176;
        double r3912178 = r3912177 / r3912158;
        double r3912179 = r3912152 / r3912146;
        double r3912180 = -3/2;
        double r3912181 = r3912180 / r3912157;
        double r3912182 = r3912179 * r3912181;
        double r3912183 = r3912173 ? r3912178 : r3912182;
        double r3912184 = r3912161 ? r3912171 : r3912183;
        double r3912185 = r3912148 ? r3912159 : r3912184;
        return r3912185;
}

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 r3912186, r3912187, r3912188, r3912189, r3912190, r3912191, r3912192, r3912193, r3912194, r3912195, r3912196, r3912197;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r3912186);
        mpfr_init(r3912187);
        mpfr_init(r3912188);
        mpfr_init_set_str(r3912189, "3", 10, MPFR_RNDN);
        mpfr_init(r3912190);
        mpfr_init(r3912191);
        mpfr_init(r3912192);
        mpfr_init(r3912193);
        mpfr_init(r3912194);
        mpfr_init(r3912195);
        mpfr_init(r3912196);
        mpfr_init(r3912197);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r3912186, b, MPFR_RNDN);
        mpfr_neg(r3912187, r3912186, MPFR_RNDN);
        mpfr_mul(r3912188, r3912186, r3912186, MPFR_RNDN);
        ;
        mpfr_set_d(r3912190, a, MPFR_RNDN);
        mpfr_mul(r3912191, r3912189, r3912190, MPFR_RNDN);
        mpfr_set_d(r3912192, c, MPFR_RNDN);
        mpfr_mul(r3912193, r3912191, r3912192, MPFR_RNDN);
        mpfr_sub(r3912194, r3912188, r3912193, MPFR_RNDN);
        mpfr_sqrt(r3912195, r3912194, MPFR_RNDN);
        mpfr_add(r3912196, r3912187, r3912195, MPFR_RNDN);
        mpfr_div(r3912197, r3912196, r3912191, MPFR_RNDN);
        return mpfr_get_d(r3912197, MPFR_RNDN);
}

static mpfr_t r3912198, r3912199, r3912200, r3912201, r3912202, r3912203, r3912204, r3912205, r3912206, r3912207, r3912208, r3912209, r3912210, r3912211, r3912212, r3912213, r3912214, r3912215, r3912216, r3912217, r3912218, r3912219, r3912220, r3912221, r3912222, r3912223, r3912224, r3912225, r3912226, r3912227, r3912228, r3912229, r3912230, r3912231, r3912232, r3912233, r3912234, r3912235, r3912236, r3912237;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r3912198);
        mpfr_init_set_str(r3912199, "-3.759852933912212e+153", 10, MPFR_RNDN);
        mpfr_init(r3912200);
        mpfr_init_set_str(r3912201, "3/2", 10, MPFR_RNDN);
        mpfr_init(r3912202);
        mpfr_init(r3912203);
        mpfr_init(r3912204);
        mpfr_init(r3912205);
        mpfr_init(r3912206);
        mpfr_init(r3912207);
        mpfr_init(r3912208);
        mpfr_init_set_str(r3912209, "3", 10, MPFR_RNDN);
        mpfr_init(r3912210);
        mpfr_init(r3912211);
        mpfr_init_set_str(r3912212, "-2.315050446741968e-308", 10, MPFR_RNDN);
        mpfr_init(r3912213);
        mpfr_init_set_str(r3912214, "1", 10, MPFR_RNDN);
        mpfr_init(r3912215);
        mpfr_init(r3912216);
        mpfr_init(r3912217);
        mpfr_init(r3912218);
        mpfr_init(r3912219);
        mpfr_init(r3912220);
        mpfr_init(r3912221);
        mpfr_init(r3912222);
        mpfr_init(r3912223);
        mpfr_init_set_str(r3912224, "8.510116380805124e+33", 10, MPFR_RNDN);
        mpfr_init(r3912225);
        mpfr_init(r3912226);
        mpfr_init(r3912227);
        mpfr_init(r3912228);
        mpfr_init(r3912229);
        mpfr_init(r3912230);
        mpfr_init(r3912231);
        mpfr_init_set_str(r3912232, "-3/2", 10, MPFR_RNDN);
        mpfr_init(r3912233);
        mpfr_init(r3912234);
        mpfr_init(r3912235);
        mpfr_init(r3912236);
        mpfr_init(r3912237);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r3912198, b, MPFR_RNDN);
        ;
        mpfr_set_si(r3912200, mpfr_cmp(r3912198, r3912199) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r3912202, a, MPFR_RNDN);
        mpfr_mul(r3912203, r3912201, r3912202, MPFR_RNDN);
        mpfr_set_d(r3912204, c, MPFR_RNDN);
        mpfr_div(r3912205, r3912198, r3912204, MPFR_RNDN);
        mpfr_div(r3912206, r3912203, r3912205, MPFR_RNDN);
        mpfr_add(r3912207, r3912198, r3912198, MPFR_RNDN);
        mpfr_sub(r3912208, r3912206, r3912207, MPFR_RNDN);
        ;
        mpfr_mul(r3912210, r3912209, r3912202, MPFR_RNDN);
        mpfr_div(r3912211, r3912208, r3912210, MPFR_RNDN);
        ;
        mpfr_set_si(r3912213, mpfr_cmp(r3912198, r3912212) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r3912215, r3912214, r3912209, MPFR_RNDN);
        mpfr_neg(r3912216, r3912198, MPFR_RNDN);
        mpfr_mul(r3912217, r3912198, r3912198, MPFR_RNDN);
        mpfr_mul(r3912218, r3912210, r3912204, MPFR_RNDN);
        mpfr_sub(r3912219, r3912217, r3912218, MPFR_RNDN);
        mpfr_sqrt(r3912220, r3912219, MPFR_RNDN);
        mpfr_add(r3912221, r3912216, r3912220, MPFR_RNDN);
        mpfr_div(r3912222, r3912221, r3912202, MPFR_RNDN);
        mpfr_mul(r3912223, r3912215, r3912222, MPFR_RNDN);
        ;
        mpfr_set_si(r3912225, mpfr_cmp(r3912198, r3912224) <= 0, MPFR_RNDN);
        mpfr_mul(r3912226, r3912202, r3912204, MPFR_RNDN);
        mpfr_mul(r3912227, r3912209, r3912226, MPFR_RNDN);
        mpfr_sub(r3912228, r3912216, r3912220, MPFR_RNDN);
        mpfr_div(r3912229, r3912227, r3912228, MPFR_RNDN);
        mpfr_div(r3912230, r3912229, r3912210, MPFR_RNDN);
        mpfr_div(r3912231, r3912204, r3912198, MPFR_RNDN);
        ;
        mpfr_div(r3912233, r3912232, r3912209, MPFR_RNDN);
        mpfr_mul(r3912234, r3912231, r3912233, MPFR_RNDN);
        if (mpfr_get_si(r3912225, MPFR_RNDN)) { mpfr_set(r3912235, r3912230, MPFR_RNDN); } else { mpfr_set(r3912235, r3912234, MPFR_RNDN); };
        if (mpfr_get_si(r3912213, MPFR_RNDN)) { mpfr_set(r3912236, r3912223, MPFR_RNDN); } else { mpfr_set(r3912236, r3912235, MPFR_RNDN); };
        if (mpfr_get_si(r3912200, MPFR_RNDN)) { mpfr_set(r3912237, r3912211, MPFR_RNDN); } else { mpfr_set(r3912237, r3912236, MPFR_RNDN); };
        return mpfr_get_d(r3912237, MPFR_RNDN);
}

static mpfr_t r3912238, r3912239, r3912240, r3912241, r3912242, r3912243, r3912244, r3912245, r3912246, r3912247, r3912248, r3912249, r3912250, r3912251, r3912252, r3912253, r3912254, r3912255, r3912256, r3912257, r3912258, r3912259, r3912260, r3912261, r3912262, r3912263, r3912264, r3912265, r3912266, r3912267, r3912268, r3912269, r3912270, r3912271, r3912272, r3912273, r3912274, r3912275, r3912276, r3912277;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r3912238);
        mpfr_init_set_str(r3912239, "-3.759852933912212e+153", 10, MPFR_RNDN);
        mpfr_init(r3912240);
        mpfr_init_set_str(r3912241, "3/2", 10, MPFR_RNDN);
        mpfr_init(r3912242);
        mpfr_init(r3912243);
        mpfr_init(r3912244);
        mpfr_init(r3912245);
        mpfr_init(r3912246);
        mpfr_init(r3912247);
        mpfr_init(r3912248);
        mpfr_init_set_str(r3912249, "3", 10, MPFR_RNDN);
        mpfr_init(r3912250);
        mpfr_init(r3912251);
        mpfr_init_set_str(r3912252, "-2.315050446741968e-308", 10, MPFR_RNDN);
        mpfr_init(r3912253);
        mpfr_init_set_str(r3912254, "1", 10, MPFR_RNDN);
        mpfr_init(r3912255);
        mpfr_init(r3912256);
        mpfr_init(r3912257);
        mpfr_init(r3912258);
        mpfr_init(r3912259);
        mpfr_init(r3912260);
        mpfr_init(r3912261);
        mpfr_init(r3912262);
        mpfr_init(r3912263);
        mpfr_init_set_str(r3912264, "8.510116380805124e+33", 10, MPFR_RNDN);
        mpfr_init(r3912265);
        mpfr_init(r3912266);
        mpfr_init(r3912267);
        mpfr_init(r3912268);
        mpfr_init(r3912269);
        mpfr_init(r3912270);
        mpfr_init(r3912271);
        mpfr_init_set_str(r3912272, "-3/2", 10, MPFR_RNDN);
        mpfr_init(r3912273);
        mpfr_init(r3912274);
        mpfr_init(r3912275);
        mpfr_init(r3912276);
        mpfr_init(r3912277);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r3912238, b, MPFR_RNDN);
        ;
        mpfr_set_si(r3912240, mpfr_cmp(r3912238, r3912239) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r3912242, a, MPFR_RNDN);
        mpfr_mul(r3912243, r3912241, r3912242, MPFR_RNDN);
        mpfr_set_d(r3912244, c, MPFR_RNDN);
        mpfr_div(r3912245, r3912238, r3912244, MPFR_RNDN);
        mpfr_div(r3912246, r3912243, r3912245, MPFR_RNDN);
        mpfr_add(r3912247, r3912238, r3912238, MPFR_RNDN);
        mpfr_sub(r3912248, r3912246, r3912247, MPFR_RNDN);
        ;
        mpfr_mul(r3912250, r3912249, r3912242, MPFR_RNDN);
        mpfr_div(r3912251, r3912248, r3912250, MPFR_RNDN);
        ;
        mpfr_set_si(r3912253, mpfr_cmp(r3912238, r3912252) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r3912255, r3912254, r3912249, MPFR_RNDN);
        mpfr_neg(r3912256, r3912238, MPFR_RNDN);
        mpfr_mul(r3912257, r3912238, r3912238, MPFR_RNDN);
        mpfr_mul(r3912258, r3912250, r3912244, MPFR_RNDN);
        mpfr_sub(r3912259, r3912257, r3912258, MPFR_RNDN);
        mpfr_sqrt(r3912260, r3912259, MPFR_RNDN);
        mpfr_add(r3912261, r3912256, r3912260, MPFR_RNDN);
        mpfr_div(r3912262, r3912261, r3912242, MPFR_RNDN);
        mpfr_mul(r3912263, r3912255, r3912262, MPFR_RNDN);
        ;
        mpfr_set_si(r3912265, mpfr_cmp(r3912238, r3912264) <= 0, MPFR_RNDN);
        mpfr_mul(r3912266, r3912242, r3912244, MPFR_RNDN);
        mpfr_mul(r3912267, r3912249, r3912266, MPFR_RNDN);
        mpfr_sub(r3912268, r3912256, r3912260, MPFR_RNDN);
        mpfr_div(r3912269, r3912267, r3912268, MPFR_RNDN);
        mpfr_div(r3912270, r3912269, r3912250, MPFR_RNDN);
        mpfr_div(r3912271, r3912244, r3912238, MPFR_RNDN);
        ;
        mpfr_div(r3912273, r3912272, r3912249, MPFR_RNDN);
        mpfr_mul(r3912274, r3912271, r3912273, MPFR_RNDN);
        if (mpfr_get_si(r3912265, MPFR_RNDN)) { mpfr_set(r3912275, r3912270, MPFR_RNDN); } else { mpfr_set(r3912275, r3912274, MPFR_RNDN); };
        if (mpfr_get_si(r3912253, MPFR_RNDN)) { mpfr_set(r3912276, r3912263, MPFR_RNDN); } else { mpfr_set(r3912276, r3912275, MPFR_RNDN); };
        if (mpfr_get_si(r3912240, MPFR_RNDN)) { mpfr_set(r3912277, r3912251, MPFR_RNDN); } else { mpfr_set(r3912277, r3912276, MPFR_RNDN); };
        return mpfr_get_d(r3912277, MPFR_RNDN);
}

