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

char *name = "Cubic critical, narrow range";

double f_if(float a, float b, float c, float __attribute__((unused)) d) {
        float r26044 = b;
        float r26045 = -r26044;
        float r26046 = r26044 * r26044;
        float r26047 = 3;
        float r26048 = a;
        float r26049 = r26047 * r26048;
        float r26050 = c;
        float r26051 = r26049 * r26050;
        float r26052 = r26046 - r26051;
        float r26053 = sqrt(r26052);
        float r26054 = r26045 + r26053;
        float r26055 = r26054 / r26049;
        return r26055;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r26056 = b;
        double r26057 = -r26056;
        double r26058 = r26056 * r26056;
        double r26059 = 3;
        double r26060 = a;
        double r26061 = r26059 * r26060;
        double r26062 = c;
        double r26063 = r26061 * r26062;
        double r26064 = r26058 - r26063;
        double r26065 = sqrt(r26064);
        double r26066 = r26057 + r26065;
        double r26067 = r26066 / r26061;
        return r26067;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r26068 = c;
        float r26069 = -r26068;
        float r26070 = a;
        float r26071 = 3;
        float r26072 = r26070 * r26071;
        float r26073 = b;
        float r26074 = r26073 * r26073;
        float r26075 = fma(r26069, r26072, r26074);
        float r26076 = 9;
        float r26077 = r26068 * r26076;
        float r26078 = r26068 * r26077;
        float r26079 = r26070 * r26070;
        float r26080 = 4;
        float r26081 = pow(r26073, r26080);
        float r26082 = fma(r26078, r26079, r26081);
        float r26083 = 6;
        float r26084 = r26070 * r26083;
        float r26085 = r26074 * r26084;
        float r26086 = r26085 * r26068;
        float r26087 = r26082 - r26086;
        float r26088 = r26075 * r26087;
        float r26089 = cbrt(r26088);
        float r26090 = sqrt(r26089);
        float r26091 = r26090 - r26073;
        float r26092 = r26091 / r26072;
        float r26093 = -1.7619771020139317e-15;
        bool r26094 = r26092 <= r26093;
        float r26095 = pow(r26073, r26083);
        float r26096 = 1/3;
        float r26097 = pow(r26095, r26096);
        float r26098 = r26070 * r26068;
        float r26099 = r26098 * r26071;
        float r26100 = r26097 - r26099;
        float r26101 = sqrt(r26100);
        float r26102 = r26101 - r26073;
        float r26103 = r26071 * r26070;
        float r26104 = r26102 / r26103;
        float r26105 = r26094 ? r26092 : r26104;
        return r26105;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r26106 = c;
        double r26107 = -r26106;
        double r26108 = a;
        double r26109 = 3;
        double r26110 = r26108 * r26109;
        double r26111 = b;
        double r26112 = r26111 * r26111;
        double r26113 = fma(r26107, r26110, r26112);
        double r26114 = 9;
        double r26115 = r26106 * r26114;
        double r26116 = r26106 * r26115;
        double r26117 = r26108 * r26108;
        double r26118 = 4;
        double r26119 = pow(r26111, r26118);
        double r26120 = fma(r26116, r26117, r26119);
        double r26121 = 6;
        double r26122 = r26108 * r26121;
        double r26123 = r26112 * r26122;
        double r26124 = r26123 * r26106;
        double r26125 = r26120 - r26124;
        double r26126 = r26113 * r26125;
        double r26127 = cbrt(r26126);
        double r26128 = sqrt(r26127);
        double r26129 = r26128 - r26111;
        double r26130 = r26129 / r26110;
        double r26131 = -1.7619771020139317e-15;
        bool r26132 = r26130 <= r26131;
        double r26133 = pow(r26111, r26121);
        double r26134 = 1/3;
        double r26135 = pow(r26133, r26134);
        double r26136 = r26108 * r26106;
        double r26137 = r26136 * r26109;
        double r26138 = r26135 - r26137;
        double r26139 = sqrt(r26138);
        double r26140 = r26139 - r26111;
        double r26141 = r26109 * r26108;
        double r26142 = r26140 / r26141;
        double r26143 = r26132 ? r26130 : r26142;
        return r26143;
}

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 r26144, r26145, r26146, r26147, r26148, r26149, r26150, r26151, r26152, r26153, r26154, r26155;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2128);
        mpfr_init(r26144);
        mpfr_init(r26145);
        mpfr_init(r26146);
        mpfr_init_set_str(r26147, "3", 10, MPFR_RNDN);
        mpfr_init(r26148);
        mpfr_init(r26149);
        mpfr_init(r26150);
        mpfr_init(r26151);
        mpfr_init(r26152);
        mpfr_init(r26153);
        mpfr_init(r26154);
        mpfr_init(r26155);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26144, b, MPFR_RNDN);
        mpfr_neg(r26145, r26144, MPFR_RNDN);
        mpfr_mul(r26146, r26144, r26144, MPFR_RNDN);
        ;
        mpfr_set_d(r26148, a, MPFR_RNDN);
        mpfr_mul(r26149, r26147, r26148, MPFR_RNDN);
        mpfr_set_d(r26150, c, MPFR_RNDN);
        mpfr_mul(r26151, r26149, r26150, MPFR_RNDN);
        mpfr_sub(r26152, r26146, r26151, MPFR_RNDN);
        mpfr_sqrt(r26153, r26152, MPFR_RNDN);
        mpfr_add(r26154, r26145, r26153, MPFR_RNDN);
        mpfr_div(r26155, r26154, r26149, MPFR_RNDN);
        return mpfr_get_d(r26155, MPFR_RNDN);
}

static mpfr_t r26156, r26157, r26158, r26159, r26160, r26161, r26162, r26163, r26164, r26165, r26166, r26167, r26168, r26169, r26170, r26171, r26172, r26173, r26174, r26175, r26176, r26177, r26178, r26179, r26180, r26181, r26182, r26183, r26184, r26185, r26186, r26187, r26188, r26189, r26190, r26191, r26192, r26193;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2128);
        mpfr_init(r26156);
        mpfr_init(r26157);
        mpfr_init(r26158);
        mpfr_init_set_str(r26159, "3", 10, MPFR_RNDN);
        mpfr_init(r26160);
        mpfr_init(r26161);
        mpfr_init(r26162);
        mpfr_init(r26163);
        mpfr_init_set_str(r26164, "9", 10, MPFR_RNDN);
        mpfr_init(r26165);
        mpfr_init(r26166);
        mpfr_init(r26167);
        mpfr_init_set_str(r26168, "4", 10, MPFR_RNDN);
        mpfr_init(r26169);
        mpfr_init(r26170);
        mpfr_init_set_str(r26171, "6", 10, MPFR_RNDN);
        mpfr_init(r26172);
        mpfr_init(r26173);
        mpfr_init(r26174);
        mpfr_init(r26175);
        mpfr_init(r26176);
        mpfr_init(r26177);
        mpfr_init(r26178);
        mpfr_init(r26179);
        mpfr_init(r26180);
        mpfr_init_set_str(r26181, "-1.7619771020139317e-15", 10, MPFR_RNDN);
        mpfr_init(r26182);
        mpfr_init(r26183);
        mpfr_init_set_str(r26184, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26185);
        mpfr_init(r26186);
        mpfr_init(r26187);
        mpfr_init(r26188);
        mpfr_init(r26189);
        mpfr_init(r26190);
        mpfr_init(r26191);
        mpfr_init(r26192);
        mpfr_init(r26193);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26156, c, MPFR_RNDN);
        mpfr_neg(r26157, r26156, MPFR_RNDN);
        mpfr_set_d(r26158, a, MPFR_RNDN);
        ;
        mpfr_mul(r26160, r26158, r26159, MPFR_RNDN);
        mpfr_set_d(r26161, b, MPFR_RNDN);
        mpfr_mul(r26162, r26161, r26161, MPFR_RNDN);
        mpfr_fma(r26163, r26157, r26160, r26162, MPFR_RNDN);
        ;
        mpfr_mul(r26165, r26156, r26164, MPFR_RNDN);
        mpfr_mul(r26166, r26156, r26165, MPFR_RNDN);
        mpfr_mul(r26167, r26158, r26158, MPFR_RNDN);
        ;
        mpfr_pow(r26169, r26161, r26168, MPFR_RNDN);
        mpfr_fma(r26170, r26166, r26167, r26169, MPFR_RNDN);
        ;
        mpfr_mul(r26172, r26158, r26171, MPFR_RNDN);
        mpfr_mul(r26173, r26162, r26172, MPFR_RNDN);
        mpfr_mul(r26174, r26173, r26156, MPFR_RNDN);
        mpfr_sub(r26175, r26170, r26174, MPFR_RNDN);
        mpfr_mul(r26176, r26163, r26175, MPFR_RNDN);
        mpfr_cbrt(r26177, r26176, MPFR_RNDN);
        mpfr_sqrt(r26178, r26177, MPFR_RNDN);
        mpfr_sub(r26179, r26178, r26161, MPFR_RNDN);
        mpfr_div(r26180, r26179, r26160, MPFR_RNDN);
        ;
        mpfr_set_si(r26182, mpfr_cmp(r26180, r26181) <= 0, MPFR_RNDN);
        mpfr_pow(r26183, r26161, r26171, MPFR_RNDN);
        ;
        mpfr_pow(r26185, r26183, r26184, MPFR_RNDN);
        mpfr_mul(r26186, r26158, r26156, MPFR_RNDN);
        mpfr_mul(r26187, r26186, r26159, MPFR_RNDN);
        mpfr_sub(r26188, r26185, r26187, MPFR_RNDN);
        mpfr_sqrt(r26189, r26188, MPFR_RNDN);
        mpfr_sub(r26190, r26189, r26161, MPFR_RNDN);
        mpfr_mul(r26191, r26159, r26158, MPFR_RNDN);
        mpfr_div(r26192, r26190, r26191, MPFR_RNDN);
        if (mpfr_get_si(r26182, MPFR_RNDN)) { mpfr_set(r26193, r26180, MPFR_RNDN); } else { mpfr_set(r26193, r26192, MPFR_RNDN); };
        return mpfr_get_d(r26193, MPFR_RNDN);
}

static mpfr_t r26194, r26195, r26196, r26197, r26198, r26199, r26200, r26201, r26202, r26203, r26204, r26205, r26206, r26207, r26208, r26209, r26210, r26211, r26212, r26213, r26214, r26215, r26216, r26217, r26218, r26219, r26220, r26221, r26222, r26223, r26224, r26225, r26226, r26227, r26228, r26229, r26230, r26231;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2128);
        mpfr_init(r26194);
        mpfr_init(r26195);
        mpfr_init(r26196);
        mpfr_init_set_str(r26197, "3", 10, MPFR_RNDN);
        mpfr_init(r26198);
        mpfr_init(r26199);
        mpfr_init(r26200);
        mpfr_init(r26201);
        mpfr_init_set_str(r26202, "9", 10, MPFR_RNDN);
        mpfr_init(r26203);
        mpfr_init(r26204);
        mpfr_init(r26205);
        mpfr_init_set_str(r26206, "4", 10, MPFR_RNDN);
        mpfr_init(r26207);
        mpfr_init(r26208);
        mpfr_init_set_str(r26209, "6", 10, MPFR_RNDN);
        mpfr_init(r26210);
        mpfr_init(r26211);
        mpfr_init(r26212);
        mpfr_init(r26213);
        mpfr_init(r26214);
        mpfr_init(r26215);
        mpfr_init(r26216);
        mpfr_init(r26217);
        mpfr_init(r26218);
        mpfr_init_set_str(r26219, "-1.7619771020139317e-15", 10, MPFR_RNDN);
        mpfr_init(r26220);
        mpfr_init(r26221);
        mpfr_init_set_str(r26222, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26223);
        mpfr_init(r26224);
        mpfr_init(r26225);
        mpfr_init(r26226);
        mpfr_init(r26227);
        mpfr_init(r26228);
        mpfr_init(r26229);
        mpfr_init(r26230);
        mpfr_init(r26231);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26194, c, MPFR_RNDN);
        mpfr_neg(r26195, r26194, MPFR_RNDN);
        mpfr_set_d(r26196, a, MPFR_RNDN);
        ;
        mpfr_mul(r26198, r26196, r26197, MPFR_RNDN);
        mpfr_set_d(r26199, b, MPFR_RNDN);
        mpfr_mul(r26200, r26199, r26199, MPFR_RNDN);
        mpfr_fma(r26201, r26195, r26198, r26200, MPFR_RNDN);
        ;
        mpfr_mul(r26203, r26194, r26202, MPFR_RNDN);
        mpfr_mul(r26204, r26194, r26203, MPFR_RNDN);
        mpfr_mul(r26205, r26196, r26196, MPFR_RNDN);
        ;
        mpfr_pow(r26207, r26199, r26206, MPFR_RNDN);
        mpfr_fma(r26208, r26204, r26205, r26207, MPFR_RNDN);
        ;
        mpfr_mul(r26210, r26196, r26209, MPFR_RNDN);
        mpfr_mul(r26211, r26200, r26210, MPFR_RNDN);
        mpfr_mul(r26212, r26211, r26194, MPFR_RNDN);
        mpfr_sub(r26213, r26208, r26212, MPFR_RNDN);
        mpfr_mul(r26214, r26201, r26213, MPFR_RNDN);
        mpfr_cbrt(r26215, r26214, MPFR_RNDN);
        mpfr_sqrt(r26216, r26215, MPFR_RNDN);
        mpfr_sub(r26217, r26216, r26199, MPFR_RNDN);
        mpfr_div(r26218, r26217, r26198, MPFR_RNDN);
        ;
        mpfr_set_si(r26220, mpfr_cmp(r26218, r26219) <= 0, MPFR_RNDN);
        mpfr_pow(r26221, r26199, r26209, MPFR_RNDN);
        ;
        mpfr_pow(r26223, r26221, r26222, MPFR_RNDN);
        mpfr_mul(r26224, r26196, r26194, MPFR_RNDN);
        mpfr_mul(r26225, r26224, r26197, MPFR_RNDN);
        mpfr_sub(r26226, r26223, r26225, MPFR_RNDN);
        mpfr_sqrt(r26227, r26226, MPFR_RNDN);
        mpfr_sub(r26228, r26227, r26199, MPFR_RNDN);
        mpfr_mul(r26229, r26197, r26196, MPFR_RNDN);
        mpfr_div(r26230, r26228, r26229, MPFR_RNDN);
        if (mpfr_get_si(r26220, MPFR_RNDN)) { mpfr_set(r26231, r26218, MPFR_RNDN); } else { mpfr_set(r26231, r26230, MPFR_RNDN); };
        return mpfr_get_d(r26231, MPFR_RNDN);
}

