#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 r9467 = b;
        float r9468 = -r9467;
        float r9469 = r9467 * r9467;
        float r9470 = 3.0f;
        float r9471 = a;
        float r9472 = r9470 * r9471;
        float r9473 = c;
        float r9474 = r9472 * r9473;
        float r9475 = r9469 - r9474;
        float r9476 = sqrt(r9475);
        float r9477 = r9468 + r9476;
        float r9478 = r9477 / r9472;
        return r9478;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r9479 = b;
        double r9480 = -r9479;
        double r9481 = r9479 * r9479;
        double r9482 = 3.0;
        double r9483 = a;
        double r9484 = r9482 * r9483;
        double r9485 = c;
        double r9486 = r9484 * r9485;
        double r9487 = r9481 - r9486;
        double r9488 = sqrt(r9487);
        double r9489 = r9480 + r9488;
        double r9490 = r9489 / r9484;
        return r9490;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r9491 = c;
        float r9492 = -r9491;
        float r9493 = b;
        float r9494 = r9493 * r9493;
        float r9495 = 3.0f;
        float r9496 = a;
        float r9497 = r9496 * r9491;
        float r9498 = r9495 * r9497;
        float r9499 = r9494 - r9498;
        float r9500 = sqrt(r9499);
        float r9501 = r9500 + r9493;
        float r9502 = r9492 / r9501;
        return r9502;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r9503 = c;
        double r9504 = -r9503;
        double r9505 = b;
        double r9506 = r9505 * r9505;
        double r9507 = 3.0;
        double r9508 = a;
        double r9509 = r9508 * r9503;
        double r9510 = r9507 * r9509;
        double r9511 = r9506 - r9510;
        double r9512 = sqrt(r9511);
        double r9513 = r9512 + r9505;
        double r9514 = r9504 / r9513;
        return r9514;
}

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 r9515, r9516, r9517, r9518, r9519, r9520, r9521, r9522, r9523, r9524, r9525, r9526;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init(r9515);
        mpfr_init(r9516);
        mpfr_init(r9517);
        mpfr_init_set_str(r9518, "3", 10, MPFR_RNDN);
        mpfr_init(r9519);
        mpfr_init(r9520);
        mpfr_init(r9521);
        mpfr_init(r9522);
        mpfr_init(r9523);
        mpfr_init(r9524);
        mpfr_init(r9525);
        mpfr_init(r9526);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9515, b, MPFR_RNDN);
        mpfr_neg(r9516, r9515, MPFR_RNDN);
        mpfr_mul(r9517, r9515, r9515, MPFR_RNDN);
        ;
        mpfr_set_d(r9519, a, MPFR_RNDN);
        mpfr_mul(r9520, r9518, r9519, MPFR_RNDN);
        mpfr_set_d(r9521, c, MPFR_RNDN);
        mpfr_mul(r9522, r9520, r9521, MPFR_RNDN);
        mpfr_sub(r9523, r9517, r9522, MPFR_RNDN);
        mpfr_sqrt(r9524, r9523, MPFR_RNDN);
        mpfr_add(r9525, r9516, r9524, MPFR_RNDN);
        mpfr_div(r9526, r9525, r9520, MPFR_RNDN);
        return mpfr_get_d(r9526, MPFR_RNDN);
}

static mpfr_t r9527, r9528, r9529, r9530, r9531, r9532, r9533, r9534, r9535, r9536, r9537, r9538;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init(r9527);
        mpfr_init(r9528);
        mpfr_init(r9529);
        mpfr_init(r9530);
        mpfr_init_set_str(r9531, "3", 10, MPFR_RNDN);
        mpfr_init(r9532);
        mpfr_init(r9533);
        mpfr_init(r9534);
        mpfr_init(r9535);
        mpfr_init(r9536);
        mpfr_init(r9537);
        mpfr_init(r9538);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9527, c, MPFR_RNDN);
        mpfr_neg(r9528, r9527, MPFR_RNDN);
        mpfr_set_d(r9529, b, MPFR_RNDN);
        mpfr_mul(r9530, r9529, r9529, MPFR_RNDN);
        ;
        mpfr_set_d(r9532, a, MPFR_RNDN);
        mpfr_mul(r9533, r9532, r9527, MPFR_RNDN);
        mpfr_mul(r9534, r9531, r9533, MPFR_RNDN);
        mpfr_sub(r9535, r9530, r9534, MPFR_RNDN);
        mpfr_sqrt(r9536, r9535, MPFR_RNDN);
        mpfr_add(r9537, r9536, r9529, MPFR_RNDN);
        mpfr_div(r9538, r9528, r9537, MPFR_RNDN);
        return mpfr_get_d(r9538, MPFR_RNDN);
}

static mpfr_t r9539, r9540, r9541, r9542, r9543, r9544, r9545, r9546, r9547, r9548, r9549, r9550;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init(r9539);
        mpfr_init(r9540);
        mpfr_init(r9541);
        mpfr_init(r9542);
        mpfr_init_set_str(r9543, "3", 10, MPFR_RNDN);
        mpfr_init(r9544);
        mpfr_init(r9545);
        mpfr_init(r9546);
        mpfr_init(r9547);
        mpfr_init(r9548);
        mpfr_init(r9549);
        mpfr_init(r9550);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9539, c, MPFR_RNDN);
        mpfr_neg(r9540, r9539, MPFR_RNDN);
        mpfr_set_d(r9541, b, MPFR_RNDN);
        mpfr_mul(r9542, r9541, r9541, MPFR_RNDN);
        ;
        mpfr_set_d(r9544, a, MPFR_RNDN);
        mpfr_mul(r9545, r9544, r9539, MPFR_RNDN);
        mpfr_mul(r9546, r9543, r9545, MPFR_RNDN);
        mpfr_sub(r9547, r9542, r9546, MPFR_RNDN);
        mpfr_sqrt(r9548, r9547, MPFR_RNDN);
        mpfr_add(r9549, r9548, r9541, MPFR_RNDN);
        mpfr_div(r9550, r9540, r9549, MPFR_RNDN);
        return mpfr_get_d(r9550, MPFR_RNDN);
}

