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

char *name = "quad2p (problem 3.2.1, positive)";

double f_if(float a, float b_2, float c) {
        float r7645 = b_2;
        float r7646 = -r7645;
        float r7647 = r7645 * r7645;
        float r7648 = a;
        float r7649 = c;
        float r7650 = r7648 * r7649;
        float r7651 = r7647 - r7650;
        float r7652 = sqrt(r7651);
        float r7653 = r7646 + r7652;
        float r7654 = r7653 / r7648;
        return r7654;
}

double f_id(double a, double b_2, double c) {
        double r7655 = b_2;
        double r7656 = -r7655;
        double r7657 = r7655 * r7655;
        double r7658 = a;
        double r7659 = c;
        double r7660 = r7658 * r7659;
        double r7661 = r7657 - r7660;
        double r7662 = sqrt(r7661);
        double r7663 = r7656 + r7662;
        double r7664 = r7663 / r7658;
        return r7664;
}


double f_of(float a, float b_2, float c) {
        float r7665 = b_2;
        float r7666 = -2.227349250774133e+80f;
        bool r7667 = r7665 <= r7666;
        float r7668 = -2.0f;
        float r7669 = a;
        float r7670 = r7665 / r7669;
        float r7671 = r7668 * r7670;
        float r7672 = 1.5616348041811878e-106f;
        bool r7673 = r7665 <= r7672;
        float r7674 = r7665 * r7665;
        float r7675 = c;
        float r7676 = r7669 * r7675;
        float r7677 = r7674 - r7676;
        float r7678 = sqrt(r7677);
        float r7679 = sqrt(r7678);
        float r7680 = -r7665;
        float r7681 = fma(r7679, r7679, r7680);
        float r7682 = r7681 / r7669;
        float r7683 = 5.893452234856823e+87f;
        bool r7684 = r7665 <= r7683;
        float r7685 = r7676 / r7669;
        float r7686 = -r7685;
        float r7687 = r7678 + r7665;
        float r7688 = r7686 / r7687;
        float r7689 = -r7675;
        float r7690 = 0.5f;
        float r7691 = r7676 / r7665;
        float r7692 = r7690 * r7691;
        float r7693 = r7665 - r7692;
        float r7694 = r7693 + r7665;
        float r7695 = r7689 / r7694;
        float r7696 = r7684 ? r7688 : r7695;
        float r7697 = r7673 ? r7682 : r7696;
        float r7698 = r7667 ? r7671 : r7697;
        return r7698;
}

double f_od(double a, double b_2, double c) {
        double r7699 = b_2;
        double r7700 = -2.227349250774133e+80;
        bool r7701 = r7699 <= r7700;
        double r7702 = -2.0;
        double r7703 = a;
        double r7704 = r7699 / r7703;
        double r7705 = r7702 * r7704;
        double r7706 = 1.5616348041811878e-106;
        bool r7707 = r7699 <= r7706;
        double r7708 = r7699 * r7699;
        double r7709 = c;
        double r7710 = r7703 * r7709;
        double r7711 = r7708 - r7710;
        double r7712 = sqrt(r7711);
        double r7713 = sqrt(r7712);
        double r7714 = -r7699;
        double r7715 = fma(r7713, r7713, r7714);
        double r7716 = r7715 / r7703;
        double r7717 = 5.893452234856823e+87;
        bool r7718 = r7699 <= r7717;
        double r7719 = r7710 / r7703;
        double r7720 = -r7719;
        double r7721 = r7712 + r7699;
        double r7722 = r7720 / r7721;
        double r7723 = -r7709;
        double r7724 = 0.5;
        double r7725 = r7710 / r7699;
        double r7726 = r7724 * r7725;
        double r7727 = r7699 - r7726;
        double r7728 = r7727 + r7699;
        double r7729 = r7723 / r7728;
        double r7730 = r7718 ? r7722 : r7729;
        double r7731 = r7707 ? r7716 : r7730;
        double r7732 = r7701 ? r7705 : r7731;
        return r7732;
}

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 r7733, r7734, r7735, r7736, r7737, r7738, r7739, r7740, r7741, r7742;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7733);
        mpfr_init(r7734);
        mpfr_init(r7735);
        mpfr_init(r7736);
        mpfr_init(r7737);
        mpfr_init(r7738);
        mpfr_init(r7739);
        mpfr_init(r7740);
        mpfr_init(r7741);
        mpfr_init(r7742);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r7733, b_2, MPFR_RNDN);
        mpfr_neg(r7734, r7733, MPFR_RNDN);
        mpfr_mul(r7735, r7733, r7733, MPFR_RNDN);
        mpfr_set_d(r7736, a, MPFR_RNDN);
        mpfr_set_d(r7737, c, MPFR_RNDN);
        mpfr_mul(r7738, r7736, r7737, MPFR_RNDN);
        mpfr_sub(r7739, r7735, r7738, MPFR_RNDN);
        mpfr_sqrt(r7740, r7739, MPFR_RNDN);
        mpfr_add(r7741, r7734, r7740, MPFR_RNDN);
        mpfr_div(r7742, r7741, r7736, MPFR_RNDN);
        return mpfr_get_d(r7742, MPFR_RNDN);
}

static mpfr_t r7743, r7744, r7745, r7746, r7747, r7748, r7749, r7750, r7751, r7752, r7753, r7754, r7755, r7756, r7757, r7758, r7759, r7760, r7761, r7762, r7763, r7764, r7765, r7766, r7767, r7768, r7769, r7770, r7771, r7772, r7773, r7774, r7775, r7776;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7743);
        mpfr_init_set_str(r7744, "-2.227349250774133e+80", 10, MPFR_RNDN);
        mpfr_init(r7745);
        mpfr_init_set_str(r7746, "-2", 10, MPFR_RNDN);
        mpfr_init(r7747);
        mpfr_init(r7748);
        mpfr_init(r7749);
        mpfr_init_set_str(r7750, "1.5616348041811878e-106", 10, MPFR_RNDN);
        mpfr_init(r7751);
        mpfr_init(r7752);
        mpfr_init(r7753);
        mpfr_init(r7754);
        mpfr_init(r7755);
        mpfr_init(r7756);
        mpfr_init(r7757);
        mpfr_init(r7758);
        mpfr_init(r7759);
        mpfr_init(r7760);
        mpfr_init_set_str(r7761, "5.893452234856823e+87", 10, MPFR_RNDN);
        mpfr_init(r7762);
        mpfr_init(r7763);
        mpfr_init(r7764);
        mpfr_init(r7765);
        mpfr_init(r7766);
        mpfr_init(r7767);
        mpfr_init_set_str(r7768, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7769);
        mpfr_init(r7770);
        mpfr_init(r7771);
        mpfr_init(r7772);
        mpfr_init(r7773);
        mpfr_init(r7774);
        mpfr_init(r7775);
        mpfr_init(r7776);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r7743, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r7745, mpfr_cmp(r7743, r7744) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r7747, a, MPFR_RNDN);
        mpfr_div(r7748, r7743, r7747, MPFR_RNDN);
        mpfr_mul(r7749, r7746, r7748, MPFR_RNDN);
        ;
        mpfr_set_si(r7751, mpfr_cmp(r7743, r7750) <= 0, MPFR_RNDN);
        mpfr_mul(r7752, r7743, r7743, MPFR_RNDN);
        mpfr_set_d(r7753, c, MPFR_RNDN);
        mpfr_mul(r7754, r7747, r7753, MPFR_RNDN);
        mpfr_sub(r7755, r7752, r7754, MPFR_RNDN);
        mpfr_sqrt(r7756, r7755, MPFR_RNDN);
        mpfr_sqrt(r7757, r7756, MPFR_RNDN);
        mpfr_neg(r7758, r7743, MPFR_RNDN);
        mpfr_fma(r7759, r7757, r7757, r7758, MPFR_RNDN);
        mpfr_div(r7760, r7759, r7747, MPFR_RNDN);
        ;
        mpfr_set_si(r7762, mpfr_cmp(r7743, r7761) <= 0, MPFR_RNDN);
        mpfr_div(r7763, r7754, r7747, MPFR_RNDN);
        mpfr_neg(r7764, r7763, MPFR_RNDN);
        mpfr_add(r7765, r7756, r7743, MPFR_RNDN);
        mpfr_div(r7766, r7764, r7765, MPFR_RNDN);
        mpfr_neg(r7767, r7753, MPFR_RNDN);
        ;
        mpfr_div(r7769, r7754, r7743, MPFR_RNDN);
        mpfr_mul(r7770, r7768, r7769, MPFR_RNDN);
        mpfr_sub(r7771, r7743, r7770, MPFR_RNDN);
        mpfr_add(r7772, r7771, r7743, MPFR_RNDN);
        mpfr_div(r7773, r7767, r7772, MPFR_RNDN);
        if (mpfr_get_si(r7762, MPFR_RNDN)) { mpfr_set(r7774, r7766, MPFR_RNDN); } else { mpfr_set(r7774, r7773, MPFR_RNDN); };
        if (mpfr_get_si(r7751, MPFR_RNDN)) { mpfr_set(r7775, r7760, MPFR_RNDN); } else { mpfr_set(r7775, r7774, MPFR_RNDN); };
        if (mpfr_get_si(r7745, MPFR_RNDN)) { mpfr_set(r7776, r7749, MPFR_RNDN); } else { mpfr_set(r7776, r7775, MPFR_RNDN); };
        return mpfr_get_d(r7776, MPFR_RNDN);
}

static mpfr_t r7777, r7778, r7779, r7780, r7781, r7782, r7783, r7784, r7785, r7786, r7787, r7788, r7789, r7790, r7791, r7792, r7793, r7794, r7795, r7796, r7797, r7798, r7799, r7800, r7801, r7802, r7803, r7804, r7805, r7806, r7807, r7808, r7809, r7810;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7777);
        mpfr_init_set_str(r7778, "-2.227349250774133e+80", 10, MPFR_RNDN);
        mpfr_init(r7779);
        mpfr_init_set_str(r7780, "-2", 10, MPFR_RNDN);
        mpfr_init(r7781);
        mpfr_init(r7782);
        mpfr_init(r7783);
        mpfr_init_set_str(r7784, "1.5616348041811878e-106", 10, MPFR_RNDN);
        mpfr_init(r7785);
        mpfr_init(r7786);
        mpfr_init(r7787);
        mpfr_init(r7788);
        mpfr_init(r7789);
        mpfr_init(r7790);
        mpfr_init(r7791);
        mpfr_init(r7792);
        mpfr_init(r7793);
        mpfr_init(r7794);
        mpfr_init_set_str(r7795, "5.893452234856823e+87", 10, MPFR_RNDN);
        mpfr_init(r7796);
        mpfr_init(r7797);
        mpfr_init(r7798);
        mpfr_init(r7799);
        mpfr_init(r7800);
        mpfr_init(r7801);
        mpfr_init_set_str(r7802, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7803);
        mpfr_init(r7804);
        mpfr_init(r7805);
        mpfr_init(r7806);
        mpfr_init(r7807);
        mpfr_init(r7808);
        mpfr_init(r7809);
        mpfr_init(r7810);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r7777, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r7779, mpfr_cmp(r7777, r7778) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r7781, a, MPFR_RNDN);
        mpfr_div(r7782, r7777, r7781, MPFR_RNDN);
        mpfr_mul(r7783, r7780, r7782, MPFR_RNDN);
        ;
        mpfr_set_si(r7785, mpfr_cmp(r7777, r7784) <= 0, MPFR_RNDN);
        mpfr_mul(r7786, r7777, r7777, MPFR_RNDN);
        mpfr_set_d(r7787, c, MPFR_RNDN);
        mpfr_mul(r7788, r7781, r7787, MPFR_RNDN);
        mpfr_sub(r7789, r7786, r7788, MPFR_RNDN);
        mpfr_sqrt(r7790, r7789, MPFR_RNDN);
        mpfr_sqrt(r7791, r7790, MPFR_RNDN);
        mpfr_neg(r7792, r7777, MPFR_RNDN);
        mpfr_fma(r7793, r7791, r7791, r7792, MPFR_RNDN);
        mpfr_div(r7794, r7793, r7781, MPFR_RNDN);
        ;
        mpfr_set_si(r7796, mpfr_cmp(r7777, r7795) <= 0, MPFR_RNDN);
        mpfr_div(r7797, r7788, r7781, MPFR_RNDN);
        mpfr_neg(r7798, r7797, MPFR_RNDN);
        mpfr_add(r7799, r7790, r7777, MPFR_RNDN);
        mpfr_div(r7800, r7798, r7799, MPFR_RNDN);
        mpfr_neg(r7801, r7787, MPFR_RNDN);
        ;
        mpfr_div(r7803, r7788, r7777, MPFR_RNDN);
        mpfr_mul(r7804, r7802, r7803, MPFR_RNDN);
        mpfr_sub(r7805, r7777, r7804, MPFR_RNDN);
        mpfr_add(r7806, r7805, r7777, MPFR_RNDN);
        mpfr_div(r7807, r7801, r7806, MPFR_RNDN);
        if (mpfr_get_si(r7796, MPFR_RNDN)) { mpfr_set(r7808, r7800, MPFR_RNDN); } else { mpfr_set(r7808, r7807, MPFR_RNDN); };
        if (mpfr_get_si(r7785, MPFR_RNDN)) { mpfr_set(r7809, r7794, MPFR_RNDN); } else { mpfr_set(r7809, r7808, MPFR_RNDN); };
        if (mpfr_get_si(r7779, MPFR_RNDN)) { mpfr_set(r7810, r7783, MPFR_RNDN); } else { mpfr_set(r7810, r7809, MPFR_RNDN); };
        return mpfr_get_d(r7810, MPFR_RNDN);
}

