#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 r18360460 = b;
        float r18360461 = -r18360460;
        float r18360462 = r18360460 * r18360460;
        float r18360463 = 4;
        float r18360464 = a;
        float r18360465 = r18360463 * r18360464;
        float r18360466 = c;
        float r18360467 = r18360465 * r18360466;
        float r18360468 = r18360462 - r18360467;
        float r18360469 = sqrt(r18360468);
        float r18360470 = r18360461 + r18360469;
        float r18360471 = 2;
        float r18360472 = r18360471 * r18360464;
        float r18360473 = r18360470 / r18360472;
        return r18360473;
}

double f_id(double a, double b, double c) {
        double r18360474 = b;
        double r18360475 = -r18360474;
        double r18360476 = r18360474 * r18360474;
        double r18360477 = 4;
        double r18360478 = a;
        double r18360479 = r18360477 * r18360478;
        double r18360480 = c;
        double r18360481 = r18360479 * r18360480;
        double r18360482 = r18360476 - r18360481;
        double r18360483 = sqrt(r18360482);
        double r18360484 = r18360475 + r18360483;
        double r18360485 = 2;
        double r18360486 = r18360485 * r18360478;
        double r18360487 = r18360484 / r18360486;
        return r18360487;
}


double f_of(float a, float b, float c) {
        float r18360488 = 1;
        float r18360489 = b;
        float r18360490 = -r18360489;
        float r18360491 = r18360489 * r18360489;
        float r18360492 = 4;
        float r18360493 = a;
        float r18360494 = c;
        float r18360495 = r18360493 * r18360494;
        float r18360496 = r18360492 * r18360495;
        float r18360497 = r18360491 - r18360496;
        float r18360498 = sqrt(r18360497);
        float r18360499 = r18360490 - r18360498;
        float r18360500 = 2;
        float r18360501 = r18360500 / r18360492;
        float r18360502 = r18360501 / r18360494;
        float r18360503 = r18360499 * r18360502;
        float r18360504 = r18360488 / r18360503;
        return r18360504;
}

double f_od(double a, double b, double c) {
        double r18360505 = 1;
        double r18360506 = b;
        double r18360507 = -r18360506;
        double r18360508 = r18360506 * r18360506;
        double r18360509 = 4;
        double r18360510 = a;
        double r18360511 = c;
        double r18360512 = r18360510 * r18360511;
        double r18360513 = r18360509 * r18360512;
        double r18360514 = r18360508 - r18360513;
        double r18360515 = sqrt(r18360514);
        double r18360516 = r18360507 - r18360515;
        double r18360517 = 2;
        double r18360518 = r18360517 / r18360509;
        double r18360519 = r18360518 / r18360511;
        double r18360520 = r18360516 * r18360519;
        double r18360521 = r18360505 / r18360520;
        return r18360521;
}

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 r18360522, r18360523, r18360524, r18360525, r18360526, r18360527, r18360528, r18360529, r18360530, r18360531, r18360532, r18360533, r18360534, r18360535;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r18360522);
        mpfr_init(r18360523);
        mpfr_init(r18360524);
        mpfr_init_set_str(r18360525, "4", 10, MPFR_RNDN);
        mpfr_init(r18360526);
        mpfr_init(r18360527);
        mpfr_init(r18360528);
        mpfr_init(r18360529);
        mpfr_init(r18360530);
        mpfr_init(r18360531);
        mpfr_init(r18360532);
        mpfr_init_set_str(r18360533, "2", 10, MPFR_RNDN);
        mpfr_init(r18360534);
        mpfr_init(r18360535);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r18360522, b, MPFR_RNDN);
        mpfr_neg(r18360523, r18360522, MPFR_RNDN);
        mpfr_mul(r18360524, r18360522, r18360522, MPFR_RNDN);
        ;
        mpfr_set_d(r18360526, a, MPFR_RNDN);
        mpfr_mul(r18360527, r18360525, r18360526, MPFR_RNDN);
        mpfr_set_d(r18360528, c, MPFR_RNDN);
        mpfr_mul(r18360529, r18360527, r18360528, MPFR_RNDN);
        mpfr_sub(r18360530, r18360524, r18360529, MPFR_RNDN);
        mpfr_sqrt(r18360531, r18360530, MPFR_RNDN);
        mpfr_add(r18360532, r18360523, r18360531, MPFR_RNDN);
        ;
        mpfr_mul(r18360534, r18360533, r18360526, MPFR_RNDN);
        mpfr_div(r18360535, r18360532, r18360534, MPFR_RNDN);
        return mpfr_get_d(r18360535, MPFR_RNDN);
}

static mpfr_t r18360536, r18360537, r18360538, r18360539, r18360540, r18360541, r18360542, r18360543, r18360544, r18360545, r18360546, r18360547, r18360548, r18360549, r18360550, r18360551, r18360552;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r18360536, "1", 10, MPFR_RNDN);
        mpfr_init(r18360537);
        mpfr_init(r18360538);
        mpfr_init(r18360539);
        mpfr_init_set_str(r18360540, "4", 10, MPFR_RNDN);
        mpfr_init(r18360541);
        mpfr_init(r18360542);
        mpfr_init(r18360543);
        mpfr_init(r18360544);
        mpfr_init(r18360545);
        mpfr_init(r18360546);
        mpfr_init(r18360547);
        mpfr_init_set_str(r18360548, "2", 10, MPFR_RNDN);
        mpfr_init(r18360549);
        mpfr_init(r18360550);
        mpfr_init(r18360551);
        mpfr_init(r18360552);
}

double f_fm(double a, double b, double c) {
        ;
        mpfr_set_d(r18360537, b, MPFR_RNDN);
        mpfr_neg(r18360538, r18360537, MPFR_RNDN);
        mpfr_mul(r18360539, r18360537, r18360537, MPFR_RNDN);
        ;
        mpfr_set_d(r18360541, a, MPFR_RNDN);
        mpfr_set_d(r18360542, c, MPFR_RNDN);
        mpfr_mul(r18360543, r18360541, r18360542, MPFR_RNDN);
        mpfr_mul(r18360544, r18360540, r18360543, MPFR_RNDN);
        mpfr_sub(r18360545, r18360539, r18360544, MPFR_RNDN);
        mpfr_sqrt(r18360546, r18360545, MPFR_RNDN);
        mpfr_sub(r18360547, r18360538, r18360546, MPFR_RNDN);
        ;
        mpfr_div(r18360549, r18360548, r18360540, MPFR_RNDN);
        mpfr_div(r18360550, r18360549, r18360542, MPFR_RNDN);
        mpfr_mul(r18360551, r18360547, r18360550, MPFR_RNDN);
        mpfr_div(r18360552, r18360536, r18360551, MPFR_RNDN);
        return mpfr_get_d(r18360552, MPFR_RNDN);
}

static mpfr_t r18360553, r18360554, r18360555, r18360556, r18360557, r18360558, r18360559, r18360560, r18360561, r18360562, r18360563, r18360564, r18360565, r18360566, r18360567, r18360568, r18360569;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r18360553, "1", 10, MPFR_RNDN);
        mpfr_init(r18360554);
        mpfr_init(r18360555);
        mpfr_init(r18360556);
        mpfr_init_set_str(r18360557, "4", 10, MPFR_RNDN);
        mpfr_init(r18360558);
        mpfr_init(r18360559);
        mpfr_init(r18360560);
        mpfr_init(r18360561);
        mpfr_init(r18360562);
        mpfr_init(r18360563);
        mpfr_init(r18360564);
        mpfr_init_set_str(r18360565, "2", 10, MPFR_RNDN);
        mpfr_init(r18360566);
        mpfr_init(r18360567);
        mpfr_init(r18360568);
        mpfr_init(r18360569);
}

double f_dm(double a, double b, double c) {
        ;
        mpfr_set_d(r18360554, b, MPFR_RNDN);
        mpfr_neg(r18360555, r18360554, MPFR_RNDN);
        mpfr_mul(r18360556, r18360554, r18360554, MPFR_RNDN);
        ;
        mpfr_set_d(r18360558, a, MPFR_RNDN);
        mpfr_set_d(r18360559, c, MPFR_RNDN);
        mpfr_mul(r18360560, r18360558, r18360559, MPFR_RNDN);
        mpfr_mul(r18360561, r18360557, r18360560, MPFR_RNDN);
        mpfr_sub(r18360562, r18360556, r18360561, MPFR_RNDN);
        mpfr_sqrt(r18360563, r18360562, MPFR_RNDN);
        mpfr_sub(r18360564, r18360555, r18360563, MPFR_RNDN);
        ;
        mpfr_div(r18360566, r18360565, r18360557, MPFR_RNDN);
        mpfr_div(r18360567, r18360566, r18360559, MPFR_RNDN);
        mpfr_mul(r18360568, r18360564, r18360567, MPFR_RNDN);
        mpfr_div(r18360569, r18360553, r18360568, MPFR_RNDN);
        return mpfr_get_d(r18360569, MPFR_RNDN);
}

