#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 r9711 = b;
        float r9712 = -r9711;
        float r9713 = r9711 * r9711;
        float r9714 = 3.0f;
        float r9715 = a;
        float r9716 = r9714 * r9715;
        float r9717 = c;
        float r9718 = r9716 * r9717;
        float r9719 = r9713 - r9718;
        float r9720 = sqrt(r9719);
        float r9721 = r9712 + r9720;
        float r9722 = r9721 / r9716;
        return r9722;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r9723 = b;
        double r9724 = -r9723;
        double r9725 = r9723 * r9723;
        double r9726 = 3.0;
        double r9727 = a;
        double r9728 = r9726 * r9727;
        double r9729 = c;
        double r9730 = r9728 * r9729;
        double r9731 = r9725 - r9730;
        double r9732 = sqrt(r9731);
        double r9733 = r9724 + r9732;
        double r9734 = r9733 / r9728;
        return r9734;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r9735 = c;
        float r9736 = -r9735;
        float r9737 = b;
        float r9738 = a;
        float r9739 = 3.0f;
        float r9740 = r9738 * r9739;
        float r9741 = r9737 * r9737;
        float r9742 = fma(r9740, r9736, r9741);
        float r9743 = sqrt(r9742);
        float r9744 = r9737 + r9743;
        float r9745 = r9736 / r9744;
        return r9745;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r9746 = c;
        double r9747 = -r9746;
        double r9748 = b;
        double r9749 = a;
        double r9750 = 3.0;
        double r9751 = r9749 * r9750;
        double r9752 = r9748 * r9748;
        double r9753 = fma(r9751, r9747, r9752);
        double r9754 = sqrt(r9753);
        double r9755 = r9748 + r9754;
        double r9756 = r9747 / r9755;
        return r9756;
}

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 r9757, r9758, r9759, r9760, r9761, r9762, r9763, r9764, r9765, r9766, r9767, r9768;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9757);
        mpfr_init(r9758);
        mpfr_init(r9759);
        mpfr_init_set_str(r9760, "3", 10, MPFR_RNDN);
        mpfr_init(r9761);
        mpfr_init(r9762);
        mpfr_init(r9763);
        mpfr_init(r9764);
        mpfr_init(r9765);
        mpfr_init(r9766);
        mpfr_init(r9767);
        mpfr_init(r9768);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9757, b, MPFR_RNDN);
        mpfr_neg(r9758, r9757, MPFR_RNDN);
        mpfr_mul(r9759, r9757, r9757, MPFR_RNDN);
        ;
        mpfr_set_d(r9761, a, MPFR_RNDN);
        mpfr_mul(r9762, r9760, r9761, MPFR_RNDN);
        mpfr_set_d(r9763, c, MPFR_RNDN);
        mpfr_mul(r9764, r9762, r9763, MPFR_RNDN);
        mpfr_sub(r9765, r9759, r9764, MPFR_RNDN);
        mpfr_sqrt(r9766, r9765, MPFR_RNDN);
        mpfr_add(r9767, r9758, r9766, MPFR_RNDN);
        mpfr_div(r9768, r9767, r9762, MPFR_RNDN);
        return mpfr_get_d(r9768, MPFR_RNDN);
}

static mpfr_t r9769, r9770, r9771, r9772, r9773, r9774, r9775, r9776, r9777, r9778, r9779;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9769);
        mpfr_init(r9770);
        mpfr_init(r9771);
        mpfr_init(r9772);
        mpfr_init_set_str(r9773, "3", 10, MPFR_RNDN);
        mpfr_init(r9774);
        mpfr_init(r9775);
        mpfr_init(r9776);
        mpfr_init(r9777);
        mpfr_init(r9778);
        mpfr_init(r9779);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9769, c, MPFR_RNDN);
        mpfr_neg(r9770, r9769, MPFR_RNDN);
        mpfr_set_d(r9771, b, MPFR_RNDN);
        mpfr_set_d(r9772, a, MPFR_RNDN);
        ;
        mpfr_mul(r9774, r9772, r9773, MPFR_RNDN);
        mpfr_mul(r9775, r9771, r9771, MPFR_RNDN);
        mpfr_fma(r9776, r9774, r9770, r9775, MPFR_RNDN);
        mpfr_sqrt(r9777, r9776, MPFR_RNDN);
        mpfr_add(r9778, r9771, r9777, MPFR_RNDN);
        mpfr_div(r9779, r9770, r9778, MPFR_RNDN);
        return mpfr_get_d(r9779, MPFR_RNDN);
}

static mpfr_t r9780, r9781, r9782, r9783, r9784, r9785, r9786, r9787, r9788, r9789, r9790;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9780);
        mpfr_init(r9781);
        mpfr_init(r9782);
        mpfr_init(r9783);
        mpfr_init_set_str(r9784, "3", 10, MPFR_RNDN);
        mpfr_init(r9785);
        mpfr_init(r9786);
        mpfr_init(r9787);
        mpfr_init(r9788);
        mpfr_init(r9789);
        mpfr_init(r9790);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9780, c, MPFR_RNDN);
        mpfr_neg(r9781, r9780, MPFR_RNDN);
        mpfr_set_d(r9782, b, MPFR_RNDN);
        mpfr_set_d(r9783, a, MPFR_RNDN);
        ;
        mpfr_mul(r9785, r9783, r9784, MPFR_RNDN);
        mpfr_mul(r9786, r9782, r9782, MPFR_RNDN);
        mpfr_fma(r9787, r9785, r9781, r9786, MPFR_RNDN);
        mpfr_sqrt(r9788, r9787, MPFR_RNDN);
        mpfr_add(r9789, r9782, r9788, MPFR_RNDN);
        mpfr_div(r9790, r9781, r9789, MPFR_RNDN);
        return mpfr_get_d(r9790, MPFR_RNDN);
}

