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

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


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

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

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 r7672, r7673, r7674, r7675, r7676, r7677, r7678, r7679, r7680, r7681;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7672);
        mpfr_init(r7673);
        mpfr_init(r7674);
        mpfr_init(r7675);
        mpfr_init(r7676);
        mpfr_init(r7677);
        mpfr_init(r7678);
        mpfr_init(r7679);
        mpfr_init(r7680);
        mpfr_init(r7681);
}

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

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7682);
        mpfr_init_set_str(r7683, "-1.419901435117473e+81", 10, MPFR_RNDN);
        mpfr_init(r7684);
        mpfr_init_set_str(r7685, "-2", 10, MPFR_RNDN);
        mpfr_init(r7686);
        mpfr_init(r7687);
        mpfr_init(r7688);
        mpfr_init_set_str(r7689, "2.6504134482900307e-73", 10, MPFR_RNDN);
        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(r7698);
        mpfr_init(r7699);
        mpfr_init(r7700);
        mpfr_init_set_str(r7701, "1", 10, MPFR_RNDN);
        mpfr_init(r7702);
        mpfr_init(r7703);
        mpfr_init(r7704);
        mpfr_init(r7705);
        mpfr_init(r7706);
}

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

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r7707);
        mpfr_init_set_str(r7708, "-1.419901435117473e+81", 10, MPFR_RNDN);
        mpfr_init(r7709);
        mpfr_init_set_str(r7710, "-2", 10, MPFR_RNDN);
        mpfr_init(r7711);
        mpfr_init(r7712);
        mpfr_init(r7713);
        mpfr_init_set_str(r7714, "2.6504134482900307e-73", 10, MPFR_RNDN);
        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(r7723);
        mpfr_init(r7724);
        mpfr_init(r7725);
        mpfr_init_set_str(r7726, "1", 10, MPFR_RNDN);
        mpfr_init(r7727);
        mpfr_init(r7728);
        mpfr_init(r7729);
        mpfr_init(r7730);
        mpfr_init(r7731);
}

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

