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

char *name = "NMSE problem 3.2.1";

double f_if(float a, float b_2, float c) {
        float r9723 = b_2;
        float r9724 = -r9723;
        float r9725 = r9723 * r9723;
        float r9726 = a;
        float r9727 = c;
        float r9728 = r9726 * r9727;
        float r9729 = r9725 - r9728;
        float r9730 = sqrt(r9729);
        float r9731 = r9724 - r9730;
        float r9732 = r9731 / r9726;
        return r9732;
}

double f_id(double a, double b_2, double c) {
        double r9733 = b_2;
        double r9734 = -r9733;
        double r9735 = r9733 * r9733;
        double r9736 = a;
        double r9737 = c;
        double r9738 = r9736 * r9737;
        double r9739 = r9735 - r9738;
        double r9740 = sqrt(r9739);
        double r9741 = r9734 - r9740;
        double r9742 = r9741 / r9736;
        return r9742;
}


double f_of(float a, float b_2, float c) {
        float r9743 = b_2;
        float r9744 = -12994633806777052.0;
        bool r9745 = r9743 <= r9744;
        float r9746 = -1/2;
        float r9747 = c;
        float r9748 = r9746 * r9747;
        float r9749 = r9748 / r9743;
        float r9750 = -2.0503675161606082e-282;
        bool r9751 = r9743 <= r9750;
        float r9752 = a;
        float r9753 = r9743 * r9743;
        float r9754 = r9747 * r9752;
        float r9755 = r9753 - r9754;
        float r9756 = sqrt(r9755);
        float r9757 = r9756 - r9743;
        float r9758 = r9752 / r9757;
        float r9759 = r9747 * r9758;
        float r9760 = r9759 / r9752;
        float r9761 = 3.715525201511079e+82;
        bool r9762 = r9743 <= r9761;
        float r9763 = 1;
        float r9764 = -r9743;
        float r9765 = r9752 * r9747;
        float r9766 = r9753 - r9765;
        float r9767 = sqrt(r9766);
        float r9768 = r9764 - r9767;
        float r9769 = r9752 / r9768;
        float r9770 = r9763 / r9769;
        float r9771 = -2;
        float r9772 = r9743 / r9752;
        float r9773 = r9771 * r9772;
        float r9774 = r9762 ? r9770 : r9773;
        float r9775 = r9751 ? r9760 : r9774;
        float r9776 = r9745 ? r9749 : r9775;
        return r9776;
}

double f_od(double a, double b_2, double c) {
        double r9777 = b_2;
        double r9778 = -12994633806777052.0;
        bool r9779 = r9777 <= r9778;
        double r9780 = -1/2;
        double r9781 = c;
        double r9782 = r9780 * r9781;
        double r9783 = r9782 / r9777;
        double r9784 = -2.0503675161606082e-282;
        bool r9785 = r9777 <= r9784;
        double r9786 = a;
        double r9787 = r9777 * r9777;
        double r9788 = r9781 * r9786;
        double r9789 = r9787 - r9788;
        double r9790 = sqrt(r9789);
        double r9791 = r9790 - r9777;
        double r9792 = r9786 / r9791;
        double r9793 = r9781 * r9792;
        double r9794 = r9793 / r9786;
        double r9795 = 3.715525201511079e+82;
        bool r9796 = r9777 <= r9795;
        double r9797 = 1;
        double r9798 = -r9777;
        double r9799 = r9786 * r9781;
        double r9800 = r9787 - r9799;
        double r9801 = sqrt(r9800);
        double r9802 = r9798 - r9801;
        double r9803 = r9786 / r9802;
        double r9804 = r9797 / r9803;
        double r9805 = -2;
        double r9806 = r9777 / r9786;
        double r9807 = r9805 * r9806;
        double r9808 = r9796 ? r9804 : r9807;
        double r9809 = r9785 ? r9794 : r9808;
        double r9810 = r9779 ? r9783 : r9809;
        return r9810;
}

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 r9811, r9812, r9813, r9814, r9815, r9816, r9817, r9818, r9819, r9820;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9811);
        mpfr_init(r9812);
        mpfr_init(r9813);
        mpfr_init(r9814);
        mpfr_init(r9815);
        mpfr_init(r9816);
        mpfr_init(r9817);
        mpfr_init(r9818);
        mpfr_init(r9819);
        mpfr_init(r9820);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r9811, b_2, MPFR_RNDN);
        mpfr_neg(r9812, r9811, MPFR_RNDN);
        mpfr_mul(r9813, r9811, r9811, MPFR_RNDN);
        mpfr_set_d(r9814, a, MPFR_RNDN);
        mpfr_set_d(r9815, c, MPFR_RNDN);
        mpfr_mul(r9816, r9814, r9815, MPFR_RNDN);
        mpfr_sub(r9817, r9813, r9816, MPFR_RNDN);
        mpfr_sqrt(r9818, r9817, MPFR_RNDN);
        mpfr_sub(r9819, r9812, r9818, MPFR_RNDN);
        mpfr_div(r9820, r9819, r9814, MPFR_RNDN);
        return mpfr_get_d(r9820, MPFR_RNDN);
}

static mpfr_t r9821, r9822, r9823, r9824, r9825, r9826, r9827, r9828, r9829, r9830, r9831, r9832, r9833, r9834, r9835, r9836, r9837, r9838, r9839, r9840, r9841, r9842, r9843, r9844, r9845, r9846, r9847, r9848, r9849, r9850, r9851, r9852, r9853, r9854;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9821);
        mpfr_init_set_str(r9822, "-12994633806777052.0", 10, MPFR_RNDN);
        mpfr_init(r9823);
        mpfr_init_set_str(r9824, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r9825);
        mpfr_init(r9826);
        mpfr_init(r9827);
        mpfr_init_set_str(r9828, "-2.0503675161606082e-282", 10, MPFR_RNDN);
        mpfr_init(r9829);
        mpfr_init(r9830);
        mpfr_init(r9831);
        mpfr_init(r9832);
        mpfr_init(r9833);
        mpfr_init(r9834);
        mpfr_init(r9835);
        mpfr_init(r9836);
        mpfr_init(r9837);
        mpfr_init(r9838);
        mpfr_init_set_str(r9839, "3.715525201511079e+82", 10, MPFR_RNDN);
        mpfr_init(r9840);
        mpfr_init_set_str(r9841, "1", 10, MPFR_RNDN);
        mpfr_init(r9842);
        mpfr_init(r9843);
        mpfr_init(r9844);
        mpfr_init(r9845);
        mpfr_init(r9846);
        mpfr_init(r9847);
        mpfr_init(r9848);
        mpfr_init_set_str(r9849, "-2", 10, MPFR_RNDN);
        mpfr_init(r9850);
        mpfr_init(r9851);
        mpfr_init(r9852);
        mpfr_init(r9853);
        mpfr_init(r9854);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r9821, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9823, mpfr_cmp(r9821, r9822) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r9825, c, MPFR_RNDN);
        mpfr_mul(r9826, r9824, r9825, MPFR_RNDN);
        mpfr_div(r9827, r9826, r9821, MPFR_RNDN);
        ;
        mpfr_set_si(r9829, mpfr_cmp(r9821, r9828) <= 0, MPFR_RNDN);
        mpfr_set_d(r9830, a, MPFR_RNDN);
        mpfr_mul(r9831, r9821, r9821, MPFR_RNDN);
        mpfr_mul(r9832, r9825, r9830, MPFR_RNDN);
        mpfr_sub(r9833, r9831, r9832, MPFR_RNDN);
        mpfr_sqrt(r9834, r9833, MPFR_RNDN);
        mpfr_sub(r9835, r9834, r9821, MPFR_RNDN);
        mpfr_div(r9836, r9830, r9835, MPFR_RNDN);
        mpfr_mul(r9837, r9825, r9836, MPFR_RNDN);
        mpfr_div(r9838, r9837, r9830, MPFR_RNDN);
        ;
        mpfr_set_si(r9840, mpfr_cmp(r9821, r9839) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r9842, r9821, MPFR_RNDN);
        mpfr_mul(r9843, r9830, r9825, MPFR_RNDN);
        mpfr_sub(r9844, r9831, r9843, MPFR_RNDN);
        mpfr_sqrt(r9845, r9844, MPFR_RNDN);
        mpfr_sub(r9846, r9842, r9845, MPFR_RNDN);
        mpfr_div(r9847, r9830, r9846, MPFR_RNDN);
        mpfr_div(r9848, r9841, r9847, MPFR_RNDN);
        ;
        mpfr_div(r9850, r9821, r9830, MPFR_RNDN);
        mpfr_mul(r9851, r9849, r9850, MPFR_RNDN);
        if (mpfr_get_si(r9840, MPFR_RNDN)) { mpfr_set(r9852, r9848, MPFR_RNDN); } else { mpfr_set(r9852, r9851, MPFR_RNDN); };
        if (mpfr_get_si(r9829, MPFR_RNDN)) { mpfr_set(r9853, r9838, MPFR_RNDN); } else { mpfr_set(r9853, r9852, MPFR_RNDN); };
        if (mpfr_get_si(r9823, MPFR_RNDN)) { mpfr_set(r9854, r9827, MPFR_RNDN); } else { mpfr_set(r9854, r9853, MPFR_RNDN); };
        return mpfr_get_d(r9854, MPFR_RNDN);
}

static mpfr_t r9855, r9856, r9857, r9858, r9859, r9860, r9861, r9862, r9863, r9864, r9865, r9866, r9867, r9868, r9869, r9870, r9871, r9872, r9873, r9874, r9875, r9876, r9877, r9878, r9879, r9880, r9881, r9882, r9883, r9884, r9885, r9886, r9887, r9888;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9855);
        mpfr_init_set_str(r9856, "-12994633806777052.0", 10, MPFR_RNDN);
        mpfr_init(r9857);
        mpfr_init_set_str(r9858, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r9859);
        mpfr_init(r9860);
        mpfr_init(r9861);
        mpfr_init_set_str(r9862, "-2.0503675161606082e-282", 10, MPFR_RNDN);
        mpfr_init(r9863);
        mpfr_init(r9864);
        mpfr_init(r9865);
        mpfr_init(r9866);
        mpfr_init(r9867);
        mpfr_init(r9868);
        mpfr_init(r9869);
        mpfr_init(r9870);
        mpfr_init(r9871);
        mpfr_init(r9872);
        mpfr_init_set_str(r9873, "3.715525201511079e+82", 10, MPFR_RNDN);
        mpfr_init(r9874);
        mpfr_init_set_str(r9875, "1", 10, MPFR_RNDN);
        mpfr_init(r9876);
        mpfr_init(r9877);
        mpfr_init(r9878);
        mpfr_init(r9879);
        mpfr_init(r9880);
        mpfr_init(r9881);
        mpfr_init(r9882);
        mpfr_init_set_str(r9883, "-2", 10, MPFR_RNDN);
        mpfr_init(r9884);
        mpfr_init(r9885);
        mpfr_init(r9886);
        mpfr_init(r9887);
        mpfr_init(r9888);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r9855, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9857, mpfr_cmp(r9855, r9856) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r9859, c, MPFR_RNDN);
        mpfr_mul(r9860, r9858, r9859, MPFR_RNDN);
        mpfr_div(r9861, r9860, r9855, MPFR_RNDN);
        ;
        mpfr_set_si(r9863, mpfr_cmp(r9855, r9862) <= 0, MPFR_RNDN);
        mpfr_set_d(r9864, a, MPFR_RNDN);
        mpfr_mul(r9865, r9855, r9855, MPFR_RNDN);
        mpfr_mul(r9866, r9859, r9864, MPFR_RNDN);
        mpfr_sub(r9867, r9865, r9866, MPFR_RNDN);
        mpfr_sqrt(r9868, r9867, MPFR_RNDN);
        mpfr_sub(r9869, r9868, r9855, MPFR_RNDN);
        mpfr_div(r9870, r9864, r9869, MPFR_RNDN);
        mpfr_mul(r9871, r9859, r9870, MPFR_RNDN);
        mpfr_div(r9872, r9871, r9864, MPFR_RNDN);
        ;
        mpfr_set_si(r9874, mpfr_cmp(r9855, r9873) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r9876, r9855, MPFR_RNDN);
        mpfr_mul(r9877, r9864, r9859, MPFR_RNDN);
        mpfr_sub(r9878, r9865, r9877, MPFR_RNDN);
        mpfr_sqrt(r9879, r9878, MPFR_RNDN);
        mpfr_sub(r9880, r9876, r9879, MPFR_RNDN);
        mpfr_div(r9881, r9864, r9880, MPFR_RNDN);
        mpfr_div(r9882, r9875, r9881, MPFR_RNDN);
        ;
        mpfr_div(r9884, r9855, r9864, MPFR_RNDN);
        mpfr_mul(r9885, r9883, r9884, MPFR_RNDN);
        if (mpfr_get_si(r9874, MPFR_RNDN)) { mpfr_set(r9886, r9882, MPFR_RNDN); } else { mpfr_set(r9886, r9885, MPFR_RNDN); };
        if (mpfr_get_si(r9863, MPFR_RNDN)) { mpfr_set(r9887, r9872, MPFR_RNDN); } else { mpfr_set(r9887, r9886, MPFR_RNDN); };
        if (mpfr_get_si(r9857, MPFR_RNDN)) { mpfr_set(r9888, r9861, MPFR_RNDN); } else { mpfr_set(r9888, r9887, MPFR_RNDN); };
        return mpfr_get_d(r9888, MPFR_RNDN);
}

