#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 r9612 = b;
        float r9613 = -r9612;
        float r9614 = r9612 * r9612;
        float r9615 = 3.0f;
        float r9616 = a;
        float r9617 = r9615 * r9616;
        float r9618 = c;
        float r9619 = r9617 * r9618;
        float r9620 = r9614 - r9619;
        float r9621 = sqrt(r9620);
        float r9622 = r9613 + r9621;
        float r9623 = r9622 / r9617;
        return r9623;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r9624 = b;
        double r9625 = -r9624;
        double r9626 = r9624 * r9624;
        double r9627 = 3.0;
        double r9628 = a;
        double r9629 = r9627 * r9628;
        double r9630 = c;
        double r9631 = r9629 * r9630;
        double r9632 = r9626 - r9631;
        double r9633 = sqrt(r9632);
        double r9634 = r9625 + r9633;
        double r9635 = r9634 / r9629;
        return r9635;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r9636 = 3.0f;
        float r9637 = a;
        float r9638 = r9636 * r9637;
        float r9639 = c;
        float r9640 = -r9639;
        float r9641 = b;
        float r9642 = r9641 * r9641;
        float r9643 = fma(r9638, r9640, r9642);
        float r9644 = sqrt(r9643);
        float r9645 = r9644 - r9641;
        float r9646 = r9645 / r9638;
        return r9646;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r9647 = 3.0;
        double r9648 = a;
        double r9649 = r9647 * r9648;
        double r9650 = c;
        double r9651 = -r9650;
        double r9652 = b;
        double r9653 = r9652 * r9652;
        double r9654 = fma(r9649, r9651, r9653);
        double r9655 = sqrt(r9654);
        double r9656 = r9655 - r9652;
        double r9657 = r9656 / r9649;
        return r9657;
}

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 r9658, r9659, r9660, r9661, r9662, r9663, r9664, r9665, r9666, r9667, r9668, r9669;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9658);
        mpfr_init(r9659);
        mpfr_init(r9660);
        mpfr_init_set_str(r9661, "3", 10, MPFR_RNDN);
        mpfr_init(r9662);
        mpfr_init(r9663);
        mpfr_init(r9664);
        mpfr_init(r9665);
        mpfr_init(r9666);
        mpfr_init(r9667);
        mpfr_init(r9668);
        mpfr_init(r9669);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9658, b, MPFR_RNDN);
        mpfr_neg(r9659, r9658, MPFR_RNDN);
        mpfr_mul(r9660, r9658, r9658, MPFR_RNDN);
        ;
        mpfr_set_d(r9662, a, MPFR_RNDN);
        mpfr_mul(r9663, r9661, r9662, MPFR_RNDN);
        mpfr_set_d(r9664, c, MPFR_RNDN);
        mpfr_mul(r9665, r9663, r9664, MPFR_RNDN);
        mpfr_sub(r9666, r9660, r9665, MPFR_RNDN);
        mpfr_sqrt(r9667, r9666, MPFR_RNDN);
        mpfr_add(r9668, r9659, r9667, MPFR_RNDN);
        mpfr_div(r9669, r9668, r9663, MPFR_RNDN);
        return mpfr_get_d(r9669, MPFR_RNDN);
}

static mpfr_t r9670, r9671, r9672, r9673, r9674, r9675, r9676, r9677, r9678, r9679, r9680;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9670, "3", 10, MPFR_RNDN);
        mpfr_init(r9671);
        mpfr_init(r9672);
        mpfr_init(r9673);
        mpfr_init(r9674);
        mpfr_init(r9675);
        mpfr_init(r9676);
        mpfr_init(r9677);
        mpfr_init(r9678);
        mpfr_init(r9679);
        mpfr_init(r9680);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        ;
        mpfr_set_d(r9671, a, MPFR_RNDN);
        mpfr_mul(r9672, r9670, r9671, MPFR_RNDN);
        mpfr_set_d(r9673, c, MPFR_RNDN);
        mpfr_neg(r9674, r9673, MPFR_RNDN);
        mpfr_set_d(r9675, b, MPFR_RNDN);
        mpfr_mul(r9676, r9675, r9675, MPFR_RNDN);
        mpfr_fma(r9677, r9672, r9674, r9676, MPFR_RNDN);
        mpfr_sqrt(r9678, r9677, MPFR_RNDN);
        mpfr_sub(r9679, r9678, r9675, MPFR_RNDN);
        mpfr_div(r9680, r9679, r9672, MPFR_RNDN);
        return mpfr_get_d(r9680, MPFR_RNDN);
}

static mpfr_t r9681, r9682, r9683, r9684, r9685, r9686, r9687, r9688, r9689, r9690, r9691;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9681, "3", 10, MPFR_RNDN);
        mpfr_init(r9682);
        mpfr_init(r9683);
        mpfr_init(r9684);
        mpfr_init(r9685);
        mpfr_init(r9686);
        mpfr_init(r9687);
        mpfr_init(r9688);
        mpfr_init(r9689);
        mpfr_init(r9690);
        mpfr_init(r9691);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        ;
        mpfr_set_d(r9682, a, MPFR_RNDN);
        mpfr_mul(r9683, r9681, r9682, MPFR_RNDN);
        mpfr_set_d(r9684, c, MPFR_RNDN);
        mpfr_neg(r9685, r9684, MPFR_RNDN);
        mpfr_set_d(r9686, b, MPFR_RNDN);
        mpfr_mul(r9687, r9686, r9686, MPFR_RNDN);
        mpfr_fma(r9688, r9683, r9685, r9687, MPFR_RNDN);
        mpfr_sqrt(r9689, r9688, MPFR_RNDN);
        mpfr_sub(r9690, r9689, r9686, MPFR_RNDN);
        mpfr_div(r9691, r9690, r9683, MPFR_RNDN);
        return mpfr_get_d(r9691, MPFR_RNDN);
}

