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

char *name = "quadp (p42, positive)";

double f_if(float a, float b, float c) {
        float r37705 = b;
        float r37706 = -r37705;
        float r37707 = r37705 * r37705;
        float r37708 = 4;
        float r37709 = a;
        float r37710 = c;
        float r37711 = r37709 * r37710;
        float r37712 = r37708 * r37711;
        float r37713 = r37707 - r37712;
        float r37714 = sqrt(r37713);
        float r37715 = r37706 + r37714;
        float r37716 = 2;
        float r37717 = r37716 * r37709;
        float r37718 = r37715 / r37717;
        return r37718;
}

double f_id(double a, double b, double c) {
        double r37719 = b;
        double r37720 = -r37719;
        double r37721 = r37719 * r37719;
        double r37722 = 4;
        double r37723 = a;
        double r37724 = c;
        double r37725 = r37723 * r37724;
        double r37726 = r37722 * r37725;
        double r37727 = r37721 - r37726;
        double r37728 = sqrt(r37727);
        double r37729 = r37720 + r37728;
        double r37730 = 2;
        double r37731 = r37730 * r37723;
        double r37732 = r37729 / r37731;
        return r37732;
}


double f_of(float a, float b, float c) {
        float r37733 = b;
        float r37734 = -8.111805193496531e+152;
        bool r37735 = r37733 <= r37734;
        float r37736 = -r37733;
        float r37737 = a;
        float r37738 = r37736 / r37737;
        float r37739 = 7.580412743766101e-138;
        bool r37740 = r37733 <= r37739;
        float r37741 = r37733 * r37733;
        float r37742 = 4;
        float r37743 = c;
        float r37744 = r37742 * r37743;
        float r37745 = r37744 * r37737;
        float r37746 = r37741 - r37745;
        float r37747 = sqrt(r37746);
        float r37748 = -r37747;
        float r37749 = r37733 + r37748;
        float r37750 = 2;
        float r37751 = r37750 * r37737;
        float r37752 = -r37751;
        float r37753 = r37749 / r37752;
        float r37754 = r37743 / r37733;
        float r37755 = -2;
        float r37756 = r37755 / r37750;
        float r37757 = r37754 * r37756;
        float r37758 = r37740 ? r37753 : r37757;
        float r37759 = r37735 ? r37738 : r37758;
        return r37759;
}

double f_od(double a, double b, double c) {
        double r37760 = b;
        double r37761 = -8.111805193496531e+152;
        bool r37762 = r37760 <= r37761;
        double r37763 = -r37760;
        double r37764 = a;
        double r37765 = r37763 / r37764;
        double r37766 = 7.580412743766101e-138;
        bool r37767 = r37760 <= r37766;
        double r37768 = r37760 * r37760;
        double r37769 = 4;
        double r37770 = c;
        double r37771 = r37769 * r37770;
        double r37772 = r37771 * r37764;
        double r37773 = r37768 - r37772;
        double r37774 = sqrt(r37773);
        double r37775 = -r37774;
        double r37776 = r37760 + r37775;
        double r37777 = 2;
        double r37778 = r37777 * r37764;
        double r37779 = -r37778;
        double r37780 = r37776 / r37779;
        double r37781 = r37770 / r37760;
        double r37782 = -2;
        double r37783 = r37782 / r37777;
        double r37784 = r37781 * r37783;
        double r37785 = r37767 ? r37780 : r37784;
        double r37786 = r37762 ? r37765 : r37785;
        return r37786;
}

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 r37787, r37788, r37789, r37790, r37791, r37792, r37793, r37794, r37795, r37796, r37797, r37798, r37799, r37800;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r37787);
        mpfr_init(r37788);
        mpfr_init(r37789);
        mpfr_init_set_str(r37790, "4", 10, MPFR_RNDN);
        mpfr_init(r37791);
        mpfr_init(r37792);
        mpfr_init(r37793);
        mpfr_init(r37794);
        mpfr_init(r37795);
        mpfr_init(r37796);
        mpfr_init(r37797);
        mpfr_init_set_str(r37798, "2", 10, MPFR_RNDN);
        mpfr_init(r37799);
        mpfr_init(r37800);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r37787, b, MPFR_RNDN);
        mpfr_neg(r37788, r37787, MPFR_RNDN);
        mpfr_mul(r37789, r37787, r37787, MPFR_RNDN);
        ;
        mpfr_set_d(r37791, a, MPFR_RNDN);
        mpfr_set_d(r37792, c, MPFR_RNDN);
        mpfr_mul(r37793, r37791, r37792, MPFR_RNDN);
        mpfr_mul(r37794, r37790, r37793, MPFR_RNDN);
        mpfr_sub(r37795, r37789, r37794, MPFR_RNDN);
        mpfr_sqrt(r37796, r37795, MPFR_RNDN);
        mpfr_add(r37797, r37788, r37796, MPFR_RNDN);
        ;
        mpfr_mul(r37799, r37798, r37791, MPFR_RNDN);
        mpfr_div(r37800, r37797, r37799, MPFR_RNDN);
        return mpfr_get_d(r37800, MPFR_RNDN);
}

static mpfr_t r37801, r37802, r37803, r37804, r37805, r37806, r37807, r37808, r37809, r37810, r37811, r37812, r37813, r37814, r37815, r37816, r37817, r37818, r37819, r37820, r37821, r37822, r37823, r37824, r37825, r37826, r37827;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r37801);
        mpfr_init_set_str(r37802, "-8.111805193496531e+152", 10, MPFR_RNDN);
        mpfr_init(r37803);
        mpfr_init(r37804);
        mpfr_init(r37805);
        mpfr_init(r37806);
        mpfr_init_set_str(r37807, "7.580412743766101e-138", 10, MPFR_RNDN);
        mpfr_init(r37808);
        mpfr_init(r37809);
        mpfr_init_set_str(r37810, "4", 10, MPFR_RNDN);
        mpfr_init(r37811);
        mpfr_init(r37812);
        mpfr_init(r37813);
        mpfr_init(r37814);
        mpfr_init(r37815);
        mpfr_init(r37816);
        mpfr_init(r37817);
        mpfr_init_set_str(r37818, "2", 10, MPFR_RNDN);
        mpfr_init(r37819);
        mpfr_init(r37820);
        mpfr_init(r37821);
        mpfr_init(r37822);
        mpfr_init_set_str(r37823, "-2", 10, MPFR_RNDN);
        mpfr_init(r37824);
        mpfr_init(r37825);
        mpfr_init(r37826);
        mpfr_init(r37827);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r37801, b, MPFR_RNDN);
        ;
        mpfr_set_si(r37803, mpfr_cmp(r37801, r37802) <= 0, MPFR_RNDN);
        mpfr_neg(r37804, r37801, MPFR_RNDN);
        mpfr_set_d(r37805, a, MPFR_RNDN);
        mpfr_div(r37806, r37804, r37805, MPFR_RNDN);
        ;
        mpfr_set_si(r37808, mpfr_cmp(r37801, r37807) <= 0, MPFR_RNDN);
        mpfr_mul(r37809, r37801, r37801, MPFR_RNDN);
        ;
        mpfr_set_d(r37811, c, MPFR_RNDN);
        mpfr_mul(r37812, r37810, r37811, MPFR_RNDN);
        mpfr_mul(r37813, r37812, r37805, MPFR_RNDN);
        mpfr_sub(r37814, r37809, r37813, MPFR_RNDN);
        mpfr_sqrt(r37815, r37814, MPFR_RNDN);
        mpfr_neg(r37816, r37815, MPFR_RNDN);
        mpfr_add(r37817, r37801, r37816, MPFR_RNDN);
        ;
        mpfr_mul(r37819, r37818, r37805, MPFR_RNDN);
        mpfr_neg(r37820, r37819, MPFR_RNDN);
        mpfr_div(r37821, r37817, r37820, MPFR_RNDN);
        mpfr_div(r37822, r37811, r37801, MPFR_RNDN);
        ;
        mpfr_div(r37824, r37823, r37818, MPFR_RNDN);
        mpfr_mul(r37825, r37822, r37824, MPFR_RNDN);
        if (mpfr_get_si(r37808, MPFR_RNDN)) { mpfr_set(r37826, r37821, MPFR_RNDN); } else { mpfr_set(r37826, r37825, MPFR_RNDN); };
        if (mpfr_get_si(r37803, MPFR_RNDN)) { mpfr_set(r37827, r37806, MPFR_RNDN); } else { mpfr_set(r37827, r37826, MPFR_RNDN); };
        return mpfr_get_d(r37827, MPFR_RNDN);
}

static mpfr_t r37828, r37829, r37830, r37831, r37832, r37833, r37834, r37835, r37836, r37837, r37838, r37839, r37840, r37841, r37842, r37843, r37844, r37845, r37846, r37847, r37848, r37849, r37850, r37851, r37852, r37853, r37854;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r37828);
        mpfr_init_set_str(r37829, "-8.111805193496531e+152", 10, MPFR_RNDN);
        mpfr_init(r37830);
        mpfr_init(r37831);
        mpfr_init(r37832);
        mpfr_init(r37833);
        mpfr_init_set_str(r37834, "7.580412743766101e-138", 10, MPFR_RNDN);
        mpfr_init(r37835);
        mpfr_init(r37836);
        mpfr_init_set_str(r37837, "4", 10, MPFR_RNDN);
        mpfr_init(r37838);
        mpfr_init(r37839);
        mpfr_init(r37840);
        mpfr_init(r37841);
        mpfr_init(r37842);
        mpfr_init(r37843);
        mpfr_init(r37844);
        mpfr_init_set_str(r37845, "2", 10, MPFR_RNDN);
        mpfr_init(r37846);
        mpfr_init(r37847);
        mpfr_init(r37848);
        mpfr_init(r37849);
        mpfr_init_set_str(r37850, "-2", 10, MPFR_RNDN);
        mpfr_init(r37851);
        mpfr_init(r37852);
        mpfr_init(r37853);
        mpfr_init(r37854);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r37828, b, MPFR_RNDN);
        ;
        mpfr_set_si(r37830, mpfr_cmp(r37828, r37829) <= 0, MPFR_RNDN);
        mpfr_neg(r37831, r37828, MPFR_RNDN);
        mpfr_set_d(r37832, a, MPFR_RNDN);
        mpfr_div(r37833, r37831, r37832, MPFR_RNDN);
        ;
        mpfr_set_si(r37835, mpfr_cmp(r37828, r37834) <= 0, MPFR_RNDN);
        mpfr_mul(r37836, r37828, r37828, MPFR_RNDN);
        ;
        mpfr_set_d(r37838, c, MPFR_RNDN);
        mpfr_mul(r37839, r37837, r37838, MPFR_RNDN);
        mpfr_mul(r37840, r37839, r37832, MPFR_RNDN);
        mpfr_sub(r37841, r37836, r37840, MPFR_RNDN);
        mpfr_sqrt(r37842, r37841, MPFR_RNDN);
        mpfr_neg(r37843, r37842, MPFR_RNDN);
        mpfr_add(r37844, r37828, r37843, MPFR_RNDN);
        ;
        mpfr_mul(r37846, r37845, r37832, MPFR_RNDN);
        mpfr_neg(r37847, r37846, MPFR_RNDN);
        mpfr_div(r37848, r37844, r37847, MPFR_RNDN);
        mpfr_div(r37849, r37838, r37828, MPFR_RNDN);
        ;
        mpfr_div(r37851, r37850, r37845, MPFR_RNDN);
        mpfr_mul(r37852, r37849, r37851, MPFR_RNDN);
        if (mpfr_get_si(r37835, MPFR_RNDN)) { mpfr_set(r37853, r37848, MPFR_RNDN); } else { mpfr_set(r37853, r37852, MPFR_RNDN); };
        if (mpfr_get_si(r37830, MPFR_RNDN)) { mpfr_set(r37854, r37833, MPFR_RNDN); } else { mpfr_set(r37854, r37853, MPFR_RNDN); };
        return mpfr_get_d(r37854, MPFR_RNDN);
}

