#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 r10163 = b;
        float r10164 = -r10163;
        float r10165 = r10163 * r10163;
        float r10166 = 3;
        float r10167 = a;
        float r10168 = r10166 * r10167;
        float r10169 = c;
        float r10170 = r10168 * r10169;
        float r10171 = r10165 - r10170;
        float r10172 = sqrt(r10171);
        float r10173 = r10164 + r10172;
        float r10174 = r10173 / r10168;
        return r10174;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r10175 = b;
        double r10176 = -r10175;
        double r10177 = r10175 * r10175;
        double r10178 = 3;
        double r10179 = a;
        double r10180 = r10178 * r10179;
        double r10181 = c;
        double r10182 = r10180 * r10181;
        double r10183 = r10177 - r10182;
        double r10184 = sqrt(r10183);
        double r10185 = r10176 + r10184;
        double r10186 = r10185 / r10180;
        return r10186;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r10187 = b;
        float r10188 = -1.9758144017797662e+81;
        bool r10189 = r10187 <= r10188;
        float r10190 = -3/2;
        float r10191 = a;
        float r10192 = r10190 * r10191;
        float r10193 = r10187 / r10192;
        float r10194 = -1.1200099492796014e-308;
        bool r10195 = r10187 <= r10194;
        float r10196 = 3;
        float r10197 = -r10196;
        float r10198 = c;
        float r10199 = r10198 * r10191;
        float r10200 = r10187 * r10187;
        float r10201 = fma(r10197, r10199, r10200);
        float r10202 = sqrt(r10201);
        float r10203 = r10202 - r10187;
        float r10204 = r10203 / r10196;
        float r10205 = r10204 / r10191;
        float r10206 = 2.0644225467610084e+18;
        bool r10207 = r10187 <= r10206;
        float r10208 = r10196 / r10196;
        float r10209 = -r10187;
        float r10210 = -r10198;
        float r10211 = r10196 * r10191;
        float r10212 = fma(r10210, r10211, r10200);
        float r10213 = sqrt(r10212);
        float r10214 = r10209 - r10213;
        float r10215 = r10198 / r10214;
        float r10216 = r10208 * r10215;
        float r10217 = 3/2;
        float r10218 = r10217 * r10191;
        float r10219 = r10187 / r10198;
        float r10220 = r10218 / r10219;
        float r10221 = cbrt(r10220);
        float r10222 = r10221 * r10221;
        float r10223 = r10222 * r10221;
        float r10224 = 2;
        float r10225 = r10224 * r10187;
        float r10226 = r10223 - r10225;
        float r10227 = r10198 / r10226;
        float r10228 = r10207 ? r10216 : r10227;
        float r10229 = r10195 ? r10205 : r10228;
        float r10230 = r10189 ? r10193 : r10229;
        return r10230;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r10231 = b;
        double r10232 = -1.9758144017797662e+81;
        bool r10233 = r10231 <= r10232;
        double r10234 = -3/2;
        double r10235 = a;
        double r10236 = r10234 * r10235;
        double r10237 = r10231 / r10236;
        double r10238 = -1.1200099492796014e-308;
        bool r10239 = r10231 <= r10238;
        double r10240 = 3;
        double r10241 = -r10240;
        double r10242 = c;
        double r10243 = r10242 * r10235;
        double r10244 = r10231 * r10231;
        double r10245 = fma(r10241, r10243, r10244);
        double r10246 = sqrt(r10245);
        double r10247 = r10246 - r10231;
        double r10248 = r10247 / r10240;
        double r10249 = r10248 / r10235;
        double r10250 = 2.0644225467610084e+18;
        bool r10251 = r10231 <= r10250;
        double r10252 = r10240 / r10240;
        double r10253 = -r10231;
        double r10254 = -r10242;
        double r10255 = r10240 * r10235;
        double r10256 = fma(r10254, r10255, r10244);
        double r10257 = sqrt(r10256);
        double r10258 = r10253 - r10257;
        double r10259 = r10242 / r10258;
        double r10260 = r10252 * r10259;
        double r10261 = 3/2;
        double r10262 = r10261 * r10235;
        double r10263 = r10231 / r10242;
        double r10264 = r10262 / r10263;
        double r10265 = cbrt(r10264);
        double r10266 = r10265 * r10265;
        double r10267 = r10266 * r10265;
        double r10268 = 2;
        double r10269 = r10268 * r10231;
        double r10270 = r10267 - r10269;
        double r10271 = r10242 / r10270;
        double r10272 = r10251 ? r10260 : r10271;
        double r10273 = r10239 ? r10249 : r10272;
        double r10274 = r10233 ? r10237 : r10273;
        return r10274;
}

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 r10275, r10276, r10277, r10278, r10279, r10280, r10281, r10282, r10283, r10284, r10285, r10286;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10275);
        mpfr_init(r10276);
        mpfr_init(r10277);
        mpfr_init_set_str(r10278, "3", 10, MPFR_RNDN);
        mpfr_init(r10279);
        mpfr_init(r10280);
        mpfr_init(r10281);
        mpfr_init(r10282);
        mpfr_init(r10283);
        mpfr_init(r10284);
        mpfr_init(r10285);
        mpfr_init(r10286);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10275, b, MPFR_RNDN);
        mpfr_neg(r10276, r10275, MPFR_RNDN);
        mpfr_mul(r10277, r10275, r10275, MPFR_RNDN);
        ;
        mpfr_set_d(r10279, a, MPFR_RNDN);
        mpfr_mul(r10280, r10278, r10279, MPFR_RNDN);
        mpfr_set_d(r10281, c, MPFR_RNDN);
        mpfr_mul(r10282, r10280, r10281, MPFR_RNDN);
        mpfr_sub(r10283, r10277, r10282, MPFR_RNDN);
        mpfr_sqrt(r10284, r10283, MPFR_RNDN);
        mpfr_add(r10285, r10276, r10284, MPFR_RNDN);
        mpfr_div(r10286, r10285, r10280, MPFR_RNDN);
        return mpfr_get_d(r10286, MPFR_RNDN);
}

static mpfr_t r10287, r10288, r10289, r10290, r10291, r10292, r10293, r10294, r10295, r10296, r10297, r10298, r10299, r10300, r10301, r10302, r10303, r10304, r10305, r10306, r10307, r10308, r10309, r10310, r10311, r10312, r10313, r10314, r10315, r10316, r10317, r10318, r10319, r10320, r10321, r10322, r10323, r10324, r10325, r10326, r10327, r10328, r10329, r10330;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10287);
        mpfr_init_set_str(r10288, "-1.9758144017797662e+81", 10, MPFR_RNDN);
        mpfr_init(r10289);
        mpfr_init_set_str(r10290, "-3/2", 10, MPFR_RNDN);
        mpfr_init(r10291);
        mpfr_init(r10292);
        mpfr_init(r10293);
        mpfr_init_set_str(r10294, "-1.1200099492796014e-308", 10, MPFR_RNDN);
        mpfr_init(r10295);
        mpfr_init_set_str(r10296, "3", 10, MPFR_RNDN);
        mpfr_init(r10297);
        mpfr_init(r10298);
        mpfr_init(r10299);
        mpfr_init(r10300);
        mpfr_init(r10301);
        mpfr_init(r10302);
        mpfr_init(r10303);
        mpfr_init(r10304);
        mpfr_init(r10305);
        mpfr_init_set_str(r10306, "2.0644225467610084e+18", 10, MPFR_RNDN);
        mpfr_init(r10307);
        mpfr_init(r10308);
        mpfr_init(r10309);
        mpfr_init(r10310);
        mpfr_init(r10311);
        mpfr_init(r10312);
        mpfr_init(r10313);
        mpfr_init(r10314);
        mpfr_init(r10315);
        mpfr_init(r10316);
        mpfr_init_set_str(r10317, "3/2", 10, MPFR_RNDN);
        mpfr_init(r10318);
        mpfr_init(r10319);
        mpfr_init(r10320);
        mpfr_init(r10321);
        mpfr_init(r10322);
        mpfr_init(r10323);
        mpfr_init_set_str(r10324, "2", 10, MPFR_RNDN);
        mpfr_init(r10325);
        mpfr_init(r10326);
        mpfr_init(r10327);
        mpfr_init(r10328);
        mpfr_init(r10329);
        mpfr_init(r10330);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10287, b, MPFR_RNDN);
        ;
        mpfr_set_si(r10289, mpfr_cmp(r10287, r10288) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10291, a, MPFR_RNDN);
        mpfr_mul(r10292, r10290, r10291, MPFR_RNDN);
        mpfr_div(r10293, r10287, r10292, MPFR_RNDN);
        ;
        mpfr_set_si(r10295, mpfr_cmp(r10287, r10294) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r10297, r10296, MPFR_RNDN);
        mpfr_set_d(r10298, c, MPFR_RNDN);
        mpfr_mul(r10299, r10298, r10291, MPFR_RNDN);
        mpfr_mul(r10300, r10287, r10287, MPFR_RNDN);
        mpfr_fma(r10301, r10297, r10299, r10300, MPFR_RNDN);
        mpfr_sqrt(r10302, r10301, MPFR_RNDN);
        mpfr_sub(r10303, r10302, r10287, MPFR_RNDN);
        mpfr_div(r10304, r10303, r10296, MPFR_RNDN);
        mpfr_div(r10305, r10304, r10291, MPFR_RNDN);
        ;
        mpfr_set_si(r10307, mpfr_cmp(r10287, r10306) <= 0, MPFR_RNDN);
        mpfr_div(r10308, r10296, r10296, MPFR_RNDN);
        mpfr_neg(r10309, r10287, MPFR_RNDN);
        mpfr_neg(r10310, r10298, MPFR_RNDN);
        mpfr_mul(r10311, r10296, r10291, MPFR_RNDN);
        mpfr_fma(r10312, r10310, r10311, r10300, MPFR_RNDN);
        mpfr_sqrt(r10313, r10312, MPFR_RNDN);
        mpfr_sub(r10314, r10309, r10313, MPFR_RNDN);
        mpfr_div(r10315, r10298, r10314, MPFR_RNDN);
        mpfr_mul(r10316, r10308, r10315, MPFR_RNDN);
        ;
        mpfr_mul(r10318, r10317, r10291, MPFR_RNDN);
        mpfr_div(r10319, r10287, r10298, MPFR_RNDN);
        mpfr_div(r10320, r10318, r10319, MPFR_RNDN);
        mpfr_cbrt(r10321, r10320, MPFR_RNDN);
        mpfr_mul(r10322, r10321, r10321, MPFR_RNDN);
        mpfr_mul(r10323, r10322, r10321, MPFR_RNDN);
        ;
        mpfr_mul(r10325, r10324, r10287, MPFR_RNDN);
        mpfr_sub(r10326, r10323, r10325, MPFR_RNDN);
        mpfr_div(r10327, r10298, r10326, MPFR_RNDN);
        if (mpfr_get_si(r10307, MPFR_RNDN)) { mpfr_set(r10328, r10316, MPFR_RNDN); } else { mpfr_set(r10328, r10327, MPFR_RNDN); };
        if (mpfr_get_si(r10295, MPFR_RNDN)) { mpfr_set(r10329, r10305, MPFR_RNDN); } else { mpfr_set(r10329, r10328, MPFR_RNDN); };
        if (mpfr_get_si(r10289, MPFR_RNDN)) { mpfr_set(r10330, r10293, MPFR_RNDN); } else { mpfr_set(r10330, r10329, MPFR_RNDN); };
        return mpfr_get_d(r10330, MPFR_RNDN);
}

static mpfr_t r10331, r10332, r10333, r10334, r10335, r10336, r10337, r10338, r10339, r10340, r10341, r10342, r10343, r10344, r10345, r10346, r10347, r10348, r10349, r10350, r10351, r10352, r10353, r10354, r10355, r10356, r10357, r10358, r10359, r10360, r10361, r10362, r10363, r10364, r10365, r10366, r10367, r10368, r10369, r10370, r10371, r10372, r10373, r10374;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10331);
        mpfr_init_set_str(r10332, "-1.9758144017797662e+81", 10, MPFR_RNDN);
        mpfr_init(r10333);
        mpfr_init_set_str(r10334, "-3/2", 10, MPFR_RNDN);
        mpfr_init(r10335);
        mpfr_init(r10336);
        mpfr_init(r10337);
        mpfr_init_set_str(r10338, "-1.1200099492796014e-308", 10, MPFR_RNDN);
        mpfr_init(r10339);
        mpfr_init_set_str(r10340, "3", 10, MPFR_RNDN);
        mpfr_init(r10341);
        mpfr_init(r10342);
        mpfr_init(r10343);
        mpfr_init(r10344);
        mpfr_init(r10345);
        mpfr_init(r10346);
        mpfr_init(r10347);
        mpfr_init(r10348);
        mpfr_init(r10349);
        mpfr_init_set_str(r10350, "2.0644225467610084e+18", 10, MPFR_RNDN);
        mpfr_init(r10351);
        mpfr_init(r10352);
        mpfr_init(r10353);
        mpfr_init(r10354);
        mpfr_init(r10355);
        mpfr_init(r10356);
        mpfr_init(r10357);
        mpfr_init(r10358);
        mpfr_init(r10359);
        mpfr_init(r10360);
        mpfr_init_set_str(r10361, "3/2", 10, MPFR_RNDN);
        mpfr_init(r10362);
        mpfr_init(r10363);
        mpfr_init(r10364);
        mpfr_init(r10365);
        mpfr_init(r10366);
        mpfr_init(r10367);
        mpfr_init_set_str(r10368, "2", 10, MPFR_RNDN);
        mpfr_init(r10369);
        mpfr_init(r10370);
        mpfr_init(r10371);
        mpfr_init(r10372);
        mpfr_init(r10373);
        mpfr_init(r10374);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10331, b, MPFR_RNDN);
        ;
        mpfr_set_si(r10333, mpfr_cmp(r10331, r10332) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10335, a, MPFR_RNDN);
        mpfr_mul(r10336, r10334, r10335, MPFR_RNDN);
        mpfr_div(r10337, r10331, r10336, MPFR_RNDN);
        ;
        mpfr_set_si(r10339, mpfr_cmp(r10331, r10338) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r10341, r10340, MPFR_RNDN);
        mpfr_set_d(r10342, c, MPFR_RNDN);
        mpfr_mul(r10343, r10342, r10335, MPFR_RNDN);
        mpfr_mul(r10344, r10331, r10331, MPFR_RNDN);
        mpfr_fma(r10345, r10341, r10343, r10344, MPFR_RNDN);
        mpfr_sqrt(r10346, r10345, MPFR_RNDN);
        mpfr_sub(r10347, r10346, r10331, MPFR_RNDN);
        mpfr_div(r10348, r10347, r10340, MPFR_RNDN);
        mpfr_div(r10349, r10348, r10335, MPFR_RNDN);
        ;
        mpfr_set_si(r10351, mpfr_cmp(r10331, r10350) <= 0, MPFR_RNDN);
        mpfr_div(r10352, r10340, r10340, MPFR_RNDN);
        mpfr_neg(r10353, r10331, MPFR_RNDN);
        mpfr_neg(r10354, r10342, MPFR_RNDN);
        mpfr_mul(r10355, r10340, r10335, MPFR_RNDN);
        mpfr_fma(r10356, r10354, r10355, r10344, MPFR_RNDN);
        mpfr_sqrt(r10357, r10356, MPFR_RNDN);
        mpfr_sub(r10358, r10353, r10357, MPFR_RNDN);
        mpfr_div(r10359, r10342, r10358, MPFR_RNDN);
        mpfr_mul(r10360, r10352, r10359, MPFR_RNDN);
        ;
        mpfr_mul(r10362, r10361, r10335, MPFR_RNDN);
        mpfr_div(r10363, r10331, r10342, MPFR_RNDN);
        mpfr_div(r10364, r10362, r10363, MPFR_RNDN);
        mpfr_cbrt(r10365, r10364, MPFR_RNDN);
        mpfr_mul(r10366, r10365, r10365, MPFR_RNDN);
        mpfr_mul(r10367, r10366, r10365, MPFR_RNDN);
        ;
        mpfr_mul(r10369, r10368, r10331, MPFR_RNDN);
        mpfr_sub(r10370, r10367, r10369, MPFR_RNDN);
        mpfr_div(r10371, r10342, r10370, MPFR_RNDN);
        if (mpfr_get_si(r10351, MPFR_RNDN)) { mpfr_set(r10372, r10360, MPFR_RNDN); } else { mpfr_set(r10372, r10371, MPFR_RNDN); };
        if (mpfr_get_si(r10339, MPFR_RNDN)) { mpfr_set(r10373, r10349, MPFR_RNDN); } else { mpfr_set(r10373, r10372, MPFR_RNDN); };
        if (mpfr_get_si(r10333, MPFR_RNDN)) { mpfr_set(r10374, r10337, MPFR_RNDN); } else { mpfr_set(r10374, r10373, MPFR_RNDN); };
        return mpfr_get_d(r10374, MPFR_RNDN);
}

