#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 r25791 = b_2;
        float r25792 = -r25791;
        float r25793 = r25791 * r25791;
        float r25794 = a;
        float r25795 = c;
        float r25796 = r25794 * r25795;
        float r25797 = r25793 - r25796;
        float r25798 = sqrt(r25797);
        float r25799 = r25792 - r25798;
        float r25800 = r25799 / r25794;
        return r25800;
}

double f_id(double a, double b_2, double c) {
        double r25801 = b_2;
        double r25802 = -r25801;
        double r25803 = r25801 * r25801;
        double r25804 = a;
        double r25805 = c;
        double r25806 = r25804 * r25805;
        double r25807 = r25803 - r25806;
        double r25808 = sqrt(r25807);
        double r25809 = r25802 - r25808;
        double r25810 = r25809 / r25804;
        return r25810;
}


double f_of(float a, float b_2, float c) {
        float r25811 = b_2;
        float r25812 = -2.3440642894566342e+95;
        bool r25813 = r25811 <= r25812;
        float r25814 = c;
        float r25815 = 1/2;
        float r25816 = r25815 * r25814;
        float r25817 = a;
        float r25818 = r25811 / r25817;
        float r25819 = r25816 / r25818;
        float r25820 = r25811 + r25811;
        float r25821 = r25819 - r25820;
        float r25822 = r25814 / r25821;
        float r25823 = -1.996198710137817e-272;
        bool r25824 = r25811 <= r25823;
        float r25825 = 1;
        float r25826 = r25811 * r25811;
        float r25827 = r25814 * r25817;
        float r25828 = r25826 - r25827;
        float r25829 = sqrt(r25828);
        float r25830 = r25829 - r25811;
        float r25831 = r25830 / r25814;
        float r25832 = r25825 / r25831;
        float r25833 = 3.9117660587132156e+67;
        bool r25834 = r25811 <= r25833;
        float r25835 = -r25811;
        float r25836 = r25817 * r25814;
        float r25837 = r25826 - r25836;
        float r25838 = sqrt(r25837);
        float r25839 = r25835 - r25838;
        float r25840 = r25825 / r25817;
        float r25841 = r25839 * r25840;
        float r25842 = -2;
        float r25843 = r25842 * r25818;
        float r25844 = r25834 ? r25841 : r25843;
        float r25845 = r25824 ? r25832 : r25844;
        float r25846 = r25813 ? r25822 : r25845;
        return r25846;
}

double f_od(double a, double b_2, double c) {
        double r25847 = b_2;
        double r25848 = -2.3440642894566342e+95;
        bool r25849 = r25847 <= r25848;
        double r25850 = c;
        double r25851 = 1/2;
        double r25852 = r25851 * r25850;
        double r25853 = a;
        double r25854 = r25847 / r25853;
        double r25855 = r25852 / r25854;
        double r25856 = r25847 + r25847;
        double r25857 = r25855 - r25856;
        double r25858 = r25850 / r25857;
        double r25859 = -1.996198710137817e-272;
        bool r25860 = r25847 <= r25859;
        double r25861 = 1;
        double r25862 = r25847 * r25847;
        double r25863 = r25850 * r25853;
        double r25864 = r25862 - r25863;
        double r25865 = sqrt(r25864);
        double r25866 = r25865 - r25847;
        double r25867 = r25866 / r25850;
        double r25868 = r25861 / r25867;
        double r25869 = 3.9117660587132156e+67;
        bool r25870 = r25847 <= r25869;
        double r25871 = -r25847;
        double r25872 = r25853 * r25850;
        double r25873 = r25862 - r25872;
        double r25874 = sqrt(r25873);
        double r25875 = r25871 - r25874;
        double r25876 = r25861 / r25853;
        double r25877 = r25875 * r25876;
        double r25878 = -2;
        double r25879 = r25878 * r25854;
        double r25880 = r25870 ? r25877 : r25879;
        double r25881 = r25860 ? r25868 : r25880;
        double r25882 = r25849 ? r25858 : r25881;
        return r25882;
}

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 r25883, r25884, r25885, r25886, r25887, r25888, r25889, r25890, r25891, r25892;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r25883);
        mpfr_init(r25884);
        mpfr_init(r25885);
        mpfr_init(r25886);
        mpfr_init(r25887);
        mpfr_init(r25888);
        mpfr_init(r25889);
        mpfr_init(r25890);
        mpfr_init(r25891);
        mpfr_init(r25892);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r25883, b_2, MPFR_RNDN);
        mpfr_neg(r25884, r25883, MPFR_RNDN);
        mpfr_mul(r25885, r25883, r25883, MPFR_RNDN);
        mpfr_set_d(r25886, a, MPFR_RNDN);
        mpfr_set_d(r25887, c, MPFR_RNDN);
        mpfr_mul(r25888, r25886, r25887, MPFR_RNDN);
        mpfr_sub(r25889, r25885, r25888, MPFR_RNDN);
        mpfr_sqrt(r25890, r25889, MPFR_RNDN);
        mpfr_sub(r25891, r25884, r25890, MPFR_RNDN);
        mpfr_div(r25892, r25891, r25886, MPFR_RNDN);
        return mpfr_get_d(r25892, MPFR_RNDN);
}

static mpfr_t r25893, r25894, r25895, r25896, r25897, r25898, r25899, r25900, r25901, r25902, r25903, r25904, r25905, r25906, r25907, r25908, r25909, r25910, r25911, r25912, r25913, r25914, r25915, r25916, r25917, r25918, r25919, r25920, r25921, r25922, r25923, r25924, r25925, r25926, r25927, r25928;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r25893);
        mpfr_init_set_str(r25894, "-2.3440642894566342e+95", 10, MPFR_RNDN);
        mpfr_init(r25895);
        mpfr_init(r25896);
        mpfr_init_set_str(r25897, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25898);
        mpfr_init(r25899);
        mpfr_init(r25900);
        mpfr_init(r25901);
        mpfr_init(r25902);
        mpfr_init(r25903);
        mpfr_init(r25904);
        mpfr_init_set_str(r25905, "-1.996198710137817e-272", 10, MPFR_RNDN);
        mpfr_init(r25906);
        mpfr_init_set_str(r25907, "1", 10, MPFR_RNDN);
        mpfr_init(r25908);
        mpfr_init(r25909);
        mpfr_init(r25910);
        mpfr_init(r25911);
        mpfr_init(r25912);
        mpfr_init(r25913);
        mpfr_init(r25914);
        mpfr_init_set_str(r25915, "3.9117660587132156e+67", 10, MPFR_RNDN);
        mpfr_init(r25916);
        mpfr_init(r25917);
        mpfr_init(r25918);
        mpfr_init(r25919);
        mpfr_init(r25920);
        mpfr_init(r25921);
        mpfr_init(r25922);
        mpfr_init(r25923);
        mpfr_init_set_str(r25924, "-2", 10, MPFR_RNDN);
        mpfr_init(r25925);
        mpfr_init(r25926);
        mpfr_init(r25927);
        mpfr_init(r25928);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r25893, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r25895, mpfr_cmp(r25893, r25894) <= 0, MPFR_RNDN);
        mpfr_set_d(r25896, c, MPFR_RNDN);
        ;
        mpfr_mul(r25898, r25897, r25896, MPFR_RNDN);
        mpfr_set_d(r25899, a, MPFR_RNDN);
        mpfr_div(r25900, r25893, r25899, MPFR_RNDN);
        mpfr_div(r25901, r25898, r25900, MPFR_RNDN);
        mpfr_add(r25902, r25893, r25893, MPFR_RNDN);
        mpfr_sub(r25903, r25901, r25902, MPFR_RNDN);
        mpfr_div(r25904, r25896, r25903, MPFR_RNDN);
        ;
        mpfr_set_si(r25906, mpfr_cmp(r25893, r25905) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r25908, r25893, r25893, MPFR_RNDN);
        mpfr_mul(r25909, r25896, r25899, MPFR_RNDN);
        mpfr_sub(r25910, r25908, r25909, MPFR_RNDN);
        mpfr_sqrt(r25911, r25910, MPFR_RNDN);
        mpfr_sub(r25912, r25911, r25893, MPFR_RNDN);
        mpfr_div(r25913, r25912, r25896, MPFR_RNDN);
        mpfr_div(r25914, r25907, r25913, MPFR_RNDN);
        ;
        mpfr_set_si(r25916, mpfr_cmp(r25893, r25915) <= 0, MPFR_RNDN);
        mpfr_neg(r25917, r25893, MPFR_RNDN);
        mpfr_mul(r25918, r25899, r25896, MPFR_RNDN);
        mpfr_sub(r25919, r25908, r25918, MPFR_RNDN);
        mpfr_sqrt(r25920, r25919, MPFR_RNDN);
        mpfr_sub(r25921, r25917, r25920, MPFR_RNDN);
        mpfr_div(r25922, r25907, r25899, MPFR_RNDN);
        mpfr_mul(r25923, r25921, r25922, MPFR_RNDN);
        ;
        mpfr_mul(r25925, r25924, r25900, MPFR_RNDN);
        if (mpfr_get_si(r25916, MPFR_RNDN)) { mpfr_set(r25926, r25923, MPFR_RNDN); } else { mpfr_set(r25926, r25925, MPFR_RNDN); };
        if (mpfr_get_si(r25906, MPFR_RNDN)) { mpfr_set(r25927, r25914, MPFR_RNDN); } else { mpfr_set(r25927, r25926, MPFR_RNDN); };
        if (mpfr_get_si(r25895, MPFR_RNDN)) { mpfr_set(r25928, r25904, MPFR_RNDN); } else { mpfr_set(r25928, r25927, MPFR_RNDN); };
        return mpfr_get_d(r25928, MPFR_RNDN);
}

static mpfr_t r25929, r25930, r25931, r25932, r25933, r25934, r25935, r25936, r25937, r25938, r25939, r25940, r25941, r25942, r25943, r25944, r25945, r25946, r25947, r25948, r25949, r25950, r25951, r25952, r25953, r25954, r25955, r25956, r25957, r25958, r25959, r25960, r25961, r25962, r25963, r25964;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r25929);
        mpfr_init_set_str(r25930, "-2.3440642894566342e+95", 10, MPFR_RNDN);
        mpfr_init(r25931);
        mpfr_init(r25932);
        mpfr_init_set_str(r25933, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25934);
        mpfr_init(r25935);
        mpfr_init(r25936);
        mpfr_init(r25937);
        mpfr_init(r25938);
        mpfr_init(r25939);
        mpfr_init(r25940);
        mpfr_init_set_str(r25941, "-1.996198710137817e-272", 10, MPFR_RNDN);
        mpfr_init(r25942);
        mpfr_init_set_str(r25943, "1", 10, MPFR_RNDN);
        mpfr_init(r25944);
        mpfr_init(r25945);
        mpfr_init(r25946);
        mpfr_init(r25947);
        mpfr_init(r25948);
        mpfr_init(r25949);
        mpfr_init(r25950);
        mpfr_init_set_str(r25951, "3.9117660587132156e+67", 10, MPFR_RNDN);
        mpfr_init(r25952);
        mpfr_init(r25953);
        mpfr_init(r25954);
        mpfr_init(r25955);
        mpfr_init(r25956);
        mpfr_init(r25957);
        mpfr_init(r25958);
        mpfr_init(r25959);
        mpfr_init_set_str(r25960, "-2", 10, MPFR_RNDN);
        mpfr_init(r25961);
        mpfr_init(r25962);
        mpfr_init(r25963);
        mpfr_init(r25964);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r25929, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r25931, mpfr_cmp(r25929, r25930) <= 0, MPFR_RNDN);
        mpfr_set_d(r25932, c, MPFR_RNDN);
        ;
        mpfr_mul(r25934, r25933, r25932, MPFR_RNDN);
        mpfr_set_d(r25935, a, MPFR_RNDN);
        mpfr_div(r25936, r25929, r25935, MPFR_RNDN);
        mpfr_div(r25937, r25934, r25936, MPFR_RNDN);
        mpfr_add(r25938, r25929, r25929, MPFR_RNDN);
        mpfr_sub(r25939, r25937, r25938, MPFR_RNDN);
        mpfr_div(r25940, r25932, r25939, MPFR_RNDN);
        ;
        mpfr_set_si(r25942, mpfr_cmp(r25929, r25941) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r25944, r25929, r25929, MPFR_RNDN);
        mpfr_mul(r25945, r25932, r25935, MPFR_RNDN);
        mpfr_sub(r25946, r25944, r25945, MPFR_RNDN);
        mpfr_sqrt(r25947, r25946, MPFR_RNDN);
        mpfr_sub(r25948, r25947, r25929, MPFR_RNDN);
        mpfr_div(r25949, r25948, r25932, MPFR_RNDN);
        mpfr_div(r25950, r25943, r25949, MPFR_RNDN);
        ;
        mpfr_set_si(r25952, mpfr_cmp(r25929, r25951) <= 0, MPFR_RNDN);
        mpfr_neg(r25953, r25929, MPFR_RNDN);
        mpfr_mul(r25954, r25935, r25932, MPFR_RNDN);
        mpfr_sub(r25955, r25944, r25954, MPFR_RNDN);
        mpfr_sqrt(r25956, r25955, MPFR_RNDN);
        mpfr_sub(r25957, r25953, r25956, MPFR_RNDN);
        mpfr_div(r25958, r25943, r25935, MPFR_RNDN);
        mpfr_mul(r25959, r25957, r25958, MPFR_RNDN);
        ;
        mpfr_mul(r25961, r25960, r25936, MPFR_RNDN);
        if (mpfr_get_si(r25952, MPFR_RNDN)) { mpfr_set(r25962, r25959, MPFR_RNDN); } else { mpfr_set(r25962, r25961, MPFR_RNDN); };
        if (mpfr_get_si(r25942, MPFR_RNDN)) { mpfr_set(r25963, r25950, MPFR_RNDN); } else { mpfr_set(r25963, r25962, MPFR_RNDN); };
        if (mpfr_get_si(r25931, MPFR_RNDN)) { mpfr_set(r25964, r25940, MPFR_RNDN); } else { mpfr_set(r25964, r25963, MPFR_RNDN); };
        return mpfr_get_d(r25964, MPFR_RNDN);
}

