#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 r10124 = b;
        float r10125 = -r10124;
        float r10126 = r10124 * r10124;
        float r10127 = 3;
        float r10128 = a;
        float r10129 = r10127 * r10128;
        float r10130 = c;
        float r10131 = r10129 * r10130;
        float r10132 = r10126 - r10131;
        float r10133 = sqrt(r10132);
        float r10134 = r10125 + r10133;
        float r10135 = r10134 / r10129;
        return r10135;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r10136 = b;
        double r10137 = -r10136;
        double r10138 = r10136 * r10136;
        double r10139 = 3;
        double r10140 = a;
        double r10141 = r10139 * r10140;
        double r10142 = c;
        double r10143 = r10141 * r10142;
        double r10144 = r10138 - r10143;
        double r10145 = sqrt(r10144);
        double r10146 = r10137 + r10145;
        double r10147 = r10146 / r10141;
        return r10147;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r10148 = b;
        float r10149 = -3.03904331168325e+149;
        bool r10150 = r10148 <= r10149;
        float r10151 = -2/3;
        float r10152 = a;
        float r10153 = r10148 / r10152;
        float r10154 = r10151 * r10153;
        float r10155 = 5.459258275809116e-128;
        bool r10156 = r10148 <= r10155;
        float r10157 = -r10148;
        float r10158 = r10148 * r10148;
        float r10159 = c;
        float r10160 = 3;
        float r10161 = r10160 * r10152;
        float r10162 = r10159 * r10161;
        float r10163 = r10158 - r10162;
        float r10164 = sqrt(r10163);
        float r10165 = r10157 + r10164;
        float r10166 = r10165 / r10161;
        float r10167 = 4.206205892232988e+83;
        bool r10168 = r10148 <= r10167;
        float r10169 = r10152 * r10159;
        float r10170 = -r10160;
        float r10171 = r10169 * r10170;
        float r10172 = r10160 * r10159;
        float r10173 = r10152 * r10172;
        float r10174 = r10158 - r10173;
        float r10175 = sqrt(r10174);
        float r10176 = r10175 + r10148;
        float r10177 = r10171 / r10176;
        float r10178 = r10177 / r10160;
        float r10179 = r10178 / r10152;
        float r10180 = r10157 - r10148;
        float r10181 = 3/2;
        float r10182 = r10181 * r10159;
        float r10183 = r10152 / r10148;
        float r10184 = r10182 * r10183;
        float r10185 = r10180 + r10184;
        float r10186 = r10159 / r10185;
        float r10187 = r10168 ? r10179 : r10186;
        float r10188 = r10156 ? r10166 : r10187;
        float r10189 = r10150 ? r10154 : r10188;
        return r10189;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r10190 = b;
        double r10191 = -3.03904331168325e+149;
        bool r10192 = r10190 <= r10191;
        double r10193 = -2/3;
        double r10194 = a;
        double r10195 = r10190 / r10194;
        double r10196 = r10193 * r10195;
        double r10197 = 5.459258275809116e-128;
        bool r10198 = r10190 <= r10197;
        double r10199 = -r10190;
        double r10200 = r10190 * r10190;
        double r10201 = c;
        double r10202 = 3;
        double r10203 = r10202 * r10194;
        double r10204 = r10201 * r10203;
        double r10205 = r10200 - r10204;
        double r10206 = sqrt(r10205);
        double r10207 = r10199 + r10206;
        double r10208 = r10207 / r10203;
        double r10209 = 4.206205892232988e+83;
        bool r10210 = r10190 <= r10209;
        double r10211 = r10194 * r10201;
        double r10212 = -r10202;
        double r10213 = r10211 * r10212;
        double r10214 = r10202 * r10201;
        double r10215 = r10194 * r10214;
        double r10216 = r10200 - r10215;
        double r10217 = sqrt(r10216);
        double r10218 = r10217 + r10190;
        double r10219 = r10213 / r10218;
        double r10220 = r10219 / r10202;
        double r10221 = r10220 / r10194;
        double r10222 = r10199 - r10190;
        double r10223 = 3/2;
        double r10224 = r10223 * r10201;
        double r10225 = r10194 / r10190;
        double r10226 = r10224 * r10225;
        double r10227 = r10222 + r10226;
        double r10228 = r10201 / r10227;
        double r10229 = r10210 ? r10221 : r10228;
        double r10230 = r10198 ? r10208 : r10229;
        double r10231 = r10192 ? r10196 : r10230;
        return r10231;
}

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 r10232, r10233, r10234, r10235, r10236, r10237, r10238, r10239, r10240, r10241, r10242, r10243;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10232);
        mpfr_init(r10233);
        mpfr_init(r10234);
        mpfr_init_set_str(r10235, "3", 10, MPFR_RNDN);
        mpfr_init(r10236);
        mpfr_init(r10237);
        mpfr_init(r10238);
        mpfr_init(r10239);
        mpfr_init(r10240);
        mpfr_init(r10241);
        mpfr_init(r10242);
        mpfr_init(r10243);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10232, b, MPFR_RNDN);
        mpfr_neg(r10233, r10232, MPFR_RNDN);
        mpfr_mul(r10234, r10232, r10232, MPFR_RNDN);
        ;
        mpfr_set_d(r10236, a, MPFR_RNDN);
        mpfr_mul(r10237, r10235, r10236, MPFR_RNDN);
        mpfr_set_d(r10238, c, MPFR_RNDN);
        mpfr_mul(r10239, r10237, r10238, MPFR_RNDN);
        mpfr_sub(r10240, r10234, r10239, MPFR_RNDN);
        mpfr_sqrt(r10241, r10240, MPFR_RNDN);
        mpfr_add(r10242, r10233, r10241, MPFR_RNDN);
        mpfr_div(r10243, r10242, r10237, MPFR_RNDN);
        return mpfr_get_d(r10243, MPFR_RNDN);
}

static mpfr_t r10244, r10245, r10246, r10247, r10248, r10249, r10250, r10251, r10252, r10253, r10254, r10255, r10256, r10257, r10258, r10259, r10260, r10261, r10262, r10263, r10264, r10265, r10266, r10267, r10268, r10269, r10270, r10271, r10272, r10273, r10274, r10275, r10276, r10277, r10278, r10279, r10280, r10281, r10282, r10283, r10284, r10285;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10244);
        mpfr_init_set_str(r10245, "-3.03904331168325e+149", 10, MPFR_RNDN);
        mpfr_init(r10246);
        mpfr_init_set_str(r10247, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r10248);
        mpfr_init(r10249);
        mpfr_init(r10250);
        mpfr_init_set_str(r10251, "5.459258275809116e-128", 10, MPFR_RNDN);
        mpfr_init(r10252);
        mpfr_init(r10253);
        mpfr_init(r10254);
        mpfr_init(r10255);
        mpfr_init_set_str(r10256, "3", 10, MPFR_RNDN);
        mpfr_init(r10257);
        mpfr_init(r10258);
        mpfr_init(r10259);
        mpfr_init(r10260);
        mpfr_init(r10261);
        mpfr_init(r10262);
        mpfr_init_set_str(r10263, "4.206205892232988e+83", 10, MPFR_RNDN);
        mpfr_init(r10264);
        mpfr_init(r10265);
        mpfr_init(r10266);
        mpfr_init(r10267);
        mpfr_init(r10268);
        mpfr_init(r10269);
        mpfr_init(r10270);
        mpfr_init(r10271);
        mpfr_init(r10272);
        mpfr_init(r10273);
        mpfr_init(r10274);
        mpfr_init(r10275);
        mpfr_init(r10276);
        mpfr_init_set_str(r10277, "3/2", 10, MPFR_RNDN);
        mpfr_init(r10278);
        mpfr_init(r10279);
        mpfr_init(r10280);
        mpfr_init(r10281);
        mpfr_init(r10282);
        mpfr_init(r10283);
        mpfr_init(r10284);
        mpfr_init(r10285);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10244, b, MPFR_RNDN);
        ;
        mpfr_set_si(r10246, mpfr_cmp(r10244, r10245) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10248, a, MPFR_RNDN);
        mpfr_div(r10249, r10244, r10248, MPFR_RNDN);
        mpfr_mul(r10250, r10247, r10249, MPFR_RNDN);
        ;
        mpfr_set_si(r10252, mpfr_cmp(r10244, r10251) <= 0, MPFR_RNDN);
        mpfr_neg(r10253, r10244, MPFR_RNDN);
        mpfr_mul(r10254, r10244, r10244, MPFR_RNDN);
        mpfr_set_d(r10255, c, MPFR_RNDN);
        ;
        mpfr_mul(r10257, r10256, r10248, MPFR_RNDN);
        mpfr_mul(r10258, r10255, r10257, MPFR_RNDN);
        mpfr_sub(r10259, r10254, r10258, MPFR_RNDN);
        mpfr_sqrt(r10260, r10259, MPFR_RNDN);
        mpfr_add(r10261, r10253, r10260, MPFR_RNDN);
        mpfr_div(r10262, r10261, r10257, MPFR_RNDN);
        ;
        mpfr_set_si(r10264, mpfr_cmp(r10244, r10263) <= 0, MPFR_RNDN);
        mpfr_mul(r10265, r10248, r10255, MPFR_RNDN);
        mpfr_neg(r10266, r10256, MPFR_RNDN);
        mpfr_mul(r10267, r10265, r10266, MPFR_RNDN);
        mpfr_mul(r10268, r10256, r10255, MPFR_RNDN);
        mpfr_mul(r10269, r10248, r10268, MPFR_RNDN);
        mpfr_sub(r10270, r10254, r10269, MPFR_RNDN);
        mpfr_sqrt(r10271, r10270, MPFR_RNDN);
        mpfr_add(r10272, r10271, r10244, MPFR_RNDN);
        mpfr_div(r10273, r10267, r10272, MPFR_RNDN);
        mpfr_div(r10274, r10273, r10256, MPFR_RNDN);
        mpfr_div(r10275, r10274, r10248, MPFR_RNDN);
        mpfr_sub(r10276, r10253, r10244, MPFR_RNDN);
        ;
        mpfr_mul(r10278, r10277, r10255, MPFR_RNDN);
        mpfr_div(r10279, r10248, r10244, MPFR_RNDN);
        mpfr_mul(r10280, r10278, r10279, MPFR_RNDN);
        mpfr_add(r10281, r10276, r10280, MPFR_RNDN);
        mpfr_div(r10282, r10255, r10281, MPFR_RNDN);
        if (mpfr_get_si(r10264, MPFR_RNDN)) { mpfr_set(r10283, r10275, MPFR_RNDN); } else { mpfr_set(r10283, r10282, MPFR_RNDN); };
        if (mpfr_get_si(r10252, MPFR_RNDN)) { mpfr_set(r10284, r10262, MPFR_RNDN); } else { mpfr_set(r10284, r10283, MPFR_RNDN); };
        if (mpfr_get_si(r10246, MPFR_RNDN)) { mpfr_set(r10285, r10250, MPFR_RNDN); } else { mpfr_set(r10285, r10284, MPFR_RNDN); };
        return mpfr_get_d(r10285, MPFR_RNDN);
}

static mpfr_t r10286, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10286);
        mpfr_init_set_str(r10287, "-3.03904331168325e+149", 10, MPFR_RNDN);
        mpfr_init(r10288);
        mpfr_init_set_str(r10289, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r10290);
        mpfr_init(r10291);
        mpfr_init(r10292);
        mpfr_init_set_str(r10293, "5.459258275809116e-128", 10, MPFR_RNDN);
        mpfr_init(r10294);
        mpfr_init(r10295);
        mpfr_init(r10296);
        mpfr_init(r10297);
        mpfr_init_set_str(r10298, "3", 10, MPFR_RNDN);
        mpfr_init(r10299);
        mpfr_init(r10300);
        mpfr_init(r10301);
        mpfr_init(r10302);
        mpfr_init(r10303);
        mpfr_init(r10304);
        mpfr_init_set_str(r10305, "4.206205892232988e+83", 10, MPFR_RNDN);
        mpfr_init(r10306);
        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(r10317);
        mpfr_init(r10318);
        mpfr_init_set_str(r10319, "3/2", 10, MPFR_RNDN);
        mpfr_init(r10320);
        mpfr_init(r10321);
        mpfr_init(r10322);
        mpfr_init(r10323);
        mpfr_init(r10324);
        mpfr_init(r10325);
        mpfr_init(r10326);
        mpfr_init(r10327);
}

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

