#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 r10053 = b;
        float r10054 = -r10053;
        float r10055 = r10053 * r10053;
        float r10056 = 3;
        float r10057 = a;
        float r10058 = r10056 * r10057;
        float r10059 = c;
        float r10060 = r10058 * r10059;
        float r10061 = r10055 - r10060;
        float r10062 = sqrt(r10061);
        float r10063 = r10054 + r10062;
        float r10064 = r10063 / r10058;
        return r10064;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r10065 = b;
        double r10066 = -r10065;
        double r10067 = r10065 * r10065;
        double r10068 = 3;
        double r10069 = a;
        double r10070 = r10068 * r10069;
        double r10071 = c;
        double r10072 = r10070 * r10071;
        double r10073 = r10067 - r10072;
        double r10074 = sqrt(r10073);
        double r10075 = r10066 + r10074;
        double r10076 = r10075 / r10070;
        return r10076;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r10077 = b;
        float r10078 = -4.629761057018838e+149;
        bool r10079 = r10077 <= r10078;
        float r10080 = -2/3;
        float r10081 = a;
        float r10082 = r10077 / r10081;
        float r10083 = r10080 * r10082;
        float r10084 = 1.163420619199811e-123;
        bool r10085 = r10077 <= r10084;
        float r10086 = 3;
        float r10087 = -r10086;
        float r10088 = c;
        float r10089 = r10088 * r10081;
        float r10090 = r10077 * r10077;
        float r10091 = fma(r10087, r10089, r10090);
        float r10092 = sqrt(r10091);
        float r10093 = r10092 - r10077;
        float r10094 = r10093 / r10086;
        float r10095 = r10094 / r10081;
        float r10096 = 1.8587181320047136e+87;
        bool r10097 = r10077 <= r10096;
        float r10098 = r10081 * r10086;
        float r10099 = -r10088;
        float r10100 = r10098 * r10099;
        float r10101 = r10100 / r10098;
        float r10102 = r10092 + r10077;
        float r10103 = r10101 / r10102;
        float r10104 = r10088 / r10077;
        float r10105 = -2;
        float r10106 = r10104 / r10105;
        float r10107 = r10097 ? r10103 : r10106;
        float r10108 = r10085 ? r10095 : r10107;
        float r10109 = r10079 ? r10083 : r10108;
        return r10109;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r10110 = b;
        double r10111 = -4.629761057018838e+149;
        bool r10112 = r10110 <= r10111;
        double r10113 = -2/3;
        double r10114 = a;
        double r10115 = r10110 / r10114;
        double r10116 = r10113 * r10115;
        double r10117 = 1.163420619199811e-123;
        bool r10118 = r10110 <= r10117;
        double r10119 = 3;
        double r10120 = -r10119;
        double r10121 = c;
        double r10122 = r10121 * r10114;
        double r10123 = r10110 * r10110;
        double r10124 = fma(r10120, r10122, r10123);
        double r10125 = sqrt(r10124);
        double r10126 = r10125 - r10110;
        double r10127 = r10126 / r10119;
        double r10128 = r10127 / r10114;
        double r10129 = 1.8587181320047136e+87;
        bool r10130 = r10110 <= r10129;
        double r10131 = r10114 * r10119;
        double r10132 = -r10121;
        double r10133 = r10131 * r10132;
        double r10134 = r10133 / r10131;
        double r10135 = r10125 + r10110;
        double r10136 = r10134 / r10135;
        double r10137 = r10121 / r10110;
        double r10138 = -2;
        double r10139 = r10137 / r10138;
        double r10140 = r10130 ? r10136 : r10139;
        double r10141 = r10118 ? r10128 : r10140;
        double r10142 = r10112 ? r10116 : r10141;
        return r10142;
}

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 r10143, r10144, r10145, r10146, r10147, r10148, r10149, r10150, r10151, r10152, r10153, r10154;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10143);
        mpfr_init(r10144);
        mpfr_init(r10145);
        mpfr_init_set_str(r10146, "3", 10, MPFR_RNDN);
        mpfr_init(r10147);
        mpfr_init(r10148);
        mpfr_init(r10149);
        mpfr_init(r10150);
        mpfr_init(r10151);
        mpfr_init(r10152);
        mpfr_init(r10153);
        mpfr_init(r10154);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10143, b, MPFR_RNDN);
        mpfr_neg(r10144, r10143, MPFR_RNDN);
        mpfr_mul(r10145, r10143, r10143, MPFR_RNDN);
        ;
        mpfr_set_d(r10147, a, MPFR_RNDN);
        mpfr_mul(r10148, r10146, r10147, MPFR_RNDN);
        mpfr_set_d(r10149, c, MPFR_RNDN);
        mpfr_mul(r10150, r10148, r10149, MPFR_RNDN);
        mpfr_sub(r10151, r10145, r10150, MPFR_RNDN);
        mpfr_sqrt(r10152, r10151, MPFR_RNDN);
        mpfr_add(r10153, r10144, r10152, MPFR_RNDN);
        mpfr_div(r10154, r10153, r10148, MPFR_RNDN);
        return mpfr_get_d(r10154, MPFR_RNDN);
}

static mpfr_t r10155, r10156, r10157, r10158, r10159, r10160, r10161, r10162, r10163, r10164, r10165, r10166, r10167, r10168, r10169, r10170, r10171, r10172, r10173, r10174, r10175, r10176, r10177, r10178, r10179, r10180, r10181, r10182, r10183, r10184, r10185, r10186, r10187;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10155);
        mpfr_init_set_str(r10156, "-4.629761057018838e+149", 10, MPFR_RNDN);
        mpfr_init(r10157);
        mpfr_init_set_str(r10158, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r10159);
        mpfr_init(r10160);
        mpfr_init(r10161);
        mpfr_init_set_str(r10162, "1.163420619199811e-123", 10, MPFR_RNDN);
        mpfr_init(r10163);
        mpfr_init_set_str(r10164, "3", 10, MPFR_RNDN);
        mpfr_init(r10165);
        mpfr_init(r10166);
        mpfr_init(r10167);
        mpfr_init(r10168);
        mpfr_init(r10169);
        mpfr_init(r10170);
        mpfr_init(r10171);
        mpfr_init(r10172);
        mpfr_init(r10173);
        mpfr_init_set_str(r10174, "1.8587181320047136e+87", 10, MPFR_RNDN);
        mpfr_init(r10175);
        mpfr_init(r10176);
        mpfr_init(r10177);
        mpfr_init(r10178);
        mpfr_init(r10179);
        mpfr_init(r10180);
        mpfr_init(r10181);
        mpfr_init(r10182);
        mpfr_init_set_str(r10183, "-2", 10, MPFR_RNDN);
        mpfr_init(r10184);
        mpfr_init(r10185);
        mpfr_init(r10186);
        mpfr_init(r10187);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10155, b, MPFR_RNDN);
        ;
        mpfr_set_si(r10157, mpfr_cmp(r10155, r10156) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10159, a, MPFR_RNDN);
        mpfr_div(r10160, r10155, r10159, MPFR_RNDN);
        mpfr_mul(r10161, r10158, r10160, MPFR_RNDN);
        ;
        mpfr_set_si(r10163, mpfr_cmp(r10155, r10162) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r10165, r10164, MPFR_RNDN);
        mpfr_set_d(r10166, c, MPFR_RNDN);
        mpfr_mul(r10167, r10166, r10159, MPFR_RNDN);
        mpfr_mul(r10168, r10155, r10155, MPFR_RNDN);
        mpfr_fma(r10169, r10165, r10167, r10168, MPFR_RNDN);
        mpfr_sqrt(r10170, r10169, MPFR_RNDN);
        mpfr_sub(r10171, r10170, r10155, MPFR_RNDN);
        mpfr_div(r10172, r10171, r10164, MPFR_RNDN);
        mpfr_div(r10173, r10172, r10159, MPFR_RNDN);
        ;
        mpfr_set_si(r10175, mpfr_cmp(r10155, r10174) <= 0, MPFR_RNDN);
        mpfr_mul(r10176, r10159, r10164, MPFR_RNDN);
        mpfr_neg(r10177, r10166, MPFR_RNDN);
        mpfr_mul(r10178, r10176, r10177, MPFR_RNDN);
        mpfr_div(r10179, r10178, r10176, MPFR_RNDN);
        mpfr_add(r10180, r10170, r10155, MPFR_RNDN);
        mpfr_div(r10181, r10179, r10180, MPFR_RNDN);
        mpfr_div(r10182, r10166, r10155, MPFR_RNDN);
        ;
        mpfr_div(r10184, r10182, r10183, MPFR_RNDN);
        if (mpfr_get_si(r10175, MPFR_RNDN)) { mpfr_set(r10185, r10181, MPFR_RNDN); } else { mpfr_set(r10185, r10184, MPFR_RNDN); };
        if (mpfr_get_si(r10163, MPFR_RNDN)) { mpfr_set(r10186, r10173, MPFR_RNDN); } else { mpfr_set(r10186, r10185, MPFR_RNDN); };
        if (mpfr_get_si(r10157, MPFR_RNDN)) { mpfr_set(r10187, r10161, MPFR_RNDN); } else { mpfr_set(r10187, r10186, MPFR_RNDN); };
        return mpfr_get_d(r10187, MPFR_RNDN);
}

static mpfr_t r10188, r10189, r10190, r10191, r10192, r10193, r10194, r10195, r10196, r10197, r10198, r10199, r10200, r10201, r10202, r10203, r10204, r10205, r10206, r10207, r10208, r10209, r10210, r10211, r10212, r10213, r10214, r10215, r10216, r10217, r10218, r10219, r10220;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r10188);
        mpfr_init_set_str(r10189, "-4.629761057018838e+149", 10, MPFR_RNDN);
        mpfr_init(r10190);
        mpfr_init_set_str(r10191, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r10192);
        mpfr_init(r10193);
        mpfr_init(r10194);
        mpfr_init_set_str(r10195, "1.163420619199811e-123", 10, MPFR_RNDN);
        mpfr_init(r10196);
        mpfr_init_set_str(r10197, "3", 10, MPFR_RNDN);
        mpfr_init(r10198);
        mpfr_init(r10199);
        mpfr_init(r10200);
        mpfr_init(r10201);
        mpfr_init(r10202);
        mpfr_init(r10203);
        mpfr_init(r10204);
        mpfr_init(r10205);
        mpfr_init(r10206);
        mpfr_init_set_str(r10207, "1.8587181320047136e+87", 10, MPFR_RNDN);
        mpfr_init(r10208);
        mpfr_init(r10209);
        mpfr_init(r10210);
        mpfr_init(r10211);
        mpfr_init(r10212);
        mpfr_init(r10213);
        mpfr_init(r10214);
        mpfr_init(r10215);
        mpfr_init_set_str(r10216, "-2", 10, MPFR_RNDN);
        mpfr_init(r10217);
        mpfr_init(r10218);
        mpfr_init(r10219);
        mpfr_init(r10220);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r10188, b, MPFR_RNDN);
        ;
        mpfr_set_si(r10190, mpfr_cmp(r10188, r10189) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r10192, a, MPFR_RNDN);
        mpfr_div(r10193, r10188, r10192, MPFR_RNDN);
        mpfr_mul(r10194, r10191, r10193, MPFR_RNDN);
        ;
        mpfr_set_si(r10196, mpfr_cmp(r10188, r10195) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r10198, r10197, MPFR_RNDN);
        mpfr_set_d(r10199, c, MPFR_RNDN);
        mpfr_mul(r10200, r10199, r10192, MPFR_RNDN);
        mpfr_mul(r10201, r10188, r10188, MPFR_RNDN);
        mpfr_fma(r10202, r10198, r10200, r10201, MPFR_RNDN);
        mpfr_sqrt(r10203, r10202, MPFR_RNDN);
        mpfr_sub(r10204, r10203, r10188, MPFR_RNDN);
        mpfr_div(r10205, r10204, r10197, MPFR_RNDN);
        mpfr_div(r10206, r10205, r10192, MPFR_RNDN);
        ;
        mpfr_set_si(r10208, mpfr_cmp(r10188, r10207) <= 0, MPFR_RNDN);
        mpfr_mul(r10209, r10192, r10197, MPFR_RNDN);
        mpfr_neg(r10210, r10199, MPFR_RNDN);
        mpfr_mul(r10211, r10209, r10210, MPFR_RNDN);
        mpfr_div(r10212, r10211, r10209, MPFR_RNDN);
        mpfr_add(r10213, r10203, r10188, MPFR_RNDN);
        mpfr_div(r10214, r10212, r10213, MPFR_RNDN);
        mpfr_div(r10215, r10199, r10188, MPFR_RNDN);
        ;
        mpfr_div(r10217, r10215, r10216, MPFR_RNDN);
        if (mpfr_get_si(r10208, MPFR_RNDN)) { mpfr_set(r10218, r10214, MPFR_RNDN); } else { mpfr_set(r10218, r10217, MPFR_RNDN); };
        if (mpfr_get_si(r10196, MPFR_RNDN)) { mpfr_set(r10219, r10206, MPFR_RNDN); } else { mpfr_set(r10219, r10218, MPFR_RNDN); };
        if (mpfr_get_si(r10190, MPFR_RNDN)) { mpfr_set(r10220, r10194, MPFR_RNDN); } else { mpfr_set(r10220, r10219, MPFR_RNDN); };
        return mpfr_get_d(r10220, MPFR_RNDN);
}

