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

char *name = "quadm (p42, negative)";

double f_if(float a, float b, float c) {
        float r20510 = b;
        float r20511 = -r20510;
        float r20512 = r20510 * r20510;
        float r20513 = 4;
        float r20514 = a;
        float r20515 = c;
        float r20516 = r20514 * r20515;
        float r20517 = r20513 * r20516;
        float r20518 = r20512 - r20517;
        float r20519 = sqrt(r20518);
        float r20520 = r20511 - r20519;
        float r20521 = 2;
        float r20522 = r20521 * r20514;
        float r20523 = r20520 / r20522;
        return r20523;
}

double f_id(double a, double b, double c) {
        double r20524 = b;
        double r20525 = -r20524;
        double r20526 = r20524 * r20524;
        double r20527 = 4;
        double r20528 = a;
        double r20529 = c;
        double r20530 = r20528 * r20529;
        double r20531 = r20527 * r20530;
        double r20532 = r20526 - r20531;
        double r20533 = sqrt(r20532);
        double r20534 = r20525 - r20533;
        double r20535 = 2;
        double r20536 = r20535 * r20528;
        double r20537 = r20534 / r20536;
        return r20537;
}


double f_of(float a, float b, float c) {
        float r20538 = b;
        float r20539 = -6247282.286903306;
        bool r20540 = r20538 <= r20539;
        float r20541 = -r20538;
        float r20542 = r20541 + r20538;
        float r20543 = a;
        float r20544 = r20543 + r20543;
        float r20545 = r20542 / r20544;
        float r20546 = c;
        float r20547 = r20546 / r20538;
        float r20548 = r20545 - r20547;
        float r20549 = -4.911115753907739e-141;
        bool r20550 = r20538 <= r20549;
        float r20551 = r20546 * r20543;
        float r20552 = 4;
        float r20553 = r20551 * r20552;
        float r20554 = r20538 * r20538;
        float r20555 = r20543 * r20546;
        float r20556 = r20552 * r20555;
        float r20557 = r20554 - r20556;
        float r20558 = sqrt(r20557);
        float r20559 = r20541 + r20558;
        float r20560 = r20553 / r20559;
        float r20561 = 2;
        float r20562 = r20561 * r20543;
        float r20563 = r20560 / r20562;
        float r20564 = 4.022936252353642e+122;
        bool r20565 = r20538 <= r20564;
        float r20566 = r20541 / r20562;
        float r20567 = r20558 / r20562;
        float r20568 = r20566 - r20567;
        float r20569 = r20541 / r20543;
        float r20570 = r20565 ? r20568 : r20569;
        float r20571 = r20550 ? r20563 : r20570;
        float r20572 = r20540 ? r20548 : r20571;
        return r20572;
}

double f_od(double a, double b, double c) {
        double r20573 = b;
        double r20574 = -6247282.286903306;
        bool r20575 = r20573 <= r20574;
        double r20576 = -r20573;
        double r20577 = r20576 + r20573;
        double r20578 = a;
        double r20579 = r20578 + r20578;
        double r20580 = r20577 / r20579;
        double r20581 = c;
        double r20582 = r20581 / r20573;
        double r20583 = r20580 - r20582;
        double r20584 = -4.911115753907739e-141;
        bool r20585 = r20573 <= r20584;
        double r20586 = r20581 * r20578;
        double r20587 = 4;
        double r20588 = r20586 * r20587;
        double r20589 = r20573 * r20573;
        double r20590 = r20578 * r20581;
        double r20591 = r20587 * r20590;
        double r20592 = r20589 - r20591;
        double r20593 = sqrt(r20592);
        double r20594 = r20576 + r20593;
        double r20595 = r20588 / r20594;
        double r20596 = 2;
        double r20597 = r20596 * r20578;
        double r20598 = r20595 / r20597;
        double r20599 = 4.022936252353642e+122;
        bool r20600 = r20573 <= r20599;
        double r20601 = r20576 / r20597;
        double r20602 = r20593 / r20597;
        double r20603 = r20601 - r20602;
        double r20604 = r20576 / r20578;
        double r20605 = r20600 ? r20603 : r20604;
        double r20606 = r20585 ? r20598 : r20605;
        double r20607 = r20575 ? r20583 : r20606;
        return r20607;
}

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 r20608, r20609, r20610, r20611, r20612, r20613, r20614, r20615, r20616, r20617, r20618, r20619, r20620, r20621;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r20608);
        mpfr_init(r20609);
        mpfr_init(r20610);
        mpfr_init_set_str(r20611, "4", 10, MPFR_RNDN);
        mpfr_init(r20612);
        mpfr_init(r20613);
        mpfr_init(r20614);
        mpfr_init(r20615);
        mpfr_init(r20616);
        mpfr_init(r20617);
        mpfr_init(r20618);
        mpfr_init_set_str(r20619, "2", 10, MPFR_RNDN);
        mpfr_init(r20620);
        mpfr_init(r20621);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r20608, b, MPFR_RNDN);
        mpfr_neg(r20609, r20608, MPFR_RNDN);
        mpfr_mul(r20610, r20608, r20608, MPFR_RNDN);
        ;
        mpfr_set_d(r20612, a, MPFR_RNDN);
        mpfr_set_d(r20613, c, MPFR_RNDN);
        mpfr_mul(r20614, r20612, r20613, MPFR_RNDN);
        mpfr_mul(r20615, r20611, r20614, MPFR_RNDN);
        mpfr_sub(r20616, r20610, r20615, MPFR_RNDN);
        mpfr_sqrt(r20617, r20616, MPFR_RNDN);
        mpfr_sub(r20618, r20609, r20617, MPFR_RNDN);
        ;
        mpfr_mul(r20620, r20619, r20612, MPFR_RNDN);
        mpfr_div(r20621, r20618, r20620, MPFR_RNDN);
        return mpfr_get_d(r20621, MPFR_RNDN);
}

static mpfr_t r20622, r20623, r20624, r20625, r20626, r20627, r20628, r20629, r20630, r20631, r20632, r20633, r20634, r20635, r20636, r20637, r20638, r20639, r20640, r20641, r20642, r20643, r20644, r20645, r20646, r20647, r20648, r20649, r20650, r20651, r20652, r20653, r20654, r20655, r20656;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r20622);
        mpfr_init_set_str(r20623, "-6247282.286903306", 10, MPFR_RNDN);
        mpfr_init(r20624);
        mpfr_init(r20625);
        mpfr_init(r20626);
        mpfr_init(r20627);
        mpfr_init(r20628);
        mpfr_init(r20629);
        mpfr_init(r20630);
        mpfr_init(r20631);
        mpfr_init(r20632);
        mpfr_init_set_str(r20633, "-4.911115753907739e-141", 10, MPFR_RNDN);
        mpfr_init(r20634);
        mpfr_init(r20635);
        mpfr_init_set_str(r20636, "4", 10, MPFR_RNDN);
        mpfr_init(r20637);
        mpfr_init(r20638);
        mpfr_init(r20639);
        mpfr_init(r20640);
        mpfr_init(r20641);
        mpfr_init(r20642);
        mpfr_init(r20643);
        mpfr_init(r20644);
        mpfr_init_set_str(r20645, "2", 10, MPFR_RNDN);
        mpfr_init(r20646);
        mpfr_init(r20647);
        mpfr_init_set_str(r20648, "4.022936252353642e+122", 10, MPFR_RNDN);
        mpfr_init(r20649);
        mpfr_init(r20650);
        mpfr_init(r20651);
        mpfr_init(r20652);
        mpfr_init(r20653);
        mpfr_init(r20654);
        mpfr_init(r20655);
        mpfr_init(r20656);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r20622, b, MPFR_RNDN);
        ;
        mpfr_set_si(r20624, mpfr_cmp(r20622, r20623) <= 0, MPFR_RNDN);
        mpfr_neg(r20625, r20622, MPFR_RNDN);
        mpfr_add(r20626, r20625, r20622, MPFR_RNDN);
        mpfr_set_d(r20627, a, MPFR_RNDN);
        mpfr_add(r20628, r20627, r20627, MPFR_RNDN);
        mpfr_div(r20629, r20626, r20628, MPFR_RNDN);
        mpfr_set_d(r20630, c, MPFR_RNDN);
        mpfr_div(r20631, r20630, r20622, MPFR_RNDN);
        mpfr_sub(r20632, r20629, r20631, MPFR_RNDN);
        ;
        mpfr_set_si(r20634, mpfr_cmp(r20622, r20633) <= 0, MPFR_RNDN);
        mpfr_mul(r20635, r20630, r20627, MPFR_RNDN);
        ;
        mpfr_mul(r20637, r20635, r20636, MPFR_RNDN);
        mpfr_mul(r20638, r20622, r20622, MPFR_RNDN);
        mpfr_mul(r20639, r20627, r20630, MPFR_RNDN);
        mpfr_mul(r20640, r20636, r20639, MPFR_RNDN);
        mpfr_sub(r20641, r20638, r20640, MPFR_RNDN);
        mpfr_sqrt(r20642, r20641, MPFR_RNDN);
        mpfr_add(r20643, r20625, r20642, MPFR_RNDN);
        mpfr_div(r20644, r20637, r20643, MPFR_RNDN);
        ;
        mpfr_mul(r20646, r20645, r20627, MPFR_RNDN);
        mpfr_div(r20647, r20644, r20646, MPFR_RNDN);
        ;
        mpfr_set_si(r20649, mpfr_cmp(r20622, r20648) <= 0, MPFR_RNDN);
        mpfr_div(r20650, r20625, r20646, MPFR_RNDN);
        mpfr_div(r20651, r20642, r20646, MPFR_RNDN);
        mpfr_sub(r20652, r20650, r20651, MPFR_RNDN);
        mpfr_div(r20653, r20625, r20627, MPFR_RNDN);
        if (mpfr_get_si(r20649, MPFR_RNDN)) { mpfr_set(r20654, r20652, MPFR_RNDN); } else { mpfr_set(r20654, r20653, MPFR_RNDN); };
        if (mpfr_get_si(r20634, MPFR_RNDN)) { mpfr_set(r20655, r20647, MPFR_RNDN); } else { mpfr_set(r20655, r20654, MPFR_RNDN); };
        if (mpfr_get_si(r20624, MPFR_RNDN)) { mpfr_set(r20656, r20632, MPFR_RNDN); } else { mpfr_set(r20656, r20655, MPFR_RNDN); };
        return mpfr_get_d(r20656, MPFR_RNDN);
}

static mpfr_t r20657, r20658, r20659, r20660, r20661, r20662, r20663, r20664, r20665, r20666, r20667, r20668, r20669, r20670, r20671, r20672, r20673, r20674, r20675, r20676, r20677, r20678, r20679, r20680, r20681, r20682, r20683, r20684, r20685, r20686, r20687, r20688, r20689, r20690, r20691;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r20657);
        mpfr_init_set_str(r20658, "-6247282.286903306", 10, MPFR_RNDN);
        mpfr_init(r20659);
        mpfr_init(r20660);
        mpfr_init(r20661);
        mpfr_init(r20662);
        mpfr_init(r20663);
        mpfr_init(r20664);
        mpfr_init(r20665);
        mpfr_init(r20666);
        mpfr_init(r20667);
        mpfr_init_set_str(r20668, "-4.911115753907739e-141", 10, MPFR_RNDN);
        mpfr_init(r20669);
        mpfr_init(r20670);
        mpfr_init_set_str(r20671, "4", 10, MPFR_RNDN);
        mpfr_init(r20672);
        mpfr_init(r20673);
        mpfr_init(r20674);
        mpfr_init(r20675);
        mpfr_init(r20676);
        mpfr_init(r20677);
        mpfr_init(r20678);
        mpfr_init(r20679);
        mpfr_init_set_str(r20680, "2", 10, MPFR_RNDN);
        mpfr_init(r20681);
        mpfr_init(r20682);
        mpfr_init_set_str(r20683, "4.022936252353642e+122", 10, MPFR_RNDN);
        mpfr_init(r20684);
        mpfr_init(r20685);
        mpfr_init(r20686);
        mpfr_init(r20687);
        mpfr_init(r20688);
        mpfr_init(r20689);
        mpfr_init(r20690);
        mpfr_init(r20691);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r20657, b, MPFR_RNDN);
        ;
        mpfr_set_si(r20659, mpfr_cmp(r20657, r20658) <= 0, MPFR_RNDN);
        mpfr_neg(r20660, r20657, MPFR_RNDN);
        mpfr_add(r20661, r20660, r20657, MPFR_RNDN);
        mpfr_set_d(r20662, a, MPFR_RNDN);
        mpfr_add(r20663, r20662, r20662, MPFR_RNDN);
        mpfr_div(r20664, r20661, r20663, MPFR_RNDN);
        mpfr_set_d(r20665, c, MPFR_RNDN);
        mpfr_div(r20666, r20665, r20657, MPFR_RNDN);
        mpfr_sub(r20667, r20664, r20666, MPFR_RNDN);
        ;
        mpfr_set_si(r20669, mpfr_cmp(r20657, r20668) <= 0, MPFR_RNDN);
        mpfr_mul(r20670, r20665, r20662, MPFR_RNDN);
        ;
        mpfr_mul(r20672, r20670, r20671, MPFR_RNDN);
        mpfr_mul(r20673, r20657, r20657, MPFR_RNDN);
        mpfr_mul(r20674, r20662, r20665, MPFR_RNDN);
        mpfr_mul(r20675, r20671, r20674, MPFR_RNDN);
        mpfr_sub(r20676, r20673, r20675, MPFR_RNDN);
        mpfr_sqrt(r20677, r20676, MPFR_RNDN);
        mpfr_add(r20678, r20660, r20677, MPFR_RNDN);
        mpfr_div(r20679, r20672, r20678, MPFR_RNDN);
        ;
        mpfr_mul(r20681, r20680, r20662, MPFR_RNDN);
        mpfr_div(r20682, r20679, r20681, MPFR_RNDN);
        ;
        mpfr_set_si(r20684, mpfr_cmp(r20657, r20683) <= 0, MPFR_RNDN);
        mpfr_div(r20685, r20660, r20681, MPFR_RNDN);
        mpfr_div(r20686, r20677, r20681, MPFR_RNDN);
        mpfr_sub(r20687, r20685, r20686, MPFR_RNDN);
        mpfr_div(r20688, r20660, r20662, MPFR_RNDN);
        if (mpfr_get_si(r20684, MPFR_RNDN)) { mpfr_set(r20689, r20687, MPFR_RNDN); } else { mpfr_set(r20689, r20688, MPFR_RNDN); };
        if (mpfr_get_si(r20669, MPFR_RNDN)) { mpfr_set(r20690, r20682, MPFR_RNDN); } else { mpfr_set(r20690, r20689, MPFR_RNDN); };
        if (mpfr_get_si(r20659, MPFR_RNDN)) { mpfr_set(r20691, r20667, MPFR_RNDN); } else { mpfr_set(r20691, r20690, MPFR_RNDN); };
        return mpfr_get_d(r20691, MPFR_RNDN);
}

