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

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

double f_if(float a, float b, float c) {
        float r3911388 = b;
        float r3911389 = -r3911388;
        float r3911390 = r3911388 * r3911388;
        float r3911391 = 4;
        float r3911392 = a;
        float r3911393 = r3911391 * r3911392;
        float r3911394 = c;
        float r3911395 = r3911393 * r3911394;
        float r3911396 = r3911390 - r3911395;
        float r3911397 = sqrt(r3911396);
        float r3911398 = r3911389 + r3911397;
        float r3911399 = 2;
        float r3911400 = r3911399 * r3911392;
        float r3911401 = r3911398 / r3911400;
        return r3911401;
}

double f_id(double a, double b, double c) {
        double r3911402 = b;
        double r3911403 = -r3911402;
        double r3911404 = r3911402 * r3911402;
        double r3911405 = 4;
        double r3911406 = a;
        double r3911407 = r3911405 * r3911406;
        double r3911408 = c;
        double r3911409 = r3911407 * r3911408;
        double r3911410 = r3911404 - r3911409;
        double r3911411 = sqrt(r3911410);
        double r3911412 = r3911403 + r3911411;
        double r3911413 = 2;
        double r3911414 = r3911413 * r3911406;
        double r3911415 = r3911412 / r3911414;
        return r3911415;
}


double f_of(float a, float b, float c) {
        float r3911416 = 1;
        float r3911417 = b;
        float r3911418 = -r3911417;
        float r3911419 = r3911417 * r3911417;
        float r3911420 = 4;
        float r3911421 = a;
        float r3911422 = c;
        float r3911423 = r3911421 * r3911422;
        float r3911424 = r3911420 * r3911423;
        float r3911425 = r3911419 - r3911424;
        float r3911426 = sqrt(r3911425);
        float r3911427 = r3911418 - r3911426;
        float r3911428 = 2;
        float r3911429 = r3911428 / r3911420;
        float r3911430 = r3911429 / r3911422;
        float r3911431 = r3911427 * r3911430;
        float r3911432 = r3911416 / r3911431;
        return r3911432;
}

double f_od(double a, double b, double c) {
        double r3911433 = 1;
        double r3911434 = b;
        double r3911435 = -r3911434;
        double r3911436 = r3911434 * r3911434;
        double r3911437 = 4;
        double r3911438 = a;
        double r3911439 = c;
        double r3911440 = r3911438 * r3911439;
        double r3911441 = r3911437 * r3911440;
        double r3911442 = r3911436 - r3911441;
        double r3911443 = sqrt(r3911442);
        double r3911444 = r3911435 - r3911443;
        double r3911445 = 2;
        double r3911446 = r3911445 / r3911437;
        double r3911447 = r3911446 / r3911439;
        double r3911448 = r3911444 * r3911447;
        double r3911449 = r3911433 / r3911448;
        return r3911449;
}

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 r3911450, r3911451, r3911452, r3911453, r3911454, r3911455, r3911456, r3911457, r3911458, r3911459, r3911460, r3911461, r3911462, r3911463;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r3911450);
        mpfr_init(r3911451);
        mpfr_init(r3911452);
        mpfr_init_set_str(r3911453, "4", 10, MPFR_RNDN);
        mpfr_init(r3911454);
        mpfr_init(r3911455);
        mpfr_init(r3911456);
        mpfr_init(r3911457);
        mpfr_init(r3911458);
        mpfr_init(r3911459);
        mpfr_init(r3911460);
        mpfr_init_set_str(r3911461, "2", 10, MPFR_RNDN);
        mpfr_init(r3911462);
        mpfr_init(r3911463);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r3911450, b, MPFR_RNDN);
        mpfr_neg(r3911451, r3911450, MPFR_RNDN);
        mpfr_mul(r3911452, r3911450, r3911450, MPFR_RNDN);
        ;
        mpfr_set_d(r3911454, a, MPFR_RNDN);
        mpfr_mul(r3911455, r3911453, r3911454, MPFR_RNDN);
        mpfr_set_d(r3911456, c, MPFR_RNDN);
        mpfr_mul(r3911457, r3911455, r3911456, MPFR_RNDN);
        mpfr_sub(r3911458, r3911452, r3911457, MPFR_RNDN);
        mpfr_sqrt(r3911459, r3911458, MPFR_RNDN);
        mpfr_add(r3911460, r3911451, r3911459, MPFR_RNDN);
        ;
        mpfr_mul(r3911462, r3911461, r3911454, MPFR_RNDN);
        mpfr_div(r3911463, r3911460, r3911462, MPFR_RNDN);
        return mpfr_get_d(r3911463, MPFR_RNDN);
}

static mpfr_t r3911464, r3911465, r3911466, r3911467, r3911468, r3911469, r3911470, r3911471, r3911472, r3911473, r3911474, r3911475, r3911476, r3911477, r3911478, r3911479, r3911480;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r3911464, "1", 10, MPFR_RNDN);
        mpfr_init(r3911465);
        mpfr_init(r3911466);
        mpfr_init(r3911467);
        mpfr_init_set_str(r3911468, "4", 10, MPFR_RNDN);
        mpfr_init(r3911469);
        mpfr_init(r3911470);
        mpfr_init(r3911471);
        mpfr_init(r3911472);
        mpfr_init(r3911473);
        mpfr_init(r3911474);
        mpfr_init(r3911475);
        mpfr_init_set_str(r3911476, "2", 10, MPFR_RNDN);
        mpfr_init(r3911477);
        mpfr_init(r3911478);
        mpfr_init(r3911479);
        mpfr_init(r3911480);
}

double f_fm(double a, double b, double c) {
        ;
        mpfr_set_d(r3911465, b, MPFR_RNDN);
        mpfr_neg(r3911466, r3911465, MPFR_RNDN);
        mpfr_mul(r3911467, r3911465, r3911465, MPFR_RNDN);
        ;
        mpfr_set_d(r3911469, a, MPFR_RNDN);
        mpfr_set_d(r3911470, c, MPFR_RNDN);
        mpfr_mul(r3911471, r3911469, r3911470, MPFR_RNDN);
        mpfr_mul(r3911472, r3911468, r3911471, MPFR_RNDN);
        mpfr_sub(r3911473, r3911467, r3911472, MPFR_RNDN);
        mpfr_sqrt(r3911474, r3911473, MPFR_RNDN);
        mpfr_sub(r3911475, r3911466, r3911474, MPFR_RNDN);
        ;
        mpfr_div(r3911477, r3911476, r3911468, MPFR_RNDN);
        mpfr_div(r3911478, r3911477, r3911470, MPFR_RNDN);
        mpfr_mul(r3911479, r3911475, r3911478, MPFR_RNDN);
        mpfr_div(r3911480, r3911464, r3911479, MPFR_RNDN);
        return mpfr_get_d(r3911480, MPFR_RNDN);
}

static mpfr_t r3911481, r3911482, r3911483, r3911484, r3911485, r3911486, r3911487, r3911488, r3911489, r3911490, r3911491, r3911492, r3911493, r3911494, r3911495, r3911496, r3911497;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r3911481, "1", 10, MPFR_RNDN);
        mpfr_init(r3911482);
        mpfr_init(r3911483);
        mpfr_init(r3911484);
        mpfr_init_set_str(r3911485, "4", 10, MPFR_RNDN);
        mpfr_init(r3911486);
        mpfr_init(r3911487);
        mpfr_init(r3911488);
        mpfr_init(r3911489);
        mpfr_init(r3911490);
        mpfr_init(r3911491);
        mpfr_init(r3911492);
        mpfr_init_set_str(r3911493, "2", 10, MPFR_RNDN);
        mpfr_init(r3911494);
        mpfr_init(r3911495);
        mpfr_init(r3911496);
        mpfr_init(r3911497);
}

double f_dm(double a, double b, double c) {
        ;
        mpfr_set_d(r3911482, b, MPFR_RNDN);
        mpfr_neg(r3911483, r3911482, MPFR_RNDN);
        mpfr_mul(r3911484, r3911482, r3911482, MPFR_RNDN);
        ;
        mpfr_set_d(r3911486, a, MPFR_RNDN);
        mpfr_set_d(r3911487, c, MPFR_RNDN);
        mpfr_mul(r3911488, r3911486, r3911487, MPFR_RNDN);
        mpfr_mul(r3911489, r3911485, r3911488, MPFR_RNDN);
        mpfr_sub(r3911490, r3911484, r3911489, MPFR_RNDN);
        mpfr_sqrt(r3911491, r3911490, MPFR_RNDN);
        mpfr_sub(r3911492, r3911483, r3911491, MPFR_RNDN);
        ;
        mpfr_div(r3911494, r3911493, r3911485, MPFR_RNDN);
        mpfr_div(r3911495, r3911494, r3911487, MPFR_RNDN);
        mpfr_mul(r3911496, r3911492, r3911495, MPFR_RNDN);
        mpfr_div(r3911497, r3911481, r3911496, MPFR_RNDN);
        return mpfr_get_d(r3911497, MPFR_RNDN);
}

