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

char *name = "NMSE p42, positive";

double f_if(float a, float b, float c) {
        float r5320203 = b;
        float r5320204 = -r5320203;
        float r5320205 = r5320203 * r5320203;
        float r5320206 = 4.0f;
        float r5320207 = a;
        float r5320208 = c;
        float r5320209 = r5320207 * r5320208;
        float r5320210 = r5320206 * r5320209;
        float r5320211 = r5320205 - r5320210;
        float r5320212 = sqrt(r5320211);
        float r5320213 = r5320204 + r5320212;
        float r5320214 = 2.0f;
        float r5320215 = r5320214 * r5320207;
        float r5320216 = r5320213 / r5320215;
        return r5320216;
}

double f_id(double a, double b, double c) {
        double r5320217 = b;
        double r5320218 = -r5320217;
        double r5320219 = r5320217 * r5320217;
        double r5320220 = 4.0;
        double r5320221 = a;
        double r5320222 = c;
        double r5320223 = r5320221 * r5320222;
        double r5320224 = r5320220 * r5320223;
        double r5320225 = r5320219 - r5320224;
        double r5320226 = sqrt(r5320225);
        double r5320227 = r5320218 + r5320226;
        double r5320228 = 2.0;
        double r5320229 = r5320228 * r5320221;
        double r5320230 = r5320227 / r5320229;
        return r5320230;
}


double f_of(float a, float b, float c) {
        float r5320231 = b;
        float r5320232 = -2.4063664882097058e+146f;
        bool r5320233 = r5320231 <= r5320232;
        float r5320234 = -r5320231;
        float r5320235 = a;
        float r5320236 = r5320234 / r5320235;
        float r5320237 = 0.034260571810453756f;
        bool r5320238 = r5320231 <= r5320237;
        float r5320239 = r5320231 * r5320231;
        float r5320240 = 4.0f;
        float r5320241 = r5320240 * r5320235;
        float r5320242 = c;
        float r5320243 = r5320241 * r5320242;
        float r5320244 = r5320239 - r5320243;
        float r5320245 = sqrt(r5320244);
        float r5320246 = r5320234 + r5320245;
        float r5320247 = 2.0f;
        float r5320248 = r5320247 * r5320235;
        float r5320249 = r5320246 / r5320248;
        float r5320250 = r5320231 + r5320234;
        float r5320251 = r5320250 / r5320248;
        float r5320252 = r5320242 / r5320231;
        float r5320253 = r5320251 - r5320252;
        float r5320254 = r5320238 ? r5320249 : r5320253;
        float r5320255 = r5320233 ? r5320236 : r5320254;
        return r5320255;
}

double f_od(double a, double b, double c) {
        double r5320256 = b;
        double r5320257 = -2.4063664882097058e+146;
        bool r5320258 = r5320256 <= r5320257;
        double r5320259 = -r5320256;
        double r5320260 = a;
        double r5320261 = r5320259 / r5320260;
        double r5320262 = 0.034260571810453756;
        bool r5320263 = r5320256 <= r5320262;
        double r5320264 = r5320256 * r5320256;
        double r5320265 = 4.0;
        double r5320266 = r5320265 * r5320260;
        double r5320267 = c;
        double r5320268 = r5320266 * r5320267;
        double r5320269 = r5320264 - r5320268;
        double r5320270 = sqrt(r5320269);
        double r5320271 = r5320259 + r5320270;
        double r5320272 = 2.0;
        double r5320273 = r5320272 * r5320260;
        double r5320274 = r5320271 / r5320273;
        double r5320275 = r5320256 + r5320259;
        double r5320276 = r5320275 / r5320273;
        double r5320277 = r5320267 / r5320256;
        double r5320278 = r5320276 - r5320277;
        double r5320279 = r5320263 ? r5320274 : r5320278;
        double r5320280 = r5320258 ? r5320261 : r5320279;
        return r5320280;
}

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 r5320281, r5320282, r5320283, r5320284, r5320285, r5320286, r5320287, r5320288, r5320289, r5320290, r5320291, r5320292, r5320293, r5320294;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5320281);
        mpfr_init(r5320282);
        mpfr_init(r5320283);
        mpfr_init_set_str(r5320284, "4", 10, MPFR_RNDN);
        mpfr_init(r5320285);
        mpfr_init(r5320286);
        mpfr_init(r5320287);
        mpfr_init(r5320288);
        mpfr_init(r5320289);
        mpfr_init(r5320290);
        mpfr_init(r5320291);
        mpfr_init_set_str(r5320292, "2", 10, MPFR_RNDN);
        mpfr_init(r5320293);
        mpfr_init(r5320294);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r5320281, b, MPFR_RNDN);
        mpfr_neg(r5320282, r5320281, MPFR_RNDN);
        mpfr_sqr(r5320283, r5320281, MPFR_RNDN);
        ;
        mpfr_set_d(r5320285, a, MPFR_RNDN);
        mpfr_set_d(r5320286, c, MPFR_RNDN);
        mpfr_mul(r5320287, r5320285, r5320286, MPFR_RNDN);
        mpfr_mul(r5320288, r5320284, r5320287, MPFR_RNDN);
        mpfr_sub(r5320289, r5320283, r5320288, MPFR_RNDN);
        mpfr_sqrt(r5320290, r5320289, MPFR_RNDN);
        mpfr_add(r5320291, r5320282, r5320290, MPFR_RNDN);
        ;
        mpfr_mul(r5320293, r5320292, r5320285, MPFR_RNDN);
        mpfr_div(r5320294, r5320291, r5320293, MPFR_RNDN);
        return mpfr_get_d(r5320294, MPFR_RNDN);
}

static mpfr_t r5320295, r5320296, r5320297, r5320298, r5320299, r5320300, r5320301, r5320302, r5320303, r5320304, r5320305, r5320306, r5320307, r5320308, r5320309, r5320310, r5320311, r5320312, r5320313, r5320314, r5320315, r5320316, r5320317, r5320318, r5320319;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5320295);
        mpfr_init_set_str(r5320296, "-2.4063664882097058e+146", 10, MPFR_RNDN);
        mpfr_init(r5320297);
        mpfr_init(r5320298);
        mpfr_init(r5320299);
        mpfr_init(r5320300);
        mpfr_init_set_str(r5320301, "0.034260571810453756", 10, MPFR_RNDN);
        mpfr_init(r5320302);
        mpfr_init(r5320303);
        mpfr_init_set_str(r5320304, "4", 10, MPFR_RNDN);
        mpfr_init(r5320305);
        mpfr_init(r5320306);
        mpfr_init(r5320307);
        mpfr_init(r5320308);
        mpfr_init(r5320309);
        mpfr_init(r5320310);
        mpfr_init_set_str(r5320311, "2", 10, MPFR_RNDN);
        mpfr_init(r5320312);
        mpfr_init(r5320313);
        mpfr_init(r5320314);
        mpfr_init(r5320315);
        mpfr_init(r5320316);
        mpfr_init(r5320317);
        mpfr_init(r5320318);
        mpfr_init(r5320319);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r5320295, b, MPFR_RNDN);
        ;
        mpfr_set_si(r5320297, mpfr_cmp(r5320295, r5320296) <= 0, MPFR_RNDN);
        mpfr_neg(r5320298, r5320295, MPFR_RNDN);
        mpfr_set_d(r5320299, a, MPFR_RNDN);
        mpfr_div(r5320300, r5320298, r5320299, MPFR_RNDN);
        ;
        mpfr_set_si(r5320302, mpfr_cmp(r5320295, r5320301) <= 0, MPFR_RNDN);
        mpfr_sqr(r5320303, r5320295, MPFR_RNDN);
        ;
        mpfr_mul(r5320305, r5320304, r5320299, MPFR_RNDN);
        mpfr_set_d(r5320306, c, MPFR_RNDN);
        mpfr_mul(r5320307, r5320305, r5320306, MPFR_RNDN);
        mpfr_sub(r5320308, r5320303, r5320307, MPFR_RNDN);
        mpfr_sqrt(r5320309, r5320308, MPFR_RNDN);
        mpfr_add(r5320310, r5320298, r5320309, MPFR_RNDN);
        ;
        mpfr_mul(r5320312, r5320311, r5320299, MPFR_RNDN);
        mpfr_div(r5320313, r5320310, r5320312, MPFR_RNDN);
        mpfr_add(r5320314, r5320295, r5320298, MPFR_RNDN);
        mpfr_div(r5320315, r5320314, r5320312, MPFR_RNDN);
        mpfr_div(r5320316, r5320306, r5320295, MPFR_RNDN);
        mpfr_sub(r5320317, r5320315, r5320316, MPFR_RNDN);
        if (mpfr_get_si(r5320302, MPFR_RNDN)) { mpfr_set(r5320318, r5320313, MPFR_RNDN); } else { mpfr_set(r5320318, r5320317, MPFR_RNDN); };
        if (mpfr_get_si(r5320297, MPFR_RNDN)) { mpfr_set(r5320319, r5320300, MPFR_RNDN); } else { mpfr_set(r5320319, r5320318, MPFR_RNDN); };
        return mpfr_get_d(r5320319, MPFR_RNDN);
}

static mpfr_t r5320320, r5320321, r5320322, r5320323, r5320324, r5320325, r5320326, r5320327, r5320328, r5320329, r5320330, r5320331, r5320332, r5320333, r5320334, r5320335, r5320336, r5320337, r5320338, r5320339, r5320340, r5320341, r5320342, r5320343, r5320344;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5320320);
        mpfr_init_set_str(r5320321, "-2.4063664882097058e+146", 10, MPFR_RNDN);
        mpfr_init(r5320322);
        mpfr_init(r5320323);
        mpfr_init(r5320324);
        mpfr_init(r5320325);
        mpfr_init_set_str(r5320326, "0.034260571810453756", 10, MPFR_RNDN);
        mpfr_init(r5320327);
        mpfr_init(r5320328);
        mpfr_init_set_str(r5320329, "4", 10, MPFR_RNDN);
        mpfr_init(r5320330);
        mpfr_init(r5320331);
        mpfr_init(r5320332);
        mpfr_init(r5320333);
        mpfr_init(r5320334);
        mpfr_init(r5320335);
        mpfr_init_set_str(r5320336, "2", 10, MPFR_RNDN);
        mpfr_init(r5320337);
        mpfr_init(r5320338);
        mpfr_init(r5320339);
        mpfr_init(r5320340);
        mpfr_init(r5320341);
        mpfr_init(r5320342);
        mpfr_init(r5320343);
        mpfr_init(r5320344);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r5320320, b, MPFR_RNDN);
        ;
        mpfr_set_si(r5320322, mpfr_cmp(r5320320, r5320321) <= 0, MPFR_RNDN);
        mpfr_neg(r5320323, r5320320, MPFR_RNDN);
        mpfr_set_d(r5320324, a, MPFR_RNDN);
        mpfr_div(r5320325, r5320323, r5320324, MPFR_RNDN);
        ;
        mpfr_set_si(r5320327, mpfr_cmp(r5320320, r5320326) <= 0, MPFR_RNDN);
        mpfr_sqr(r5320328, r5320320, MPFR_RNDN);
        ;
        mpfr_mul(r5320330, r5320329, r5320324, MPFR_RNDN);
        mpfr_set_d(r5320331, c, MPFR_RNDN);
        mpfr_mul(r5320332, r5320330, r5320331, MPFR_RNDN);
        mpfr_sub(r5320333, r5320328, r5320332, MPFR_RNDN);
        mpfr_sqrt(r5320334, r5320333, MPFR_RNDN);
        mpfr_add(r5320335, r5320323, r5320334, MPFR_RNDN);
        ;
        mpfr_mul(r5320337, r5320336, r5320324, MPFR_RNDN);
        mpfr_div(r5320338, r5320335, r5320337, MPFR_RNDN);
        mpfr_add(r5320339, r5320320, r5320323, MPFR_RNDN);
        mpfr_div(r5320340, r5320339, r5320337, MPFR_RNDN);
        mpfr_div(r5320341, r5320331, r5320320, MPFR_RNDN);
        mpfr_sub(r5320342, r5320340, r5320341, MPFR_RNDN);
        if (mpfr_get_si(r5320327, MPFR_RNDN)) { mpfr_set(r5320343, r5320338, MPFR_RNDN); } else { mpfr_set(r5320343, r5320342, MPFR_RNDN); };
        if (mpfr_get_si(r5320322, MPFR_RNDN)) { mpfr_set(r5320344, r5320325, MPFR_RNDN); } else { mpfr_set(r5320344, r5320343, MPFR_RNDN); };
        return mpfr_get_d(r5320344, MPFR_RNDN);
}

