#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 r8507 = b;
        float r8508 = -r8507;
        float r8509 = r8507 * r8507;
        float r8510 = 4;
        float r8511 = a;
        float r8512 = r8510 * r8511;
        float r8513 = c;
        float r8514 = r8512 * r8513;
        float r8515 = r8509 - r8514;
        float r8516 = sqrt(r8515);
        float r8517 = r8508 + r8516;
        float r8518 = 2;
        float r8519 = r8518 * r8511;
        float r8520 = r8517 / r8519;
        return r8520;
}

double f_id(double a, double b, double c) {
        double r8521 = b;
        double r8522 = -r8521;
        double r8523 = r8521 * r8521;
        double r8524 = 4;
        double r8525 = a;
        double r8526 = r8524 * r8525;
        double r8527 = c;
        double r8528 = r8526 * r8527;
        double r8529 = r8523 - r8528;
        double r8530 = sqrt(r8529);
        double r8531 = r8522 + r8530;
        double r8532 = 2;
        double r8533 = r8532 * r8525;
        double r8534 = r8531 / r8533;
        return r8534;
}


double f_of(float a, float b, float c) {
        float r8535 = 1;
        float r8536 = 2;
        float r8537 = r8535 / r8536;
        float r8538 = c;
        float r8539 = 4;
        float r8540 = r8538 * r8539;
        float r8541 = b;
        float r8542 = -r8541;
        float r8543 = r8541 * r8541;
        float r8544 = a;
        float r8545 = r8544 * r8539;
        float r8546 = r8545 * r8538;
        float r8547 = r8543 - r8546;
        float r8548 = sqrt(r8547);
        float r8549 = r8542 - r8548;
        float r8550 = r8540 / r8549;
        float r8551 = r8537 * r8550;
        return r8551;
}

double f_od(double a, double b, double c) {
        double r8552 = 1;
        double r8553 = 2;
        double r8554 = r8552 / r8553;
        double r8555 = c;
        double r8556 = 4;
        double r8557 = r8555 * r8556;
        double r8558 = b;
        double r8559 = -r8558;
        double r8560 = r8558 * r8558;
        double r8561 = a;
        double r8562 = r8561 * r8556;
        double r8563 = r8562 * r8555;
        double r8564 = r8560 - r8563;
        double r8565 = sqrt(r8564);
        double r8566 = r8559 - r8565;
        double r8567 = r8557 / r8566;
        double r8568 = r8554 * r8567;
        return r8568;
}

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 r8569, r8570, r8571, r8572, r8573, r8574, r8575, r8576, r8577, r8578, r8579, r8580, r8581, r8582;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8569);
        mpfr_init(r8570);
        mpfr_init(r8571);
        mpfr_init_set_str(r8572, "4", 10, MPFR_RNDN);
        mpfr_init(r8573);
        mpfr_init(r8574);
        mpfr_init(r8575);
        mpfr_init(r8576);
        mpfr_init(r8577);
        mpfr_init(r8578);
        mpfr_init(r8579);
        mpfr_init_set_str(r8580, "2", 10, MPFR_RNDN);
        mpfr_init(r8581);
        mpfr_init(r8582);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r8569, b, MPFR_RNDN);
        mpfr_neg(r8570, r8569, MPFR_RNDN);
        mpfr_mul(r8571, r8569, r8569, MPFR_RNDN);
        ;
        mpfr_set_d(r8573, a, MPFR_RNDN);
        mpfr_mul(r8574, r8572, r8573, MPFR_RNDN);
        mpfr_set_d(r8575, c, MPFR_RNDN);
        mpfr_mul(r8576, r8574, r8575, MPFR_RNDN);
        mpfr_sub(r8577, r8571, r8576, MPFR_RNDN);
        mpfr_sqrt(r8578, r8577, MPFR_RNDN);
        mpfr_add(r8579, r8570, r8578, MPFR_RNDN);
        ;
        mpfr_mul(r8581, r8580, r8573, MPFR_RNDN);
        mpfr_div(r8582, r8579, r8581, MPFR_RNDN);
        return mpfr_get_d(r8582, MPFR_RNDN);
}

static mpfr_t r8583, r8584, r8585, r8586, r8587, r8588, r8589, r8590, r8591, r8592, r8593, r8594, r8595, r8596, r8597, r8598, r8599;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8583, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8584, "2", 10, MPFR_RNDN);
        mpfr_init(r8585);
        mpfr_init(r8586);
        mpfr_init_set_str(r8587, "4", 10, MPFR_RNDN);
        mpfr_init(r8588);
        mpfr_init(r8589);
        mpfr_init(r8590);
        mpfr_init(r8591);
        mpfr_init(r8592);
        mpfr_init(r8593);
        mpfr_init(r8594);
        mpfr_init(r8595);
        mpfr_init(r8596);
        mpfr_init(r8597);
        mpfr_init(r8598);
        mpfr_init(r8599);
}

double f_fm(double a, double b, double c) {
        ;
        ;
        mpfr_div(r8585, r8583, r8584, MPFR_RNDN);
        mpfr_set_d(r8586, c, MPFR_RNDN);
        ;
        mpfr_mul(r8588, r8586, r8587, MPFR_RNDN);
        mpfr_set_d(r8589, b, MPFR_RNDN);
        mpfr_neg(r8590, r8589, MPFR_RNDN);
        mpfr_mul(r8591, r8589, r8589, MPFR_RNDN);
        mpfr_set_d(r8592, a, MPFR_RNDN);
        mpfr_mul(r8593, r8592, r8587, MPFR_RNDN);
        mpfr_mul(r8594, r8593, r8586, MPFR_RNDN);
        mpfr_sub(r8595, r8591, r8594, MPFR_RNDN);
        mpfr_sqrt(r8596, r8595, MPFR_RNDN);
        mpfr_sub(r8597, r8590, r8596, MPFR_RNDN);
        mpfr_div(r8598, r8588, r8597, MPFR_RNDN);
        mpfr_mul(r8599, r8585, r8598, MPFR_RNDN);
        return mpfr_get_d(r8599, MPFR_RNDN);
}

static mpfr_t r8600, r8601, r8602, r8603, r8604, r8605, r8606, r8607, r8608, r8609, r8610, r8611, r8612, r8613, r8614, r8615, r8616;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8600, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8601, "2", 10, MPFR_RNDN);
        mpfr_init(r8602);
        mpfr_init(r8603);
        mpfr_init_set_str(r8604, "4", 10, MPFR_RNDN);
        mpfr_init(r8605);
        mpfr_init(r8606);
        mpfr_init(r8607);
        mpfr_init(r8608);
        mpfr_init(r8609);
        mpfr_init(r8610);
        mpfr_init(r8611);
        mpfr_init(r8612);
        mpfr_init(r8613);
        mpfr_init(r8614);
        mpfr_init(r8615);
        mpfr_init(r8616);
}

double f_dm(double a, double b, double c) {
        ;
        ;
        mpfr_div(r8602, r8600, r8601, MPFR_RNDN);
        mpfr_set_d(r8603, c, MPFR_RNDN);
        ;
        mpfr_mul(r8605, r8603, r8604, MPFR_RNDN);
        mpfr_set_d(r8606, b, MPFR_RNDN);
        mpfr_neg(r8607, r8606, MPFR_RNDN);
        mpfr_mul(r8608, r8606, r8606, MPFR_RNDN);
        mpfr_set_d(r8609, a, MPFR_RNDN);
        mpfr_mul(r8610, r8609, r8604, MPFR_RNDN);
        mpfr_mul(r8611, r8610, r8603, MPFR_RNDN);
        mpfr_sub(r8612, r8608, r8611, MPFR_RNDN);
        mpfr_sqrt(r8613, r8612, MPFR_RNDN);
        mpfr_sub(r8614, r8607, r8613, MPFR_RNDN);
        mpfr_div(r8615, r8605, r8614, MPFR_RNDN);
        mpfr_mul(r8616, r8602, r8615, MPFR_RNDN);
        return mpfr_get_d(r8616, MPFR_RNDN);
}

