#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 r9749 = b_2;
        float r9750 = -r9749;
        float r9751 = r9749 * r9749;
        float r9752 = a;
        float r9753 = c;
        float r9754 = r9752 * r9753;
        float r9755 = r9751 - r9754;
        float r9756 = sqrt(r9755);
        float r9757 = r9750 - r9756;
        float r9758 = r9757 / r9752;
        return r9758;
}

double f_id(double a, double b_2, double c) {
        double r9759 = b_2;
        double r9760 = -r9759;
        double r9761 = r9759 * r9759;
        double r9762 = a;
        double r9763 = c;
        double r9764 = r9762 * r9763;
        double r9765 = r9761 - r9764;
        double r9766 = sqrt(r9765);
        double r9767 = r9760 - r9766;
        double r9768 = r9767 / r9762;
        return r9768;
}


double f_of(float a, float b_2, float c) {
        float r9769 = b_2;
        float r9770 = -1.9043593287864955e+87;
        bool r9771 = r9769 <= r9770;
        float r9772 = c;
        float r9773 = -r9772;
        float r9774 = 1/2;
        float r9775 = r9769 / r9774;
        float r9776 = r9773 / r9775;
        float r9777 = -1.4312929690958086e-190;
        bool r9778 = r9769 <= r9777;
        float r9779 = a;
        float r9780 = r9779 * r9772;
        float r9781 = r9769 * r9769;
        float r9782 = r9781 - r9780;
        float r9783 = sqrt(r9782);
        float r9784 = r9783 - r9769;
        float r9785 = r9780 / r9784;
        float r9786 = r9785 / r9779;
        float r9787 = 2.696518439055105e+143;
        bool r9788 = r9769 <= r9787;
        float r9789 = 1;
        float r9790 = -r9769;
        float r9791 = r9790 - r9783;
        float r9792 = r9779 / r9791;
        float r9793 = r9789 / r9792;
        float r9794 = r9772 * r9774;
        float r9795 = r9794 / r9769;
        float r9796 = r9769 / r9779;
        float r9797 = 2;
        float r9798 = r9796 * r9797;
        float r9799 = r9795 - r9798;
        float r9800 = r9788 ? r9793 : r9799;
        float r9801 = r9778 ? r9786 : r9800;
        float r9802 = r9771 ? r9776 : r9801;
        return r9802;
}

double f_od(double a, double b_2, double c) {
        double r9803 = b_2;
        double r9804 = -1.9043593287864955e+87;
        bool r9805 = r9803 <= r9804;
        double r9806 = c;
        double r9807 = -r9806;
        double r9808 = 1/2;
        double r9809 = r9803 / r9808;
        double r9810 = r9807 / r9809;
        double r9811 = -1.4312929690958086e-190;
        bool r9812 = r9803 <= r9811;
        double r9813 = a;
        double r9814 = r9813 * r9806;
        double r9815 = r9803 * r9803;
        double r9816 = r9815 - r9814;
        double r9817 = sqrt(r9816);
        double r9818 = r9817 - r9803;
        double r9819 = r9814 / r9818;
        double r9820 = r9819 / r9813;
        double r9821 = 2.696518439055105e+143;
        bool r9822 = r9803 <= r9821;
        double r9823 = 1;
        double r9824 = -r9803;
        double r9825 = r9824 - r9817;
        double r9826 = r9813 / r9825;
        double r9827 = r9823 / r9826;
        double r9828 = r9806 * r9808;
        double r9829 = r9828 / r9803;
        double r9830 = r9803 / r9813;
        double r9831 = 2;
        double r9832 = r9830 * r9831;
        double r9833 = r9829 - r9832;
        double r9834 = r9822 ? r9827 : r9833;
        double r9835 = r9812 ? r9820 : r9834;
        double r9836 = r9805 ? r9810 : r9835;
        return r9836;
}

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 r9837, r9838, r9839, r9840, r9841, r9842, r9843, r9844, r9845, r9846;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9837);
        mpfr_init(r9838);
        mpfr_init(r9839);
        mpfr_init(r9840);
        mpfr_init(r9841);
        mpfr_init(r9842);
        mpfr_init(r9843);
        mpfr_init(r9844);
        mpfr_init(r9845);
        mpfr_init(r9846);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r9837, b_2, MPFR_RNDN);
        mpfr_neg(r9838, r9837, MPFR_RNDN);
        mpfr_mul(r9839, r9837, r9837, MPFR_RNDN);
        mpfr_set_d(r9840, a, MPFR_RNDN);
        mpfr_set_d(r9841, c, MPFR_RNDN);
        mpfr_mul(r9842, r9840, r9841, MPFR_RNDN);
        mpfr_sub(r9843, r9839, r9842, MPFR_RNDN);
        mpfr_sqrt(r9844, r9843, MPFR_RNDN);
        mpfr_sub(r9845, r9838, r9844, MPFR_RNDN);
        mpfr_div(r9846, r9845, r9840, MPFR_RNDN);
        return mpfr_get_d(r9846, MPFR_RNDN);
}

static mpfr_t r9847, r9848, r9849, r9850, r9851, r9852, r9853, r9854, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9847);
        mpfr_init_set_str(r9848, "-1.9043593287864955e+87", 10, MPFR_RNDN);
        mpfr_init(r9849);
        mpfr_init(r9850);
        mpfr_init(r9851);
        mpfr_init_set_str(r9852, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9853);
        mpfr_init(r9854);
        mpfr_init_set_str(r9855, "-1.4312929690958086e-190", 10, MPFR_RNDN);
        mpfr_init(r9856);
        mpfr_init(r9857);
        mpfr_init(r9858);
        mpfr_init(r9859);
        mpfr_init(r9860);
        mpfr_init(r9861);
        mpfr_init(r9862);
        mpfr_init(r9863);
        mpfr_init(r9864);
        mpfr_init_set_str(r9865, "2.696518439055105e+143", 10, MPFR_RNDN);
        mpfr_init(r9866);
        mpfr_init_set_str(r9867, "1", 10, MPFR_RNDN);
        mpfr_init(r9868);
        mpfr_init(r9869);
        mpfr_init(r9870);
        mpfr_init(r9871);
        mpfr_init(r9872);
        mpfr_init(r9873);
        mpfr_init(r9874);
        mpfr_init_set_str(r9875, "2", 10, MPFR_RNDN);
        mpfr_init(r9876);
        mpfr_init(r9877);
        mpfr_init(r9878);
        mpfr_init(r9879);
        mpfr_init(r9880);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r9847, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9849, mpfr_cmp(r9847, r9848) <= 0, MPFR_RNDN);
        mpfr_set_d(r9850, c, MPFR_RNDN);
        mpfr_neg(r9851, r9850, MPFR_RNDN);
        ;
        mpfr_div(r9853, r9847, r9852, MPFR_RNDN);
        mpfr_div(r9854, r9851, r9853, MPFR_RNDN);
        ;
        mpfr_set_si(r9856, mpfr_cmp(r9847, r9855) <= 0, MPFR_RNDN);
        mpfr_set_d(r9857, a, MPFR_RNDN);
        mpfr_mul(r9858, r9857, r9850, MPFR_RNDN);
        mpfr_mul(r9859, r9847, r9847, MPFR_RNDN);
        mpfr_sub(r9860, r9859, r9858, MPFR_RNDN);
        mpfr_sqrt(r9861, r9860, MPFR_RNDN);
        mpfr_sub(r9862, r9861, r9847, MPFR_RNDN);
        mpfr_div(r9863, r9858, r9862, MPFR_RNDN);
        mpfr_div(r9864, r9863, r9857, MPFR_RNDN);
        ;
        mpfr_set_si(r9866, mpfr_cmp(r9847, r9865) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r9868, r9847, MPFR_RNDN);
        mpfr_sub(r9869, r9868, r9861, MPFR_RNDN);
        mpfr_div(r9870, r9857, r9869, MPFR_RNDN);
        mpfr_div(r9871, r9867, r9870, MPFR_RNDN);
        mpfr_mul(r9872, r9850, r9852, MPFR_RNDN);
        mpfr_div(r9873, r9872, r9847, MPFR_RNDN);
        mpfr_div(r9874, r9847, r9857, MPFR_RNDN);
        ;
        mpfr_mul(r9876, r9874, r9875, MPFR_RNDN);
        mpfr_sub(r9877, r9873, r9876, MPFR_RNDN);
        if (mpfr_get_si(r9866, MPFR_RNDN)) { mpfr_set(r9878, r9871, MPFR_RNDN); } else { mpfr_set(r9878, r9877, MPFR_RNDN); };
        if (mpfr_get_si(r9856, MPFR_RNDN)) { mpfr_set(r9879, r9864, MPFR_RNDN); } else { mpfr_set(r9879, r9878, MPFR_RNDN); };
        if (mpfr_get_si(r9849, MPFR_RNDN)) { mpfr_set(r9880, r9854, MPFR_RNDN); } else { mpfr_set(r9880, r9879, MPFR_RNDN); };
        return mpfr_get_d(r9880, MPFR_RNDN);
}

static mpfr_t r9881, r9882, r9883, r9884, r9885, r9886, r9887, r9888, r9889, r9890, r9891, r9892, r9893, r9894, r9895, r9896, r9897, r9898, r9899, r9900, r9901, r9902, r9903, r9904, r9905, r9906, r9907, r9908, r9909, r9910, r9911, r9912, r9913, r9914;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9881);
        mpfr_init_set_str(r9882, "-1.9043593287864955e+87", 10, MPFR_RNDN);
        mpfr_init(r9883);
        mpfr_init(r9884);
        mpfr_init(r9885);
        mpfr_init_set_str(r9886, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9887);
        mpfr_init(r9888);
        mpfr_init_set_str(r9889, "-1.4312929690958086e-190", 10, MPFR_RNDN);
        mpfr_init(r9890);
        mpfr_init(r9891);
        mpfr_init(r9892);
        mpfr_init(r9893);
        mpfr_init(r9894);
        mpfr_init(r9895);
        mpfr_init(r9896);
        mpfr_init(r9897);
        mpfr_init(r9898);
        mpfr_init_set_str(r9899, "2.696518439055105e+143", 10, MPFR_RNDN);
        mpfr_init(r9900);
        mpfr_init_set_str(r9901, "1", 10, MPFR_RNDN);
        mpfr_init(r9902);
        mpfr_init(r9903);
        mpfr_init(r9904);
        mpfr_init(r9905);
        mpfr_init(r9906);
        mpfr_init(r9907);
        mpfr_init(r9908);
        mpfr_init_set_str(r9909, "2", 10, MPFR_RNDN);
        mpfr_init(r9910);
        mpfr_init(r9911);
        mpfr_init(r9912);
        mpfr_init(r9913);
        mpfr_init(r9914);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r9881, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9883, mpfr_cmp(r9881, r9882) <= 0, MPFR_RNDN);
        mpfr_set_d(r9884, c, MPFR_RNDN);
        mpfr_neg(r9885, r9884, MPFR_RNDN);
        ;
        mpfr_div(r9887, r9881, r9886, MPFR_RNDN);
        mpfr_div(r9888, r9885, r9887, MPFR_RNDN);
        ;
        mpfr_set_si(r9890, mpfr_cmp(r9881, r9889) <= 0, MPFR_RNDN);
        mpfr_set_d(r9891, a, MPFR_RNDN);
        mpfr_mul(r9892, r9891, r9884, MPFR_RNDN);
        mpfr_mul(r9893, r9881, r9881, MPFR_RNDN);
        mpfr_sub(r9894, r9893, r9892, MPFR_RNDN);
        mpfr_sqrt(r9895, r9894, MPFR_RNDN);
        mpfr_sub(r9896, r9895, r9881, MPFR_RNDN);
        mpfr_div(r9897, r9892, r9896, MPFR_RNDN);
        mpfr_div(r9898, r9897, r9891, MPFR_RNDN);
        ;
        mpfr_set_si(r9900, mpfr_cmp(r9881, r9899) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r9902, r9881, MPFR_RNDN);
        mpfr_sub(r9903, r9902, r9895, MPFR_RNDN);
        mpfr_div(r9904, r9891, r9903, MPFR_RNDN);
        mpfr_div(r9905, r9901, r9904, MPFR_RNDN);
        mpfr_mul(r9906, r9884, r9886, MPFR_RNDN);
        mpfr_div(r9907, r9906, r9881, MPFR_RNDN);
        mpfr_div(r9908, r9881, r9891, MPFR_RNDN);
        ;
        mpfr_mul(r9910, r9908, r9909, MPFR_RNDN);
        mpfr_sub(r9911, r9907, r9910, MPFR_RNDN);
        if (mpfr_get_si(r9900, MPFR_RNDN)) { mpfr_set(r9912, r9905, MPFR_RNDN); } else { mpfr_set(r9912, r9911, MPFR_RNDN); };
        if (mpfr_get_si(r9890, MPFR_RNDN)) { mpfr_set(r9913, r9898, MPFR_RNDN); } else { mpfr_set(r9913, r9912, MPFR_RNDN); };
        if (mpfr_get_si(r9883, MPFR_RNDN)) { mpfr_set(r9914, r9888, MPFR_RNDN); } else { mpfr_set(r9914, r9913, MPFR_RNDN); };
        return mpfr_get_d(r9914, MPFR_RNDN);
}

