#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 r25802 = b_2;
        float r25803 = -r25802;
        float r25804 = r25802 * r25802;
        float r25805 = a;
        float r25806 = c;
        float r25807 = r25805 * r25806;
        float r25808 = r25804 - r25807;
        float r25809 = sqrt(r25808);
        float r25810 = r25803 - r25809;
        float r25811 = r25810 / r25805;
        return r25811;
}

double f_id(double a, double b_2, double c) {
        double r25812 = b_2;
        double r25813 = -r25812;
        double r25814 = r25812 * r25812;
        double r25815 = a;
        double r25816 = c;
        double r25817 = r25815 * r25816;
        double r25818 = r25814 - r25817;
        double r25819 = sqrt(r25818);
        double r25820 = r25813 - r25819;
        double r25821 = r25820 / r25815;
        return r25821;
}


double f_of(float a, float b_2, float c) {
        float r25822 = b_2;
        float r25823 = -1.0373992183972371e+38;
        bool r25824 = r25822 <= r25823;
        float r25825 = 1/2;
        float r25826 = -r25825;
        float r25827 = c;
        float r25828 = r25827 / r25822;
        float r25829 = r25826 * r25828;
        float r25830 = -7.587065739737278e-20;
        bool r25831 = r25822 <= r25830;
        float r25832 = a;
        float r25833 = r25832 * r25827;
        float r25834 = r25822 * r25822;
        float r25835 = r25834 - r25833;
        float r25836 = sqrt(r25835);
        float r25837 = r25836 - r25822;
        float r25838 = r25833 / r25837;
        float r25839 = r25838 / r25832;
        float r25840 = -2.2869707272504606e-173;
        bool r25841 = r25822 <= r25840;
        float r25842 = 3.5962548250302795e+78;
        bool r25843 = r25822 <= r25842;
        float r25844 = r25822 / r25832;
        float r25845 = -r25844;
        float r25846 = r25836 / r25832;
        float r25847 = r25845 - r25846;
        float r25848 = -2;
        float r25849 = r25848 * r25844;
        float r25850 = r25843 ? r25847 : r25849;
        float r25851 = r25841 ? r25829 : r25850;
        float r25852 = r25831 ? r25839 : r25851;
        float r25853 = r25824 ? r25829 : r25852;
        return r25853;
}

double f_od(double a, double b_2, double c) {
        double r25854 = b_2;
        double r25855 = -1.0373992183972371e+38;
        bool r25856 = r25854 <= r25855;
        double r25857 = 1/2;
        double r25858 = -r25857;
        double r25859 = c;
        double r25860 = r25859 / r25854;
        double r25861 = r25858 * r25860;
        double r25862 = -7.587065739737278e-20;
        bool r25863 = r25854 <= r25862;
        double r25864 = a;
        double r25865 = r25864 * r25859;
        double r25866 = r25854 * r25854;
        double r25867 = r25866 - r25865;
        double r25868 = sqrt(r25867);
        double r25869 = r25868 - r25854;
        double r25870 = r25865 / r25869;
        double r25871 = r25870 / r25864;
        double r25872 = -2.2869707272504606e-173;
        bool r25873 = r25854 <= r25872;
        double r25874 = 3.5962548250302795e+78;
        bool r25875 = r25854 <= r25874;
        double r25876 = r25854 / r25864;
        double r25877 = -r25876;
        double r25878 = r25868 / r25864;
        double r25879 = r25877 - r25878;
        double r25880 = -2;
        double r25881 = r25880 * r25876;
        double r25882 = r25875 ? r25879 : r25881;
        double r25883 = r25873 ? r25861 : r25882;
        double r25884 = r25863 ? r25871 : r25883;
        double r25885 = r25856 ? r25861 : r25884;
        return r25885;
}

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 r25886, r25887, r25888, r25889, r25890, r25891, r25892, r25893, r25894, r25895;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r25886);
        mpfr_init(r25887);
        mpfr_init(r25888);
        mpfr_init(r25889);
        mpfr_init(r25890);
        mpfr_init(r25891);
        mpfr_init(r25892);
        mpfr_init(r25893);
        mpfr_init(r25894);
        mpfr_init(r25895);
}

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

static mpfr_t 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r25896);
        mpfr_init_set_str(r25897, "-1.0373992183972371e+38", 10, MPFR_RNDN);
        mpfr_init(r25898);
        mpfr_init_set_str(r25899, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25900);
        mpfr_init(r25901);
        mpfr_init(r25902);
        mpfr_init(r25903);
        mpfr_init_set_str(r25904, "-7.587065739737278e-20", 10, MPFR_RNDN);
        mpfr_init(r25905);
        mpfr_init(r25906);
        mpfr_init(r25907);
        mpfr_init(r25908);
        mpfr_init(r25909);
        mpfr_init(r25910);
        mpfr_init(r25911);
        mpfr_init(r25912);
        mpfr_init(r25913);
        mpfr_init_set_str(r25914, "-2.2869707272504606e-173", 10, MPFR_RNDN);
        mpfr_init(r25915);
        mpfr_init_set_str(r25916, "3.5962548250302795e+78", 10, MPFR_RNDN);
        mpfr_init(r25917);
        mpfr_init(r25918);
        mpfr_init(r25919);
        mpfr_init(r25920);
        mpfr_init(r25921);
        mpfr_init_set_str(r25922, "-2", 10, MPFR_RNDN);
        mpfr_init(r25923);
        mpfr_init(r25924);
        mpfr_init(r25925);
        mpfr_init(r25926);
        mpfr_init(r25927);
}

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

static mpfr_t r25928, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r25928);
        mpfr_init_set_str(r25929, "-1.0373992183972371e+38", 10, MPFR_RNDN);
        mpfr_init(r25930);
        mpfr_init_set_str(r25931, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25932);
        mpfr_init(r25933);
        mpfr_init(r25934);
        mpfr_init(r25935);
        mpfr_init_set_str(r25936, "-7.587065739737278e-20", 10, MPFR_RNDN);
        mpfr_init(r25937);
        mpfr_init(r25938);
        mpfr_init(r25939);
        mpfr_init(r25940);
        mpfr_init(r25941);
        mpfr_init(r25942);
        mpfr_init(r25943);
        mpfr_init(r25944);
        mpfr_init(r25945);
        mpfr_init_set_str(r25946, "-2.2869707272504606e-173", 10, MPFR_RNDN);
        mpfr_init(r25947);
        mpfr_init_set_str(r25948, "3.5962548250302795e+78", 10, MPFR_RNDN);
        mpfr_init(r25949);
        mpfr_init(r25950);
        mpfr_init(r25951);
        mpfr_init(r25952);
        mpfr_init(r25953);
        mpfr_init_set_str(r25954, "-2", 10, MPFR_RNDN);
        mpfr_init(r25955);
        mpfr_init(r25956);
        mpfr_init(r25957);
        mpfr_init(r25958);
        mpfr_init(r25959);
}

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

