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

char *name = "Quadratic roots, wide range";

double f_if(float a, float b, float c) {
        float r7864 = b;
        float r7865 = -r7864;
        float r7866 = r7864 * r7864;
        float r7867 = 4.0f;
        float r7868 = a;
        float r7869 = r7867 * r7868;
        float r7870 = c;
        float r7871 = r7869 * r7870;
        float r7872 = r7866 - r7871;
        float r7873 = sqrt(r7872);
        float r7874 = r7865 + r7873;
        float r7875 = 2.0f;
        float r7876 = r7875 * r7868;
        float r7877 = r7874 / r7876;
        return r7877;
}

double f_id(double a, double b, double c) {
        double r7878 = b;
        double r7879 = -r7878;
        double r7880 = r7878 * r7878;
        double r7881 = 4.0;
        double r7882 = a;
        double r7883 = r7881 * r7882;
        double r7884 = c;
        double r7885 = r7883 * r7884;
        double r7886 = r7880 - r7885;
        double r7887 = sqrt(r7886);
        double r7888 = r7879 + r7887;
        double r7889 = 2.0;
        double r7890 = r7889 * r7882;
        double r7891 = r7888 / r7890;
        return r7891;
}


double f_of(float a, float b, float c) {
        float r7892 = 4.0f;
        float r7893 = 2.0f;
        float r7894 = r7892 / r7893;
        float r7895 = c;
        float r7896 = -r7895;
        float r7897 = b;
        float r7898 = r7897 * r7897;
        float r7899 = a;
        float r7900 = r7895 * r7899;
        float r7901 = r7892 * r7900;
        float r7902 = r7898 - r7901;
        float r7903 = r7902 * r7902;
        float r7904 = r7902 * r7903;
        float r7905 = cbrt(r7904);
        float r7906 = sqrt(r7905);
        float r7907 = r7897 + r7906;
        float r7908 = r7896 / r7907;
        float r7909 = r7894 * r7908;
        return r7909;
}

double f_od(double a, double b, double c) {
        double r7910 = 4.0;
        double r7911 = 2.0;
        double r7912 = r7910 / r7911;
        double r7913 = c;
        double r7914 = -r7913;
        double r7915 = b;
        double r7916 = r7915 * r7915;
        double r7917 = a;
        double r7918 = r7913 * r7917;
        double r7919 = r7910 * r7918;
        double r7920 = r7916 - r7919;
        double r7921 = r7920 * r7920;
        double r7922 = r7920 * r7921;
        double r7923 = cbrt(r7922);
        double r7924 = sqrt(r7923);
        double r7925 = r7915 + r7924;
        double r7926 = r7914 / r7925;
        double r7927 = r7912 * r7926;
        return r7927;
}

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 r7928, r7929, r7930, r7931, r7932, r7933, r7934, r7935, r7936, r7937, r7938, r7939, r7940, r7941;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init(r7928);
        mpfr_init(r7929);
        mpfr_init(r7930);
        mpfr_init_set_str(r7931, "4", 10, MPFR_RNDN);
        mpfr_init(r7932);
        mpfr_init(r7933);
        mpfr_init(r7934);
        mpfr_init(r7935);
        mpfr_init(r7936);
        mpfr_init(r7937);
        mpfr_init(r7938);
        mpfr_init_set_str(r7939, "2", 10, MPFR_RNDN);
        mpfr_init(r7940);
        mpfr_init(r7941);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r7928, b, MPFR_RNDN);
        mpfr_neg(r7929, r7928, MPFR_RNDN);
        mpfr_mul(r7930, r7928, r7928, MPFR_RNDN);
        ;
        mpfr_set_d(r7932, a, MPFR_RNDN);
        mpfr_mul(r7933, r7931, r7932, MPFR_RNDN);
        mpfr_set_d(r7934, c, MPFR_RNDN);
        mpfr_mul(r7935, r7933, r7934, MPFR_RNDN);
        mpfr_sub(r7936, r7930, r7935, MPFR_RNDN);
        mpfr_sqrt(r7937, r7936, MPFR_RNDN);
        mpfr_add(r7938, r7929, r7937, MPFR_RNDN);
        ;
        mpfr_mul(r7940, r7939, r7932, MPFR_RNDN);
        mpfr_div(r7941, r7938, r7940, MPFR_RNDN);
        return mpfr_get_d(r7941, MPFR_RNDN);
}

static mpfr_t r7942, r7943, r7944, r7945, r7946, r7947, r7948, r7949, r7950, r7951, r7952, r7953, r7954, r7955, r7956, r7957, r7958, r7959;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r7942, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r7943, "2", 10, MPFR_RNDN);
        mpfr_init(r7944);
        mpfr_init(r7945);
        mpfr_init(r7946);
        mpfr_init(r7947);
        mpfr_init(r7948);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init(r7953);
        mpfr_init(r7954);
        mpfr_init(r7955);
        mpfr_init(r7956);
        mpfr_init(r7957);
        mpfr_init(r7958);
        mpfr_init(r7959);
}

double f_fm(double a, double b, double c) {
        ;
        ;
        mpfr_div(r7944, r7942, r7943, MPFR_RNDN);
        mpfr_set_d(r7945, c, MPFR_RNDN);
        mpfr_neg(r7946, r7945, MPFR_RNDN);
        mpfr_set_d(r7947, b, MPFR_RNDN);
        mpfr_mul(r7948, r7947, r7947, MPFR_RNDN);
        mpfr_set_d(r7949, a, MPFR_RNDN);
        mpfr_mul(r7950, r7945, r7949, MPFR_RNDN);
        mpfr_mul(r7951, r7942, r7950, MPFR_RNDN);
        mpfr_sub(r7952, r7948, r7951, MPFR_RNDN);
        mpfr_mul(r7953, r7952, r7952, MPFR_RNDN);
        mpfr_mul(r7954, r7952, r7953, MPFR_RNDN);
        mpfr_cbrt(r7955, r7954, MPFR_RNDN);
        mpfr_sqrt(r7956, r7955, MPFR_RNDN);
        mpfr_add(r7957, r7947, r7956, MPFR_RNDN);
        mpfr_div(r7958, r7946, r7957, MPFR_RNDN);
        mpfr_mul(r7959, r7944, r7958, MPFR_RNDN);
        return mpfr_get_d(r7959, MPFR_RNDN);
}

static mpfr_t r7960, r7961, r7962, r7963, r7964, r7965, r7966, r7967, r7968, r7969, r7970, r7971, r7972, r7973, r7974, r7975, r7976, r7977;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r7960, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r7961, "2", 10, MPFR_RNDN);
        mpfr_init(r7962);
        mpfr_init(r7963);
        mpfr_init(r7964);
        mpfr_init(r7965);
        mpfr_init(r7966);
        mpfr_init(r7967);
        mpfr_init(r7968);
        mpfr_init(r7969);
        mpfr_init(r7970);
        mpfr_init(r7971);
        mpfr_init(r7972);
        mpfr_init(r7973);
        mpfr_init(r7974);
        mpfr_init(r7975);
        mpfr_init(r7976);
        mpfr_init(r7977);
}

double f_dm(double a, double b, double c) {
        ;
        ;
        mpfr_div(r7962, r7960, r7961, MPFR_RNDN);
        mpfr_set_d(r7963, c, MPFR_RNDN);
        mpfr_neg(r7964, r7963, MPFR_RNDN);
        mpfr_set_d(r7965, b, MPFR_RNDN);
        mpfr_mul(r7966, r7965, r7965, MPFR_RNDN);
        mpfr_set_d(r7967, a, MPFR_RNDN);
        mpfr_mul(r7968, r7963, r7967, MPFR_RNDN);
        mpfr_mul(r7969, r7960, r7968, MPFR_RNDN);
        mpfr_sub(r7970, r7966, r7969, MPFR_RNDN);
        mpfr_mul(r7971, r7970, r7970, MPFR_RNDN);
        mpfr_mul(r7972, r7970, r7971, MPFR_RNDN);
        mpfr_cbrt(r7973, r7972, MPFR_RNDN);
        mpfr_sqrt(r7974, r7973, MPFR_RNDN);
        mpfr_add(r7975, r7965, r7974, MPFR_RNDN);
        mpfr_div(r7976, r7964, r7975, MPFR_RNDN);
        mpfr_mul(r7977, r7962, r7976, MPFR_RNDN);
        return mpfr_get_d(r7977, MPFR_RNDN);
}

