#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 r9883 = b;
        float r9884 = -r9883;
        float r9885 = r9883 * r9883;
        float r9886 = 3;
        float r9887 = a;
        float r9888 = r9886 * r9887;
        float r9889 = c;
        float r9890 = r9888 * r9889;
        float r9891 = r9885 - r9890;
        float r9892 = sqrt(r9891);
        float r9893 = r9884 + r9892;
        float r9894 = r9893 / r9888;
        return r9894;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r9895 = b;
        double r9896 = -r9895;
        double r9897 = r9895 * r9895;
        double r9898 = 3;
        double r9899 = a;
        double r9900 = r9898 * r9899;
        double r9901 = c;
        double r9902 = r9900 * r9901;
        double r9903 = r9897 - r9902;
        double r9904 = sqrt(r9903);
        double r9905 = r9896 + r9904;
        double r9906 = r9905 / r9900;
        return r9906;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r9907 = 3;
        float r9908 = r9907 / r9907;
        float r9909 = c;
        float r9910 = b;
        float r9911 = -r9910;
        float r9912 = -r9909;
        float r9913 = a;
        float r9914 = r9907 * r9913;
        float r9915 = r9910 * r9910;
        float r9916 = fma(r9912, r9914, r9915);
        float r9917 = sqrt(r9916);
        float r9918 = r9911 - r9917;
        float r9919 = r9909 / r9918;
        float r9920 = r9908 * r9919;
        return r9920;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r9921 = 3;
        double r9922 = r9921 / r9921;
        double r9923 = c;
        double r9924 = b;
        double r9925 = -r9924;
        double r9926 = -r9923;
        double r9927 = a;
        double r9928 = r9921 * r9927;
        double r9929 = r9924 * r9924;
        double r9930 = fma(r9926, r9928, r9929);
        double r9931 = sqrt(r9930);
        double r9932 = r9925 - r9931;
        double r9933 = r9923 / r9932;
        double r9934 = r9922 * r9933;
        return r9934;
}

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 r9935, r9936, r9937, r9938, r9939, r9940, r9941, r9942, r9943, r9944, r9945, r9946;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init(r9935);
        mpfr_init(r9936);
        mpfr_init(r9937);
        mpfr_init_set_str(r9938, "3", 10, MPFR_RNDN);
        mpfr_init(r9939);
        mpfr_init(r9940);
        mpfr_init(r9941);
        mpfr_init(r9942);
        mpfr_init(r9943);
        mpfr_init(r9944);
        mpfr_init(r9945);
        mpfr_init(r9946);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9935, b, MPFR_RNDN);
        mpfr_neg(r9936, r9935, MPFR_RNDN);
        mpfr_mul(r9937, r9935, r9935, MPFR_RNDN);
        ;
        mpfr_set_d(r9939, a, MPFR_RNDN);
        mpfr_mul(r9940, r9938, r9939, MPFR_RNDN);
        mpfr_set_d(r9941, c, MPFR_RNDN);
        mpfr_mul(r9942, r9940, r9941, MPFR_RNDN);
        mpfr_sub(r9943, r9937, r9942, MPFR_RNDN);
        mpfr_sqrt(r9944, r9943, MPFR_RNDN);
        mpfr_add(r9945, r9936, r9944, MPFR_RNDN);
        mpfr_div(r9946, r9945, r9940, MPFR_RNDN);
        return mpfr_get_d(r9946, MPFR_RNDN);
}

static mpfr_t r9947, r9948, r9949, r9950, r9951, r9952, r9953, r9954, r9955, r9956, r9957, r9958, r9959, r9960;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r9947, "3", 10, MPFR_RNDN);
        mpfr_init(r9948);
        mpfr_init(r9949);
        mpfr_init(r9950);
        mpfr_init(r9951);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init(r9955);
        mpfr_init(r9956);
        mpfr_init(r9957);
        mpfr_init(r9958);
        mpfr_init(r9959);
        mpfr_init(r9960);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        ;
        mpfr_div(r9948, r9947, r9947, MPFR_RNDN);
        mpfr_set_d(r9949, c, MPFR_RNDN);
        mpfr_set_d(r9950, b, MPFR_RNDN);
        mpfr_neg(r9951, r9950, MPFR_RNDN);
        mpfr_neg(r9952, r9949, MPFR_RNDN);
        mpfr_set_d(r9953, a, MPFR_RNDN);
        mpfr_mul(r9954, r9947, r9953, MPFR_RNDN);
        mpfr_mul(r9955, r9950, r9950, MPFR_RNDN);
        mpfr_fma(r9956, r9952, r9954, r9955, MPFR_RNDN);
        mpfr_sqrt(r9957, r9956, MPFR_RNDN);
        mpfr_sub(r9958, r9951, r9957, MPFR_RNDN);
        mpfr_div(r9959, r9949, r9958, MPFR_RNDN);
        mpfr_mul(r9960, r9948, r9959, MPFR_RNDN);
        return mpfr_get_d(r9960, MPFR_RNDN);
}

static mpfr_t r9961, r9962, r9963, r9964, r9965, r9966, r9967, r9968, r9969, r9970, r9971, r9972, r9973, r9974;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r9961, "3", 10, MPFR_RNDN);
        mpfr_init(r9962);
        mpfr_init(r9963);
        mpfr_init(r9964);
        mpfr_init(r9965);
        mpfr_init(r9966);
        mpfr_init(r9967);
        mpfr_init(r9968);
        mpfr_init(r9969);
        mpfr_init(r9970);
        mpfr_init(r9971);
        mpfr_init(r9972);
        mpfr_init(r9973);
        mpfr_init(r9974);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        ;
        mpfr_div(r9962, r9961, r9961, MPFR_RNDN);
        mpfr_set_d(r9963, c, MPFR_RNDN);
        mpfr_set_d(r9964, b, MPFR_RNDN);
        mpfr_neg(r9965, r9964, MPFR_RNDN);
        mpfr_neg(r9966, r9963, MPFR_RNDN);
        mpfr_set_d(r9967, a, MPFR_RNDN);
        mpfr_mul(r9968, r9961, r9967, MPFR_RNDN);
        mpfr_mul(r9969, r9964, r9964, MPFR_RNDN);
        mpfr_fma(r9970, r9966, r9968, r9969, MPFR_RNDN);
        mpfr_sqrt(r9971, r9970, MPFR_RNDN);
        mpfr_sub(r9972, r9965, r9971, MPFR_RNDN);
        mpfr_div(r9973, r9963, r9972, MPFR_RNDN);
        mpfr_mul(r9974, r9962, r9973, MPFR_RNDN);
        return mpfr_get_d(r9974, MPFR_RNDN);
}

