#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 r25699 = b_2;
        float r25700 = -r25699;
        float r25701 = r25699 * r25699;
        float r25702 = a;
        float r25703 = c;
        float r25704 = r25702 * r25703;
        float r25705 = r25701 - r25704;
        float r25706 = sqrt(r25705);
        float r25707 = r25700 - r25706;
        float r25708 = r25707 / r25702;
        return r25708;
}

double f_id(double a, double b_2, double c) {
        double r25709 = b_2;
        double r25710 = -r25709;
        double r25711 = r25709 * r25709;
        double r25712 = a;
        double r25713 = c;
        double r25714 = r25712 * r25713;
        double r25715 = r25711 - r25714;
        double r25716 = sqrt(r25715);
        double r25717 = r25710 - r25716;
        double r25718 = r25717 / r25712;
        return r25718;
}


double f_of(float a, float b_2, float c) {
        float r25719 = b_2;
        float r25720 = -3.3472901989528128e-15;
        bool r25721 = r25719 <= r25720;
        float r25722 = -1/2;
        float r25723 = c;
        float r25724 = r25723 / r25719;
        float r25725 = r25722 * r25724;
        float r25726 = -4.003770516478777e-194;
        bool r25727 = r25719 <= r25726;
        float r25728 = a;
        float r25729 = r25723 * r25728;
        float r25730 = r25719 * r25719;
        float r25731 = r25728 * r25723;
        float r25732 = r25730 - r25731;
        float r25733 = sqrt(r25732);
        float r25734 = r25733 - r25719;
        float r25735 = r25729 / r25734;
        float r25736 = r25735 / r25728;
        float r25737 = 1.586737340205888e+144;
        bool r25738 = r25719 <= r25737;
        float r25739 = -r25719;
        float r25740 = r25739 - r25733;
        float r25741 = 1;
        float r25742 = r25741 / r25728;
        float r25743 = r25740 * r25742;
        float r25744 = 1/2;
        float r25745 = r25724 * r25744;
        float r25746 = r25719 / r25728;
        float r25747 = 2;
        float r25748 = r25746 * r25747;
        float r25749 = r25745 - r25748;
        float r25750 = r25738 ? r25743 : r25749;
        float r25751 = r25727 ? r25736 : r25750;
        float r25752 = r25721 ? r25725 : r25751;
        return r25752;
}

double f_od(double a, double b_2, double c) {
        double r25753 = b_2;
        double r25754 = -3.3472901989528128e-15;
        bool r25755 = r25753 <= r25754;
        double r25756 = -1/2;
        double r25757 = c;
        double r25758 = r25757 / r25753;
        double r25759 = r25756 * r25758;
        double r25760 = -4.003770516478777e-194;
        bool r25761 = r25753 <= r25760;
        double r25762 = a;
        double r25763 = r25757 * r25762;
        double r25764 = r25753 * r25753;
        double r25765 = r25762 * r25757;
        double r25766 = r25764 - r25765;
        double r25767 = sqrt(r25766);
        double r25768 = r25767 - r25753;
        double r25769 = r25763 / r25768;
        double r25770 = r25769 / r25762;
        double r25771 = 1.586737340205888e+144;
        bool r25772 = r25753 <= r25771;
        double r25773 = -r25753;
        double r25774 = r25773 - r25767;
        double r25775 = 1;
        double r25776 = r25775 / r25762;
        double r25777 = r25774 * r25776;
        double r25778 = 1/2;
        double r25779 = r25758 * r25778;
        double r25780 = r25753 / r25762;
        double r25781 = 2;
        double r25782 = r25780 * r25781;
        double r25783 = r25779 - r25782;
        double r25784 = r25772 ? r25777 : r25783;
        double r25785 = r25761 ? r25770 : r25784;
        double r25786 = r25755 ? r25759 : r25785;
        return r25786;
}

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 r25787, r25788, r25789, r25790, r25791, r25792, r25793, r25794, r25795, r25796;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r25787);
        mpfr_init(r25788);
        mpfr_init(r25789);
        mpfr_init(r25790);
        mpfr_init(r25791);
        mpfr_init(r25792);
        mpfr_init(r25793);
        mpfr_init(r25794);
        mpfr_init(r25795);
        mpfr_init(r25796);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r25787, b_2, MPFR_RNDN);
        mpfr_neg(r25788, r25787, MPFR_RNDN);
        mpfr_mul(r25789, r25787, r25787, MPFR_RNDN);
        mpfr_set_d(r25790, a, MPFR_RNDN);
        mpfr_set_d(r25791, c, MPFR_RNDN);
        mpfr_mul(r25792, r25790, r25791, MPFR_RNDN);
        mpfr_sub(r25793, r25789, r25792, MPFR_RNDN);
        mpfr_sqrt(r25794, r25793, MPFR_RNDN);
        mpfr_sub(r25795, r25788, r25794, MPFR_RNDN);
        mpfr_div(r25796, r25795, r25790, MPFR_RNDN);
        return mpfr_get_d(r25796, MPFR_RNDN);
}

static mpfr_t r25797, r25798, r25799, r25800, r25801, r25802, r25803, r25804, r25805, r25806, r25807, r25808, r25809, r25810, r25811, r25812, r25813, r25814, r25815, r25816, r25817, r25818, r25819, r25820, r25821, r25822, r25823, r25824, r25825, r25826, r25827, r25828, r25829, r25830;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r25797);
        mpfr_init_set_str(r25798, "-3.3472901989528128e-15", 10, MPFR_RNDN);
        mpfr_init(r25799);
        mpfr_init_set_str(r25800, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r25801);
        mpfr_init(r25802);
        mpfr_init(r25803);
        mpfr_init_set_str(r25804, "-4.003770516478777e-194", 10, MPFR_RNDN);
        mpfr_init(r25805);
        mpfr_init(r25806);
        mpfr_init(r25807);
        mpfr_init(r25808);
        mpfr_init(r25809);
        mpfr_init(r25810);
        mpfr_init(r25811);
        mpfr_init(r25812);
        mpfr_init(r25813);
        mpfr_init(r25814);
        mpfr_init_set_str(r25815, "1.586737340205888e+144", 10, MPFR_RNDN);
        mpfr_init(r25816);
        mpfr_init(r25817);
        mpfr_init(r25818);
        mpfr_init_set_str(r25819, "1", 10, MPFR_RNDN);
        mpfr_init(r25820);
        mpfr_init(r25821);
        mpfr_init_set_str(r25822, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25823);
        mpfr_init(r25824);
        mpfr_init_set_str(r25825, "2", 10, MPFR_RNDN);
        mpfr_init(r25826);
        mpfr_init(r25827);
        mpfr_init(r25828);
        mpfr_init(r25829);
        mpfr_init(r25830);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r25797, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r25799, mpfr_cmp(r25797, r25798) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r25801, c, MPFR_RNDN);
        mpfr_div(r25802, r25801, r25797, MPFR_RNDN);
        mpfr_mul(r25803, r25800, r25802, MPFR_RNDN);
        ;
        mpfr_set_si(r25805, mpfr_cmp(r25797, r25804) <= 0, MPFR_RNDN);
        mpfr_set_d(r25806, a, MPFR_RNDN);
        mpfr_mul(r25807, r25801, r25806, MPFR_RNDN);
        mpfr_mul(r25808, r25797, r25797, MPFR_RNDN);
        mpfr_mul(r25809, r25806, r25801, MPFR_RNDN);
        mpfr_sub(r25810, r25808, r25809, MPFR_RNDN);
        mpfr_sqrt(r25811, r25810, MPFR_RNDN);
        mpfr_sub(r25812, r25811, r25797, MPFR_RNDN);
        mpfr_div(r25813, r25807, r25812, MPFR_RNDN);
        mpfr_div(r25814, r25813, r25806, MPFR_RNDN);
        ;
        mpfr_set_si(r25816, mpfr_cmp(r25797, r25815) <= 0, MPFR_RNDN);
        mpfr_neg(r25817, r25797, MPFR_RNDN);
        mpfr_sub(r25818, r25817, r25811, MPFR_RNDN);
        ;
        mpfr_div(r25820, r25819, r25806, MPFR_RNDN);
        mpfr_mul(r25821, r25818, r25820, MPFR_RNDN);
        ;
        mpfr_mul(r25823, r25802, r25822, MPFR_RNDN);
        mpfr_div(r25824, r25797, r25806, MPFR_RNDN);
        ;
        mpfr_mul(r25826, r25824, r25825, MPFR_RNDN);
        mpfr_sub(r25827, r25823, r25826, MPFR_RNDN);
        if (mpfr_get_si(r25816, MPFR_RNDN)) { mpfr_set(r25828, r25821, MPFR_RNDN); } else { mpfr_set(r25828, r25827, MPFR_RNDN); };
        if (mpfr_get_si(r25805, MPFR_RNDN)) { mpfr_set(r25829, r25814, MPFR_RNDN); } else { mpfr_set(r25829, r25828, MPFR_RNDN); };
        if (mpfr_get_si(r25799, MPFR_RNDN)) { mpfr_set(r25830, r25803, MPFR_RNDN); } else { mpfr_set(r25830, r25829, MPFR_RNDN); };
        return mpfr_get_d(r25830, MPFR_RNDN);
}

static mpfr_t r25831, r25832, r25833, r25834, r25835, r25836, r25837, r25838, r25839, r25840, r25841, r25842, r25843, r25844, r25845, r25846, r25847, r25848, r25849, r25850, r25851, r25852, r25853, r25854, r25855, r25856, r25857, r25858, r25859, r25860, r25861, r25862, r25863, r25864;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r25831);
        mpfr_init_set_str(r25832, "-3.3472901989528128e-15", 10, MPFR_RNDN);
        mpfr_init(r25833);
        mpfr_init_set_str(r25834, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r25835);
        mpfr_init(r25836);
        mpfr_init(r25837);
        mpfr_init_set_str(r25838, "-4.003770516478777e-194", 10, MPFR_RNDN);
        mpfr_init(r25839);
        mpfr_init(r25840);
        mpfr_init(r25841);
        mpfr_init(r25842);
        mpfr_init(r25843);
        mpfr_init(r25844);
        mpfr_init(r25845);
        mpfr_init(r25846);
        mpfr_init(r25847);
        mpfr_init(r25848);
        mpfr_init_set_str(r25849, "1.586737340205888e+144", 10, MPFR_RNDN);
        mpfr_init(r25850);
        mpfr_init(r25851);
        mpfr_init(r25852);
        mpfr_init_set_str(r25853, "1", 10, MPFR_RNDN);
        mpfr_init(r25854);
        mpfr_init(r25855);
        mpfr_init_set_str(r25856, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25857);
        mpfr_init(r25858);
        mpfr_init_set_str(r25859, "2", 10, MPFR_RNDN);
        mpfr_init(r25860);
        mpfr_init(r25861);
        mpfr_init(r25862);
        mpfr_init(r25863);
        mpfr_init(r25864);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r25831, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r25833, mpfr_cmp(r25831, r25832) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r25835, c, MPFR_RNDN);
        mpfr_div(r25836, r25835, r25831, MPFR_RNDN);
        mpfr_mul(r25837, r25834, r25836, MPFR_RNDN);
        ;
        mpfr_set_si(r25839, mpfr_cmp(r25831, r25838) <= 0, MPFR_RNDN);
        mpfr_set_d(r25840, a, MPFR_RNDN);
        mpfr_mul(r25841, r25835, r25840, MPFR_RNDN);
        mpfr_mul(r25842, r25831, r25831, MPFR_RNDN);
        mpfr_mul(r25843, r25840, r25835, MPFR_RNDN);
        mpfr_sub(r25844, r25842, r25843, MPFR_RNDN);
        mpfr_sqrt(r25845, r25844, MPFR_RNDN);
        mpfr_sub(r25846, r25845, r25831, MPFR_RNDN);
        mpfr_div(r25847, r25841, r25846, MPFR_RNDN);
        mpfr_div(r25848, r25847, r25840, MPFR_RNDN);
        ;
        mpfr_set_si(r25850, mpfr_cmp(r25831, r25849) <= 0, MPFR_RNDN);
        mpfr_neg(r25851, r25831, MPFR_RNDN);
        mpfr_sub(r25852, r25851, r25845, MPFR_RNDN);
        ;
        mpfr_div(r25854, r25853, r25840, MPFR_RNDN);
        mpfr_mul(r25855, r25852, r25854, MPFR_RNDN);
        ;
        mpfr_mul(r25857, r25836, r25856, MPFR_RNDN);
        mpfr_div(r25858, r25831, r25840, MPFR_RNDN);
        ;
        mpfr_mul(r25860, r25858, r25859, MPFR_RNDN);
        mpfr_sub(r25861, r25857, r25860, MPFR_RNDN);
        if (mpfr_get_si(r25850, MPFR_RNDN)) { mpfr_set(r25862, r25855, MPFR_RNDN); } else { mpfr_set(r25862, r25861, MPFR_RNDN); };
        if (mpfr_get_si(r25839, MPFR_RNDN)) { mpfr_set(r25863, r25848, MPFR_RNDN); } else { mpfr_set(r25863, r25862, MPFR_RNDN); };
        if (mpfr_get_si(r25833, MPFR_RNDN)) { mpfr_set(r25864, r25837, MPFR_RNDN); } else { mpfr_set(r25864, r25863, MPFR_RNDN); };
        return mpfr_get_d(r25864, MPFR_RNDN);
}

