#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 r7599 = b_2;
        float r7600 = -r7599;
        float r7601 = r7599 * r7599;
        float r7602 = a;
        float r7603 = c;
        float r7604 = r7602 * r7603;
        float r7605 = r7601 - r7604;
        float r7606 = sqrt(r7605);
        float r7607 = r7600 + r7606;
        float r7608 = r7607 / r7602;
        return r7608;
}

double f_id(double a, double b_2, double c) {
        double r7609 = b_2;
        double r7610 = -r7609;
        double r7611 = r7609 * r7609;
        double r7612 = a;
        double r7613 = c;
        double r7614 = r7612 * r7613;
        double r7615 = r7611 - r7614;
        double r7616 = sqrt(r7615);
        double r7617 = r7610 + r7616;
        double r7618 = r7617 / r7612;
        return r7618;
}


double f_of(float a, float b_2, float c) {
        float r7619 = b_2;
        float r7620 = -1.1499229206927056e+81f;
        bool r7621 = r7619 <= r7620;
        float r7622 = -2.0f;
        float r7623 = a;
        float r7624 = r7619 / r7623;
        float r7625 = r7622 * r7624;
        float r7626 = 2.1019647236896475e-73f;
        bool r7627 = r7619 <= r7626;
        float r7628 = -r7619;
        float r7629 = cbrt(r7628);
        float r7630 = r7629 * r7629;
        float r7631 = r7619 * r7619;
        float r7632 = c;
        float r7633 = r7623 * r7632;
        float r7634 = r7631 - r7633;
        float r7635 = sqrt(r7634);
        float r7636 = fma(r7630, r7629, r7635);
        float r7637 = r7636 / r7623;
        float r7638 = 1.0f;
        float r7639 = r7619 / r7632;
        float r7640 = r7639 * r7622;
        float r7641 = r7638 / r7640;
        float r7642 = r7627 ? r7637 : r7641;
        float r7643 = r7621 ? r7625 : r7642;
        return r7643;
}

double f_od(double a, double b_2, double c) {
        double r7644 = b_2;
        double r7645 = -1.1499229206927056e+81;
        bool r7646 = r7644 <= r7645;
        double r7647 = -2.0;
        double r7648 = a;
        double r7649 = r7644 / r7648;
        double r7650 = r7647 * r7649;
        double r7651 = 2.1019647236896475e-73;
        bool r7652 = r7644 <= r7651;
        double r7653 = -r7644;
        double r7654 = cbrt(r7653);
        double r7655 = r7654 * r7654;
        double r7656 = r7644 * r7644;
        double r7657 = c;
        double r7658 = r7648 * r7657;
        double r7659 = r7656 - r7658;
        double r7660 = sqrt(r7659);
        double r7661 = fma(r7655, r7654, r7660);
        double r7662 = r7661 / r7648;
        double r7663 = 1.0;
        double r7664 = r7644 / r7657;
        double r7665 = r7664 * r7647;
        double r7666 = r7663 / r7665;
        double r7667 = r7652 ? r7662 : r7666;
        double r7668 = r7646 ? r7650 : r7667;
        return r7668;
}

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 r7669, r7670, r7671, r7672, r7673, r7674, r7675, r7676, r7677, r7678;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3152);
        mpfr_init(r7669);
        mpfr_init(r7670);
        mpfr_init(r7671);
        mpfr_init(r7672);
        mpfr_init(r7673);
        mpfr_init(r7674);
        mpfr_init(r7675);
        mpfr_init(r7676);
        mpfr_init(r7677);
        mpfr_init(r7678);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r7669, b_2, MPFR_RNDN);
        mpfr_neg(r7670, r7669, MPFR_RNDN);
        mpfr_mul(r7671, r7669, r7669, MPFR_RNDN);
        mpfr_set_d(r7672, a, MPFR_RNDN);
        mpfr_set_d(r7673, c, MPFR_RNDN);
        mpfr_mul(r7674, r7672, r7673, MPFR_RNDN);
        mpfr_sub(r7675, r7671, r7674, MPFR_RNDN);
        mpfr_sqrt(r7676, r7675, MPFR_RNDN);
        mpfr_add(r7677, r7670, r7676, MPFR_RNDN);
        mpfr_div(r7678, r7677, r7672, MPFR_RNDN);
        return mpfr_get_d(r7678, MPFR_RNDN);
}

static mpfr_t r7679, r7680, r7681, r7682, r7683, r7684, r7685, r7686, r7687, r7688, r7689, r7690, r7691, r7692, r7693, r7694, r7695, r7696, r7697, r7698, r7699, r7700, r7701, r7702, r7703;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r7679);
        mpfr_init_set_str(r7680, "-1.1499229206927056e+81", 10, MPFR_RNDN);
        mpfr_init(r7681);
        mpfr_init_set_str(r7682, "-2", 10, MPFR_RNDN);
        mpfr_init(r7683);
        mpfr_init(r7684);
        mpfr_init(r7685);
        mpfr_init_set_str(r7686, "2.1019647236896475e-73", 10, MPFR_RNDN);
        mpfr_init(r7687);
        mpfr_init(r7688);
        mpfr_init(r7689);
        mpfr_init(r7690);
        mpfr_init(r7691);
        mpfr_init(r7692);
        mpfr_init(r7693);
        mpfr_init(r7694);
        mpfr_init(r7695);
        mpfr_init(r7696);
        mpfr_init(r7697);
        mpfr_init_set_str(r7698, "1", 10, MPFR_RNDN);
        mpfr_init(r7699);
        mpfr_init(r7700);
        mpfr_init(r7701);
        mpfr_init(r7702);
        mpfr_init(r7703);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r7679, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r7681, mpfr_cmp(r7679, r7680) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r7683, a, MPFR_RNDN);
        mpfr_div(r7684, r7679, r7683, MPFR_RNDN);
        mpfr_mul(r7685, r7682, r7684, MPFR_RNDN);
        ;
        mpfr_set_si(r7687, mpfr_cmp(r7679, r7686) <= 0, MPFR_RNDN);
        mpfr_neg(r7688, r7679, MPFR_RNDN);
        mpfr_cbrt(r7689, r7688, MPFR_RNDN);
        mpfr_mul(r7690, r7689, r7689, MPFR_RNDN);
        mpfr_mul(r7691, r7679, r7679, MPFR_RNDN);
        mpfr_set_d(r7692, c, MPFR_RNDN);
        mpfr_mul(r7693, r7683, r7692, MPFR_RNDN);
        mpfr_sub(r7694, r7691, r7693, MPFR_RNDN);
        mpfr_sqrt(r7695, r7694, MPFR_RNDN);
        mpfr_fma(r7696, r7690, r7689, r7695, MPFR_RNDN);
        mpfr_div(r7697, r7696, r7683, MPFR_RNDN);
        ;
        mpfr_div(r7699, r7679, r7692, MPFR_RNDN);
        mpfr_mul(r7700, r7699, r7682, MPFR_RNDN);
        mpfr_div(r7701, r7698, r7700, MPFR_RNDN);
        if (mpfr_get_si(r7687, MPFR_RNDN)) { mpfr_set(r7702, r7697, MPFR_RNDN); } else { mpfr_set(r7702, r7701, MPFR_RNDN); };
        if (mpfr_get_si(r7681, MPFR_RNDN)) { mpfr_set(r7703, r7685, MPFR_RNDN); } else { mpfr_set(r7703, r7702, MPFR_RNDN); };
        return mpfr_get_d(r7703, MPFR_RNDN);
}

static mpfr_t r7704, r7705, r7706, r7707, r7708, r7709, r7710, r7711, r7712, r7713, r7714, r7715, r7716, r7717, r7718, r7719, r7720, r7721, r7722, r7723, r7724, r7725, r7726, r7727, r7728;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3152);
        mpfr_init(r7704);
        mpfr_init_set_str(r7705, "-1.1499229206927056e+81", 10, MPFR_RNDN);
        mpfr_init(r7706);
        mpfr_init_set_str(r7707, "-2", 10, MPFR_RNDN);
        mpfr_init(r7708);
        mpfr_init(r7709);
        mpfr_init(r7710);
        mpfr_init_set_str(r7711, "2.1019647236896475e-73", 10, MPFR_RNDN);
        mpfr_init(r7712);
        mpfr_init(r7713);
        mpfr_init(r7714);
        mpfr_init(r7715);
        mpfr_init(r7716);
        mpfr_init(r7717);
        mpfr_init(r7718);
        mpfr_init(r7719);
        mpfr_init(r7720);
        mpfr_init(r7721);
        mpfr_init(r7722);
        mpfr_init_set_str(r7723, "1", 10, MPFR_RNDN);
        mpfr_init(r7724);
        mpfr_init(r7725);
        mpfr_init(r7726);
        mpfr_init(r7727);
        mpfr_init(r7728);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r7704, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r7706, mpfr_cmp(r7704, r7705) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r7708, a, MPFR_RNDN);
        mpfr_div(r7709, r7704, r7708, MPFR_RNDN);
        mpfr_mul(r7710, r7707, r7709, MPFR_RNDN);
        ;
        mpfr_set_si(r7712, mpfr_cmp(r7704, r7711) <= 0, MPFR_RNDN);
        mpfr_neg(r7713, r7704, MPFR_RNDN);
        mpfr_cbrt(r7714, r7713, MPFR_RNDN);
        mpfr_mul(r7715, r7714, r7714, MPFR_RNDN);
        mpfr_mul(r7716, r7704, r7704, MPFR_RNDN);
        mpfr_set_d(r7717, c, MPFR_RNDN);
        mpfr_mul(r7718, r7708, r7717, MPFR_RNDN);
        mpfr_sub(r7719, r7716, r7718, MPFR_RNDN);
        mpfr_sqrt(r7720, r7719, MPFR_RNDN);
        mpfr_fma(r7721, r7715, r7714, r7720, MPFR_RNDN);
        mpfr_div(r7722, r7721, r7708, MPFR_RNDN);
        ;
        mpfr_div(r7724, r7704, r7717, MPFR_RNDN);
        mpfr_mul(r7725, r7724, r7707, MPFR_RNDN);
        mpfr_div(r7726, r7723, r7725, MPFR_RNDN);
        if (mpfr_get_si(r7712, MPFR_RNDN)) { mpfr_set(r7727, r7722, MPFR_RNDN); } else { mpfr_set(r7727, r7726, MPFR_RNDN); };
        if (mpfr_get_si(r7706, MPFR_RNDN)) { mpfr_set(r7728, r7710, MPFR_RNDN); } else { mpfr_set(r7728, r7727, MPFR_RNDN); };
        return mpfr_get_d(r7728, MPFR_RNDN);
}

