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

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

double f_if(float a, float b, float c) {
        float r3911498 = b;
        float r3911499 = -r3911498;
        float r3911500 = r3911498 * r3911498;
        float r3911501 = 4;
        float r3911502 = a;
        float r3911503 = r3911501 * r3911502;
        float r3911504 = c;
        float r3911505 = r3911503 * r3911504;
        float r3911506 = r3911500 - r3911505;
        float r3911507 = sqrt(r3911506);
        float r3911508 = r3911499 + r3911507;
        float r3911509 = 2;
        float r3911510 = r3911509 * r3911502;
        float r3911511 = r3911508 / r3911510;
        return r3911511;
}

double f_id(double a, double b, double c) {
        double r3911512 = b;
        double r3911513 = -r3911512;
        double r3911514 = r3911512 * r3911512;
        double r3911515 = 4;
        double r3911516 = a;
        double r3911517 = r3911515 * r3911516;
        double r3911518 = c;
        double r3911519 = r3911517 * r3911518;
        double r3911520 = r3911514 - r3911519;
        double r3911521 = sqrt(r3911520);
        double r3911522 = r3911513 + r3911521;
        double r3911523 = 2;
        double r3911524 = r3911523 * r3911516;
        double r3911525 = r3911522 / r3911524;
        return r3911525;
}


double f_of(float a, float b, float c) {
        float r3911526 = 4;
        float r3911527 = 2;
        float r3911528 = r3911526 / r3911527;
        float r3911529 = c;
        float r3911530 = b;
        float r3911531 = -r3911530;
        float r3911532 = r3911530 * r3911530;
        float r3911533 = a;
        float r3911534 = r3911529 * r3911533;
        float r3911535 = r3911534 * r3911526;
        float r3911536 = r3911532 - r3911535;
        float r3911537 = sqrt(r3911536);
        float r3911538 = r3911531 - r3911537;
        float r3911539 = r3911529 / r3911538;
        float r3911540 = r3911528 * r3911539;
        return r3911540;
}

double f_od(double a, double b, double c) {
        double r3911541 = 4;
        double r3911542 = 2;
        double r3911543 = r3911541 / r3911542;
        double r3911544 = c;
        double r3911545 = b;
        double r3911546 = -r3911545;
        double r3911547 = r3911545 * r3911545;
        double r3911548 = a;
        double r3911549 = r3911544 * r3911548;
        double r3911550 = r3911549 * r3911541;
        double r3911551 = r3911547 - r3911550;
        double r3911552 = sqrt(r3911551);
        double r3911553 = r3911546 - r3911552;
        double r3911554 = r3911544 / r3911553;
        double r3911555 = r3911543 * r3911554;
        return r3911555;
}

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 r3911556, r3911557, r3911558, r3911559, r3911560, r3911561, r3911562, r3911563, r3911564, r3911565, r3911566, r3911567, r3911568, r3911569;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r3911556);
        mpfr_init(r3911557);
        mpfr_init(r3911558);
        mpfr_init_set_str(r3911559, "4", 10, MPFR_RNDN);
        mpfr_init(r3911560);
        mpfr_init(r3911561);
        mpfr_init(r3911562);
        mpfr_init(r3911563);
        mpfr_init(r3911564);
        mpfr_init(r3911565);
        mpfr_init(r3911566);
        mpfr_init_set_str(r3911567, "2", 10, MPFR_RNDN);
        mpfr_init(r3911568);
        mpfr_init(r3911569);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r3911556, b, MPFR_RNDN);
        mpfr_neg(r3911557, r3911556, MPFR_RNDN);
        mpfr_mul(r3911558, r3911556, r3911556, MPFR_RNDN);
        ;
        mpfr_set_d(r3911560, a, MPFR_RNDN);
        mpfr_mul(r3911561, r3911559, r3911560, MPFR_RNDN);
        mpfr_set_d(r3911562, c, MPFR_RNDN);
        mpfr_mul(r3911563, r3911561, r3911562, MPFR_RNDN);
        mpfr_sub(r3911564, r3911558, r3911563, MPFR_RNDN);
        mpfr_sqrt(r3911565, r3911564, MPFR_RNDN);
        mpfr_add(r3911566, r3911557, r3911565, MPFR_RNDN);
        ;
        mpfr_mul(r3911568, r3911567, r3911560, MPFR_RNDN);
        mpfr_div(r3911569, r3911566, r3911568, MPFR_RNDN);
        return mpfr_get_d(r3911569, MPFR_RNDN);
}

static mpfr_t r3911570, r3911571, r3911572, r3911573, r3911574, r3911575, r3911576, r3911577, r3911578, r3911579, r3911580, r3911581, r3911582, r3911583, r3911584;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r3911570, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r3911571, "2", 10, MPFR_RNDN);
        mpfr_init(r3911572);
        mpfr_init(r3911573);
        mpfr_init(r3911574);
        mpfr_init(r3911575);
        mpfr_init(r3911576);
        mpfr_init(r3911577);
        mpfr_init(r3911578);
        mpfr_init(r3911579);
        mpfr_init(r3911580);
        mpfr_init(r3911581);
        mpfr_init(r3911582);
        mpfr_init(r3911583);
        mpfr_init(r3911584);
}

double f_fm(double a, double b, double c) {
        ;
        ;
        mpfr_div(r3911572, r3911570, r3911571, MPFR_RNDN);
        mpfr_set_d(r3911573, c, MPFR_RNDN);
        mpfr_set_d(r3911574, b, MPFR_RNDN);
        mpfr_neg(r3911575, r3911574, MPFR_RNDN);
        mpfr_mul(r3911576, r3911574, r3911574, MPFR_RNDN);
        mpfr_set_d(r3911577, a, MPFR_RNDN);
        mpfr_mul(r3911578, r3911573, r3911577, MPFR_RNDN);
        mpfr_mul(r3911579, r3911578, r3911570, MPFR_RNDN);
        mpfr_sub(r3911580, r3911576, r3911579, MPFR_RNDN);
        mpfr_sqrt(r3911581, r3911580, MPFR_RNDN);
        mpfr_sub(r3911582, r3911575, r3911581, MPFR_RNDN);
        mpfr_div(r3911583, r3911573, r3911582, MPFR_RNDN);
        mpfr_mul(r3911584, r3911572, r3911583, MPFR_RNDN);
        return mpfr_get_d(r3911584, MPFR_RNDN);
}

static mpfr_t r3911585, r3911586, r3911587, r3911588, r3911589, r3911590, r3911591, r3911592, r3911593, r3911594, r3911595, r3911596, r3911597, r3911598, r3911599;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r3911585, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r3911586, "2", 10, MPFR_RNDN);
        mpfr_init(r3911587);
        mpfr_init(r3911588);
        mpfr_init(r3911589);
        mpfr_init(r3911590);
        mpfr_init(r3911591);
        mpfr_init(r3911592);
        mpfr_init(r3911593);
        mpfr_init(r3911594);
        mpfr_init(r3911595);
        mpfr_init(r3911596);
        mpfr_init(r3911597);
        mpfr_init(r3911598);
        mpfr_init(r3911599);
}

double f_dm(double a, double b, double c) {
        ;
        ;
        mpfr_div(r3911587, r3911585, r3911586, MPFR_RNDN);
        mpfr_set_d(r3911588, c, MPFR_RNDN);
        mpfr_set_d(r3911589, b, MPFR_RNDN);
        mpfr_neg(r3911590, r3911589, MPFR_RNDN);
        mpfr_mul(r3911591, r3911589, r3911589, MPFR_RNDN);
        mpfr_set_d(r3911592, a, MPFR_RNDN);
        mpfr_mul(r3911593, r3911588, r3911592, MPFR_RNDN);
        mpfr_mul(r3911594, r3911593, r3911585, MPFR_RNDN);
        mpfr_sub(r3911595, r3911591, r3911594, MPFR_RNDN);
        mpfr_sqrt(r3911596, r3911595, MPFR_RNDN);
        mpfr_sub(r3911597, r3911590, r3911596, MPFR_RNDN);
        mpfr_div(r3911598, r3911588, r3911597, MPFR_RNDN);
        mpfr_mul(r3911599, r3911587, r3911598, MPFR_RNDN);
        return mpfr_get_d(r3911599, MPFR_RNDN);
}

