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

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

double f_if(float a, float b, float c, float __attribute__((unused)) d) {
        float r9512 = b;
        float r9513 = -r9512;
        float r9514 = r9512 * r9512;
        float r9515 = 3.0f;
        float r9516 = a;
        float r9517 = r9515 * r9516;
        float r9518 = c;
        float r9519 = r9517 * r9518;
        float r9520 = r9514 - r9519;
        float r9521 = sqrt(r9520);
        float r9522 = r9513 + r9521;
        float r9523 = r9522 / r9517;
        return r9523;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r9524 = b;
        double r9525 = -r9524;
        double r9526 = r9524 * r9524;
        double r9527 = 3.0;
        double r9528 = a;
        double r9529 = r9527 * r9528;
        double r9530 = c;
        double r9531 = r9529 * r9530;
        double r9532 = r9526 - r9531;
        double r9533 = sqrt(r9532);
        double r9534 = r9525 + r9533;
        double r9535 = r9534 / r9529;
        return r9535;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r9536 = 1.0f;
        float r9537 = a;
        float r9538 = r9536 / r9537;
        float r9539 = c;
        float r9540 = r9539 * r9537;
        float r9541 = b;
        float r9542 = -r9541;
        float r9543 = r9541 * r9541;
        float r9544 = 3.0f;
        float r9545 = r9544 * r9537;
        float r9546 = r9539 * r9545;
        float r9547 = r9543 - r9546;
        float r9548 = sqrt(r9547);
        float r9549 = r9542 - r9548;
        float r9550 = r9540 / r9549;
        float r9551 = r9538 * r9550;
        return r9551;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r9552 = 1.0;
        double r9553 = a;
        double r9554 = r9552 / r9553;
        double r9555 = c;
        double r9556 = r9555 * r9553;
        double r9557 = b;
        double r9558 = -r9557;
        double r9559 = r9557 * r9557;
        double r9560 = 3.0;
        double r9561 = r9560 * r9553;
        double r9562 = r9555 * r9561;
        double r9563 = r9559 - r9562;
        double r9564 = sqrt(r9563);
        double r9565 = r9558 - r9564;
        double r9566 = r9556 / r9565;
        double r9567 = r9554 * r9566;
        return r9567;
}

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 r9568, r9569, r9570, r9571, r9572, r9573, r9574, r9575, r9576, r9577, r9578, r9579;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init(r9568);
        mpfr_init(r9569);
        mpfr_init(r9570);
        mpfr_init_set_str(r9571, "3", 10, MPFR_RNDN);
        mpfr_init(r9572);
        mpfr_init(r9573);
        mpfr_init(r9574);
        mpfr_init(r9575);
        mpfr_init(r9576);
        mpfr_init(r9577);
        mpfr_init(r9578);
        mpfr_init(r9579);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9568, b, MPFR_RNDN);
        mpfr_neg(r9569, r9568, MPFR_RNDN);
        mpfr_mul(r9570, r9568, r9568, MPFR_RNDN);
        ;
        mpfr_set_d(r9572, a, MPFR_RNDN);
        mpfr_mul(r9573, r9571, r9572, MPFR_RNDN);
        mpfr_set_d(r9574, c, MPFR_RNDN);
        mpfr_mul(r9575, r9573, r9574, MPFR_RNDN);
        mpfr_sub(r9576, r9570, r9575, MPFR_RNDN);
        mpfr_sqrt(r9577, r9576, MPFR_RNDN);
        mpfr_add(r9578, r9569, r9577, MPFR_RNDN);
        mpfr_div(r9579, r9578, r9573, MPFR_RNDN);
        return mpfr_get_d(r9579, MPFR_RNDN);
}

static mpfr_t r9580, r9581, r9582, r9583, r9584, r9585, r9586, r9587, r9588, r9589, r9590, r9591, r9592, r9593, r9594, r9595;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r9580, "1", 10, MPFR_RNDN);
        mpfr_init(r9581);
        mpfr_init(r9582);
        mpfr_init(r9583);
        mpfr_init(r9584);
        mpfr_init(r9585);
        mpfr_init(r9586);
        mpfr_init(r9587);
        mpfr_init_set_str(r9588, "3", 10, MPFR_RNDN);
        mpfr_init(r9589);
        mpfr_init(r9590);
        mpfr_init(r9591);
        mpfr_init(r9592);
        mpfr_init(r9593);
        mpfr_init(r9594);
        mpfr_init(r9595);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        ;
        mpfr_set_d(r9581, a, MPFR_RNDN);
        mpfr_div(r9582, r9580, r9581, MPFR_RNDN);
        mpfr_set_d(r9583, c, MPFR_RNDN);
        mpfr_mul(r9584, r9583, r9581, MPFR_RNDN);
        mpfr_set_d(r9585, b, MPFR_RNDN);
        mpfr_neg(r9586, r9585, MPFR_RNDN);
        mpfr_mul(r9587, r9585, r9585, MPFR_RNDN);
        ;
        mpfr_mul(r9589, r9588, r9581, MPFR_RNDN);
        mpfr_mul(r9590, r9583, r9589, MPFR_RNDN);
        mpfr_sub(r9591, r9587, r9590, MPFR_RNDN);
        mpfr_sqrt(r9592, r9591, MPFR_RNDN);
        mpfr_sub(r9593, r9586, r9592, MPFR_RNDN);
        mpfr_div(r9594, r9584, r9593, MPFR_RNDN);
        mpfr_mul(r9595, r9582, r9594, MPFR_RNDN);
        return mpfr_get_d(r9595, MPFR_RNDN);
}

static mpfr_t r9596, r9597, r9598, r9599, r9600, r9601, r9602, r9603, r9604, r9605, r9606, r9607, r9608, r9609, r9610, r9611;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r9596, "1", 10, MPFR_RNDN);
        mpfr_init(r9597);
        mpfr_init(r9598);
        mpfr_init(r9599);
        mpfr_init(r9600);
        mpfr_init(r9601);
        mpfr_init(r9602);
        mpfr_init(r9603);
        mpfr_init_set_str(r9604, "3", 10, MPFR_RNDN);
        mpfr_init(r9605);
        mpfr_init(r9606);
        mpfr_init(r9607);
        mpfr_init(r9608);
        mpfr_init(r9609);
        mpfr_init(r9610);
        mpfr_init(r9611);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        ;
        mpfr_set_d(r9597, a, MPFR_RNDN);
        mpfr_div(r9598, r9596, r9597, MPFR_RNDN);
        mpfr_set_d(r9599, c, MPFR_RNDN);
        mpfr_mul(r9600, r9599, r9597, MPFR_RNDN);
        mpfr_set_d(r9601, b, MPFR_RNDN);
        mpfr_neg(r9602, r9601, MPFR_RNDN);
        mpfr_mul(r9603, r9601, r9601, MPFR_RNDN);
        ;
        mpfr_mul(r9605, r9604, r9597, MPFR_RNDN);
        mpfr_mul(r9606, r9599, r9605, MPFR_RNDN);
        mpfr_sub(r9607, r9603, r9606, MPFR_RNDN);
        mpfr_sqrt(r9608, r9607, MPFR_RNDN);
        mpfr_sub(r9609, r9602, r9608, MPFR_RNDN);
        mpfr_div(r9610, r9600, r9609, MPFR_RNDN);
        mpfr_mul(r9611, r9598, r9610, MPFR_RNDN);
        return mpfr_get_d(r9611, MPFR_RNDN);
}

