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

char *name = "quad2m (problem 3.2.1, negative)";

double f_if(float a, float b_2F2, float c) {
        float r19498 = b_2F2;
        float r19499 = -r19498;
        float r19500 = r19498 * r19498;
        float r19501 = a;
        float r19502 = c;
        float r19503 = r19501 * r19502;
        float r19504 = r19500 - r19503;
        float r19505 = sqrt(r19504);
        float r19506 = r19499 - r19505;
        float r19507 = r19506 / r19501;
        return r19507;
}

double f_id(double a, double b_2F2, double c) {
        double r19508 = b_2F2;
        double r19509 = -r19508;
        double r19510 = r19508 * r19508;
        double r19511 = a;
        double r19512 = c;
        double r19513 = r19511 * r19512;
        double r19514 = r19510 - r19513;
        double r19515 = sqrt(r19514);
        double r19516 = r19509 - r19515;
        double r19517 = r19516 / r19511;
        return r19517;
}


double f_of(float a, float b_2F2, float c) {
        float r19518 = b_2F2;
        float r19519 = -6247282.286903306;
        bool r19520 = r19518 <= r19519;
        float r19521 = c;
        float r19522 = r19521 / r19518;
        float r19523 = -1/2;
        float r19524 = r19522 * r19523;
        float r19525 = -1.5129849358366514e-214;
        bool r19526 = r19518 <= r19525;
        float r19527 = a;
        float r19528 = r19521 * r19527;
        float r19529 = -r19518;
        float r19530 = r19518 * r19518;
        float r19531 = r19527 * r19521;
        float r19532 = r19530 - r19531;
        float r19533 = sqrt(r19532);
        float r19534 = r19529 + r19533;
        float r19535 = r19528 / r19534;
        float r19536 = r19535 / r19527;
        float r19537 = 4.022936252353642e+122;
        bool r19538 = r19518 <= r19537;
        float r19539 = 1;
        float r19540 = r19529 - r19533;
        float r19541 = r19527 / r19540;
        float r19542 = r19539 / r19541;
        float r19543 = -2;
        float r19544 = r19518 / r19527;
        float r19545 = r19543 * r19544;
        float r19546 = r19538 ? r19542 : r19545;
        float r19547 = r19526 ? r19536 : r19546;
        float r19548 = r19520 ? r19524 : r19547;
        return r19548;
}

double f_od(double a, double b_2F2, double c) {
        double r19549 = b_2F2;
        double r19550 = -6247282.286903306;
        bool r19551 = r19549 <= r19550;
        double r19552 = c;
        double r19553 = r19552 / r19549;
        double r19554 = -1/2;
        double r19555 = r19553 * r19554;
        double r19556 = -1.5129849358366514e-214;
        bool r19557 = r19549 <= r19556;
        double r19558 = a;
        double r19559 = r19552 * r19558;
        double r19560 = -r19549;
        double r19561 = r19549 * r19549;
        double r19562 = r19558 * r19552;
        double r19563 = r19561 - r19562;
        double r19564 = sqrt(r19563);
        double r19565 = r19560 + r19564;
        double r19566 = r19559 / r19565;
        double r19567 = r19566 / r19558;
        double r19568 = 4.022936252353642e+122;
        bool r19569 = r19549 <= r19568;
        double r19570 = 1;
        double r19571 = r19560 - r19564;
        double r19572 = r19558 / r19571;
        double r19573 = r19570 / r19572;
        double r19574 = -2;
        double r19575 = r19549 / r19558;
        double r19576 = r19574 * r19575;
        double r19577 = r19569 ? r19573 : r19576;
        double r19578 = r19557 ? r19567 : r19577;
        double r19579 = r19551 ? r19555 : r19578;
        return r19579;
}

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 r19580, r19581, r19582, r19583, r19584, r19585, r19586, r19587, r19588, r19589;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r19580);
        mpfr_init(r19581);
        mpfr_init(r19582);
        mpfr_init(r19583);
        mpfr_init(r19584);
        mpfr_init(r19585);
        mpfr_init(r19586);
        mpfr_init(r19587);
        mpfr_init(r19588);
        mpfr_init(r19589);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r19580, b_2F2, MPFR_RNDN);
        mpfr_neg(r19581, r19580, MPFR_RNDN);
        mpfr_mul(r19582, r19580, r19580, MPFR_RNDN);
        mpfr_set_d(r19583, a, MPFR_RNDN);
        mpfr_set_d(r19584, c, MPFR_RNDN);
        mpfr_mul(r19585, r19583, r19584, MPFR_RNDN);
        mpfr_sub(r19586, r19582, r19585, MPFR_RNDN);
        mpfr_sqrt(r19587, r19586, MPFR_RNDN);
        mpfr_sub(r19588, r19581, r19587, MPFR_RNDN);
        mpfr_div(r19589, r19588, r19583, MPFR_RNDN);
        return mpfr_get_d(r19589, MPFR_RNDN);
}

static mpfr_t r19590, r19591, r19592, r19593, r19594, r19595, r19596, r19597, r19598, r19599, r19600, r19601, r19602, r19603, r19604, r19605, r19606, r19607, r19608, r19609, r19610, r19611, r19612, r19613, r19614, r19615, r19616, r19617, r19618, r19619, r19620;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r19590);
        mpfr_init_set_str(r19591, "-6247282.286903306", 10, MPFR_RNDN);
        mpfr_init(r19592);
        mpfr_init(r19593);
        mpfr_init(r19594);
        mpfr_init_set_str(r19595, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19596);
        mpfr_init_set_str(r19597, "-1.5129849358366514e-214", 10, MPFR_RNDN);
        mpfr_init(r19598);
        mpfr_init(r19599);
        mpfr_init(r19600);
        mpfr_init(r19601);
        mpfr_init(r19602);
        mpfr_init(r19603);
        mpfr_init(r19604);
        mpfr_init(r19605);
        mpfr_init(r19606);
        mpfr_init(r19607);
        mpfr_init(r19608);
        mpfr_init_set_str(r19609, "4.022936252353642e+122", 10, MPFR_RNDN);
        mpfr_init(r19610);
        mpfr_init_set_str(r19611, "1", 10, MPFR_RNDN);
        mpfr_init(r19612);
        mpfr_init(r19613);
        mpfr_init(r19614);
        mpfr_init_set_str(r19615, "-2", 10, MPFR_RNDN);
        mpfr_init(r19616);
        mpfr_init(r19617);
        mpfr_init(r19618);
        mpfr_init(r19619);
        mpfr_init(r19620);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r19590, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19592, mpfr_cmp(r19590, r19591) <= 0, MPFR_RNDN);
        mpfr_set_d(r19593, c, MPFR_RNDN);
        mpfr_div(r19594, r19593, r19590, MPFR_RNDN);
        ;
        mpfr_mul(r19596, r19594, r19595, MPFR_RNDN);
        ;
        mpfr_set_si(r19598, mpfr_cmp(r19590, r19597) <= 0, MPFR_RNDN);
        mpfr_set_d(r19599, a, MPFR_RNDN);
        mpfr_mul(r19600, r19593, r19599, MPFR_RNDN);
        mpfr_neg(r19601, r19590, MPFR_RNDN);
        mpfr_mul(r19602, r19590, r19590, MPFR_RNDN);
        mpfr_mul(r19603, r19599, r19593, MPFR_RNDN);
        mpfr_sub(r19604, r19602, r19603, MPFR_RNDN);
        mpfr_sqrt(r19605, r19604, MPFR_RNDN);
        mpfr_add(r19606, r19601, r19605, MPFR_RNDN);
        mpfr_div(r19607, r19600, r19606, MPFR_RNDN);
        mpfr_div(r19608, r19607, r19599, MPFR_RNDN);
        ;
        mpfr_set_si(r19610, mpfr_cmp(r19590, r19609) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r19612, r19601, r19605, MPFR_RNDN);
        mpfr_div(r19613, r19599, r19612, MPFR_RNDN);
        mpfr_div(r19614, r19611, r19613, MPFR_RNDN);
        ;
        mpfr_div(r19616, r19590, r19599, MPFR_RNDN);
        mpfr_mul(r19617, r19615, r19616, MPFR_RNDN);
        if (mpfr_get_si(r19610, MPFR_RNDN)) { mpfr_set(r19618, r19614, MPFR_RNDN); } else { mpfr_set(r19618, r19617, MPFR_RNDN); };
        if (mpfr_get_si(r19598, MPFR_RNDN)) { mpfr_set(r19619, r19608, MPFR_RNDN); } else { mpfr_set(r19619, r19618, MPFR_RNDN); };
        if (mpfr_get_si(r19592, MPFR_RNDN)) { mpfr_set(r19620, r19596, MPFR_RNDN); } else { mpfr_set(r19620, r19619, MPFR_RNDN); };
        return mpfr_get_d(r19620, MPFR_RNDN);
}

static mpfr_t r19621, r19622, r19623, r19624, r19625, r19626, r19627, r19628, r19629, r19630, r19631, r19632, r19633, r19634, r19635, r19636, r19637, r19638, r19639, r19640, r19641, r19642, r19643, r19644, r19645, r19646, r19647, r19648, r19649, r19650, r19651;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r19621);
        mpfr_init_set_str(r19622, "-6247282.286903306", 10, MPFR_RNDN);
        mpfr_init(r19623);
        mpfr_init(r19624);
        mpfr_init(r19625);
        mpfr_init_set_str(r19626, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19627);
        mpfr_init_set_str(r19628, "-1.5129849358366514e-214", 10, MPFR_RNDN);
        mpfr_init(r19629);
        mpfr_init(r19630);
        mpfr_init(r19631);
        mpfr_init(r19632);
        mpfr_init(r19633);
        mpfr_init(r19634);
        mpfr_init(r19635);
        mpfr_init(r19636);
        mpfr_init(r19637);
        mpfr_init(r19638);
        mpfr_init(r19639);
        mpfr_init_set_str(r19640, "4.022936252353642e+122", 10, MPFR_RNDN);
        mpfr_init(r19641);
        mpfr_init_set_str(r19642, "1", 10, MPFR_RNDN);
        mpfr_init(r19643);
        mpfr_init(r19644);
        mpfr_init(r19645);
        mpfr_init_set_str(r19646, "-2", 10, MPFR_RNDN);
        mpfr_init(r19647);
        mpfr_init(r19648);
        mpfr_init(r19649);
        mpfr_init(r19650);
        mpfr_init(r19651);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19621, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19623, mpfr_cmp(r19621, r19622) <= 0, MPFR_RNDN);
        mpfr_set_d(r19624, c, MPFR_RNDN);
        mpfr_div(r19625, r19624, r19621, MPFR_RNDN);
        ;
        mpfr_mul(r19627, r19625, r19626, MPFR_RNDN);
        ;
        mpfr_set_si(r19629, mpfr_cmp(r19621, r19628) <= 0, MPFR_RNDN);
        mpfr_set_d(r19630, a, MPFR_RNDN);
        mpfr_mul(r19631, r19624, r19630, MPFR_RNDN);
        mpfr_neg(r19632, r19621, MPFR_RNDN);
        mpfr_mul(r19633, r19621, r19621, MPFR_RNDN);
        mpfr_mul(r19634, r19630, r19624, MPFR_RNDN);
        mpfr_sub(r19635, r19633, r19634, MPFR_RNDN);
        mpfr_sqrt(r19636, r19635, MPFR_RNDN);
        mpfr_add(r19637, r19632, r19636, MPFR_RNDN);
        mpfr_div(r19638, r19631, r19637, MPFR_RNDN);
        mpfr_div(r19639, r19638, r19630, MPFR_RNDN);
        ;
        mpfr_set_si(r19641, mpfr_cmp(r19621, r19640) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r19643, r19632, r19636, MPFR_RNDN);
        mpfr_div(r19644, r19630, r19643, MPFR_RNDN);
        mpfr_div(r19645, r19642, r19644, MPFR_RNDN);
        ;
        mpfr_div(r19647, r19621, r19630, MPFR_RNDN);
        mpfr_mul(r19648, r19646, r19647, MPFR_RNDN);
        if (mpfr_get_si(r19641, MPFR_RNDN)) { mpfr_set(r19649, r19645, MPFR_RNDN); } else { mpfr_set(r19649, r19648, MPFR_RNDN); };
        if (mpfr_get_si(r19629, MPFR_RNDN)) { mpfr_set(r19650, r19639, MPFR_RNDN); } else { mpfr_set(r19650, r19649, MPFR_RNDN); };
        if (mpfr_get_si(r19623, MPFR_RNDN)) { mpfr_set(r19651, r19627, MPFR_RNDN); } else { mpfr_set(r19651, r19650, MPFR_RNDN); };
        return mpfr_get_d(r19651, MPFR_RNDN);
}

