#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 r8397 = b;
        float r8398 = -r8397;
        float r8399 = r8397 * r8397;
        float r8400 = 4;
        float r8401 = a;
        float r8402 = r8400 * r8401;
        float r8403 = c;
        float r8404 = r8402 * r8403;
        float r8405 = r8399 - r8404;
        float r8406 = sqrt(r8405);
        float r8407 = r8398 + r8406;
        float r8408 = 2;
        float r8409 = r8408 * r8401;
        float r8410 = r8407 / r8409;
        return r8410;
}

double f_id(double a, double b, double c) {
        double r8411 = b;
        double r8412 = -r8411;
        double r8413 = r8411 * r8411;
        double r8414 = 4;
        double r8415 = a;
        double r8416 = r8414 * r8415;
        double r8417 = c;
        double r8418 = r8416 * r8417;
        double r8419 = r8413 - r8418;
        double r8420 = sqrt(r8419);
        double r8421 = r8412 + r8420;
        double r8422 = 2;
        double r8423 = r8422 * r8415;
        double r8424 = r8421 / r8423;
        return r8424;
}


double f_of(float a, float b, float c) {
        float r8425 = 1;
        float r8426 = 2;
        float r8427 = r8425 / r8426;
        float r8428 = c;
        float r8429 = 4;
        float r8430 = r8428 * r8429;
        float r8431 = b;
        float r8432 = -r8431;
        float r8433 = r8431 * r8431;
        float r8434 = a;
        float r8435 = r8434 * r8429;
        float r8436 = r8435 * r8428;
        float r8437 = r8433 - r8436;
        float r8438 = sqrt(r8437);
        float r8439 = r8432 - r8438;
        float r8440 = r8430 / r8439;
        float r8441 = r8427 * r8440;
        return r8441;
}

double f_od(double a, double b, double c) {
        double r8442 = 1;
        double r8443 = 2;
        double r8444 = r8442 / r8443;
        double r8445 = c;
        double r8446 = 4;
        double r8447 = r8445 * r8446;
        double r8448 = b;
        double r8449 = -r8448;
        double r8450 = r8448 * r8448;
        double r8451 = a;
        double r8452 = r8451 * r8446;
        double r8453 = r8452 * r8445;
        double r8454 = r8450 - r8453;
        double r8455 = sqrt(r8454);
        double r8456 = r8449 - r8455;
        double r8457 = r8447 / r8456;
        double r8458 = r8444 * r8457;
        return r8458;
}

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 r8459, r8460, r8461, r8462, r8463, r8464, r8465, r8466, r8467, r8468, r8469, r8470, r8471, r8472;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(848);
        mpfr_init(r8459);
        mpfr_init(r8460);
        mpfr_init(r8461);
        mpfr_init_set_str(r8462, "4", 10, MPFR_RNDN);
        mpfr_init(r8463);
        mpfr_init(r8464);
        mpfr_init(r8465);
        mpfr_init(r8466);
        mpfr_init(r8467);
        mpfr_init(r8468);
        mpfr_init(r8469);
        mpfr_init_set_str(r8470, "2", 10, MPFR_RNDN);
        mpfr_init(r8471);
        mpfr_init(r8472);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r8459, b, MPFR_RNDN);
        mpfr_neg(r8460, r8459, MPFR_RNDN);
        mpfr_mul(r8461, r8459, r8459, MPFR_RNDN);
        ;
        mpfr_set_d(r8463, a, MPFR_RNDN);
        mpfr_mul(r8464, r8462, r8463, MPFR_RNDN);
        mpfr_set_d(r8465, c, MPFR_RNDN);
        mpfr_mul(r8466, r8464, r8465, MPFR_RNDN);
        mpfr_sub(r8467, r8461, r8466, MPFR_RNDN);
        mpfr_sqrt(r8468, r8467, MPFR_RNDN);
        mpfr_add(r8469, r8460, r8468, MPFR_RNDN);
        ;
        mpfr_mul(r8471, r8470, r8463, MPFR_RNDN);
        mpfr_div(r8472, r8469, r8471, MPFR_RNDN);
        return mpfr_get_d(r8472, MPFR_RNDN);
}

static mpfr_t r8473, r8474, r8475, r8476, r8477, r8478, r8479, r8480, r8481, r8482, r8483, r8484, r8485, r8486, r8487, r8488, r8489;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r8473, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8474, "2", 10, MPFR_RNDN);
        mpfr_init(r8475);
        mpfr_init(r8476);
        mpfr_init_set_str(r8477, "4", 10, MPFR_RNDN);
        mpfr_init(r8478);
        mpfr_init(r8479);
        mpfr_init(r8480);
        mpfr_init(r8481);
        mpfr_init(r8482);
        mpfr_init(r8483);
        mpfr_init(r8484);
        mpfr_init(r8485);
        mpfr_init(r8486);
        mpfr_init(r8487);
        mpfr_init(r8488);
        mpfr_init(r8489);
}

double f_fm(double a, double b, double c) {
        ;
        ;
        mpfr_div(r8475, r8473, r8474, MPFR_RNDN);
        mpfr_set_d(r8476, c, MPFR_RNDN);
        ;
        mpfr_mul(r8478, r8476, r8477, MPFR_RNDN);
        mpfr_set_d(r8479, b, MPFR_RNDN);
        mpfr_neg(r8480, r8479, MPFR_RNDN);
        mpfr_mul(r8481, r8479, r8479, MPFR_RNDN);
        mpfr_set_d(r8482, a, MPFR_RNDN);
        mpfr_mul(r8483, r8482, r8477, MPFR_RNDN);
        mpfr_mul(r8484, r8483, r8476, MPFR_RNDN);
        mpfr_sub(r8485, r8481, r8484, MPFR_RNDN);
        mpfr_sqrt(r8486, r8485, MPFR_RNDN);
        mpfr_sub(r8487, r8480, r8486, MPFR_RNDN);
        mpfr_div(r8488, r8478, r8487, MPFR_RNDN);
        mpfr_mul(r8489, r8475, r8488, MPFR_RNDN);
        return mpfr_get_d(r8489, MPFR_RNDN);
}

static mpfr_t r8490, r8491, r8492, r8493, r8494, r8495, r8496, r8497, r8498, r8499, r8500, r8501, r8502, r8503, r8504, r8505, r8506;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(848);
        mpfr_init_set_str(r8490, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8491, "2", 10, MPFR_RNDN);
        mpfr_init(r8492);
        mpfr_init(r8493);
        mpfr_init_set_str(r8494, "4", 10, MPFR_RNDN);
        mpfr_init(r8495);
        mpfr_init(r8496);
        mpfr_init(r8497);
        mpfr_init(r8498);
        mpfr_init(r8499);
        mpfr_init(r8500);
        mpfr_init(r8501);
        mpfr_init(r8502);
        mpfr_init(r8503);
        mpfr_init(r8504);
        mpfr_init(r8505);
        mpfr_init(r8506);
}

double f_dm(double a, double b, double c) {
        ;
        ;
        mpfr_div(r8492, r8490, r8491, MPFR_RNDN);
        mpfr_set_d(r8493, c, MPFR_RNDN);
        ;
        mpfr_mul(r8495, r8493, r8494, MPFR_RNDN);
        mpfr_set_d(r8496, b, MPFR_RNDN);
        mpfr_neg(r8497, r8496, MPFR_RNDN);
        mpfr_mul(r8498, r8496, r8496, MPFR_RNDN);
        mpfr_set_d(r8499, a, MPFR_RNDN);
        mpfr_mul(r8500, r8499, r8494, MPFR_RNDN);
        mpfr_mul(r8501, r8500, r8493, MPFR_RNDN);
        mpfr_sub(r8502, r8498, r8501, MPFR_RNDN);
        mpfr_sqrt(r8503, r8502, MPFR_RNDN);
        mpfr_sub(r8504, r8497, r8503, MPFR_RNDN);
        mpfr_div(r8505, r8495, r8504, MPFR_RNDN);
        mpfr_mul(r8506, r8492, r8505, MPFR_RNDN);
        return mpfr_get_d(r8506, MPFR_RNDN);
}

