#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 r9206 = b_2;
        float r9207 = -r9206;
        float r9208 = r9206 * r9206;
        float r9209 = a;
        float r9210 = c;
        float r9211 = r9209 * r9210;
        float r9212 = r9208 - r9211;
        float r9213 = sqrt(r9212);
        float r9214 = r9207 - r9213;
        float r9215 = r9214 / r9209;
        return r9215;
}

double f_id(double a, double b_2, double c) {
        double r9216 = b_2;
        double r9217 = -r9216;
        double r9218 = r9216 * r9216;
        double r9219 = a;
        double r9220 = c;
        double r9221 = r9219 * r9220;
        double r9222 = r9218 - r9221;
        double r9223 = sqrt(r9222);
        double r9224 = r9217 - r9223;
        double r9225 = r9224 / r9219;
        return r9225;
}


double f_of(float a, float b_2, float c) {
        float r9226 = b_2;
        float r9227 = -1.338815475246526e+154f;
        bool r9228 = r9226 <= r9227;
        float r9229 = c;
        float r9230 = a;
        float r9231 = r9230 * r9229;
        float r9232 = r9231 / r9226;
        float r9233 = 0.5f;
        float r9234 = r9232 * r9233;
        float r9235 = r9234 - r9226;
        float r9236 = r9235 - r9226;
        float r9237 = r9229 / r9236;
        float r9238 = -1.09373698335034e-303f;
        bool r9239 = r9226 <= r9238;
        float r9240 = r9226 * r9226;
        float r9241 = r9240 - r9231;
        float r9242 = sqrt(r9241);
        float r9243 = r9242 - r9226;
        float r9244 = r9229 / r9243;
        float r9245 = 1.170080853887373e+54f;
        bool r9246 = r9226 <= r9245;
        float r9247 = -r9226;
        float r9248 = r9247 - r9242;
        float r9249 = r9248 / r9230;
        float r9250 = -2.0f;
        float r9251 = r9226 / r9230;
        float r9252 = r9250 * r9251;
        float r9253 = r9246 ? r9249 : r9252;
        float r9254 = r9239 ? r9244 : r9253;
        float r9255 = r9228 ? r9237 : r9254;
        return r9255;
}

double f_od(double a, double b_2, double c) {
        double r9256 = b_2;
        double r9257 = -1.338815475246526e+154;
        bool r9258 = r9256 <= r9257;
        double r9259 = c;
        double r9260 = a;
        double r9261 = r9260 * r9259;
        double r9262 = r9261 / r9256;
        double r9263 = 0.5;
        double r9264 = r9262 * r9263;
        double r9265 = r9264 - r9256;
        double r9266 = r9265 - r9256;
        double r9267 = r9259 / r9266;
        double r9268 = -1.09373698335034e-303;
        bool r9269 = r9256 <= r9268;
        double r9270 = r9256 * r9256;
        double r9271 = r9270 - r9261;
        double r9272 = sqrt(r9271);
        double r9273 = r9272 - r9256;
        double r9274 = r9259 / r9273;
        double r9275 = 1.170080853887373e+54;
        bool r9276 = r9256 <= r9275;
        double r9277 = -r9256;
        double r9278 = r9277 - r9272;
        double r9279 = r9278 / r9260;
        double r9280 = -2.0;
        double r9281 = r9256 / r9260;
        double r9282 = r9280 * r9281;
        double r9283 = r9276 ? r9279 : r9282;
        double r9284 = r9269 ? r9274 : r9283;
        double r9285 = r9258 ? r9267 : r9284;
        return r9285;
}

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 r9286, r9287, r9288, r9289, r9290, r9291, r9292, r9293, r9294, r9295;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9286);
        mpfr_init(r9287);
        mpfr_init(r9288);
        mpfr_init(r9289);
        mpfr_init(r9290);
        mpfr_init(r9291);
        mpfr_init(r9292);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init(r9295);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r9286, b_2, MPFR_RNDN);
        mpfr_neg(r9287, r9286, MPFR_RNDN);
        mpfr_mul(r9288, r9286, r9286, MPFR_RNDN);
        mpfr_set_d(r9289, a, MPFR_RNDN);
        mpfr_set_d(r9290, c, MPFR_RNDN);
        mpfr_mul(r9291, r9289, r9290, MPFR_RNDN);
        mpfr_sub(r9292, r9288, r9291, MPFR_RNDN);
        mpfr_sqrt(r9293, r9292, MPFR_RNDN);
        mpfr_sub(r9294, r9287, r9293, MPFR_RNDN);
        mpfr_div(r9295, r9294, r9289, MPFR_RNDN);
        return mpfr_get_d(r9295, MPFR_RNDN);
}

static mpfr_t r9296, r9297, r9298, r9299, r9300, r9301, r9302, r9303, r9304, r9305, r9306, r9307, r9308, r9309, r9310, r9311, r9312, r9313, r9314, r9315, r9316, r9317, r9318, r9319, r9320, r9321, r9322, r9323, r9324, r9325;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9296);
        mpfr_init_set_str(r9297, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init(r9300);
        mpfr_init(r9301);
        mpfr_init(r9302);
        mpfr_init_set_str(r9303, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9304);
        mpfr_init(r9305);
        mpfr_init(r9306);
        mpfr_init(r9307);
        mpfr_init_set_str(r9308, "-1.09373698335034e-303", 10, MPFR_RNDN);
        mpfr_init(r9309);
        mpfr_init(r9310);
        mpfr_init(r9311);
        mpfr_init(r9312);
        mpfr_init(r9313);
        mpfr_init(r9314);
        mpfr_init_set_str(r9315, "1.170080853887373e+54", 10, MPFR_RNDN);
        mpfr_init(r9316);
        mpfr_init(r9317);
        mpfr_init(r9318);
        mpfr_init(r9319);
        mpfr_init_set_str(r9320, "-2", 10, MPFR_RNDN);
        mpfr_init(r9321);
        mpfr_init(r9322);
        mpfr_init(r9323);
        mpfr_init(r9324);
        mpfr_init(r9325);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r9296, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9298, mpfr_cmp(r9296, r9297) <= 0, MPFR_RNDN);
        mpfr_set_d(r9299, c, MPFR_RNDN);
        mpfr_set_d(r9300, a, MPFR_RNDN);
        mpfr_mul(r9301, r9300, r9299, MPFR_RNDN);
        mpfr_div(r9302, r9301, r9296, MPFR_RNDN);
        ;
        mpfr_mul(r9304, r9302, r9303, MPFR_RNDN);
        mpfr_sub(r9305, r9304, r9296, MPFR_RNDN);
        mpfr_sub(r9306, r9305, r9296, MPFR_RNDN);
        mpfr_div(r9307, r9299, r9306, MPFR_RNDN);
        ;
        mpfr_set_si(r9309, mpfr_cmp(r9296, r9308) <= 0, MPFR_RNDN);
        mpfr_mul(r9310, r9296, r9296, MPFR_RNDN);
        mpfr_sub(r9311, r9310, r9301, MPFR_RNDN);
        mpfr_sqrt(r9312, r9311, MPFR_RNDN);
        mpfr_sub(r9313, r9312, r9296, MPFR_RNDN);
        mpfr_div(r9314, r9299, r9313, MPFR_RNDN);
        ;
        mpfr_set_si(r9316, mpfr_cmp(r9296, r9315) <= 0, MPFR_RNDN);
        mpfr_neg(r9317, r9296, MPFR_RNDN);
        mpfr_sub(r9318, r9317, r9312, MPFR_RNDN);
        mpfr_div(r9319, r9318, r9300, MPFR_RNDN);
        ;
        mpfr_div(r9321, r9296, r9300, MPFR_RNDN);
        mpfr_mul(r9322, r9320, r9321, MPFR_RNDN);
        if (mpfr_get_si(r9316, MPFR_RNDN)) { mpfr_set(r9323, r9319, MPFR_RNDN); } else { mpfr_set(r9323, r9322, MPFR_RNDN); };
        if (mpfr_get_si(r9309, MPFR_RNDN)) { mpfr_set(r9324, r9314, MPFR_RNDN); } else { mpfr_set(r9324, r9323, MPFR_RNDN); };
        if (mpfr_get_si(r9298, MPFR_RNDN)) { mpfr_set(r9325, r9307, MPFR_RNDN); } else { mpfr_set(r9325, r9324, MPFR_RNDN); };
        return mpfr_get_d(r9325, MPFR_RNDN);
}

static mpfr_t r9326, r9327, r9328, r9329, r9330, r9331, r9332, r9333, r9334, r9335, r9336, r9337, r9338, r9339, r9340, r9341, r9342, r9343, r9344, r9345, r9346, r9347, r9348, r9349, r9350, r9351, r9352, r9353, r9354, r9355;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9326);
        mpfr_init_set_str(r9327, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r9328);
        mpfr_init(r9329);
        mpfr_init(r9330);
        mpfr_init(r9331);
        mpfr_init(r9332);
        mpfr_init_set_str(r9333, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9334);
        mpfr_init(r9335);
        mpfr_init(r9336);
        mpfr_init(r9337);
        mpfr_init_set_str(r9338, "-1.09373698335034e-303", 10, MPFR_RNDN);
        mpfr_init(r9339);
        mpfr_init(r9340);
        mpfr_init(r9341);
        mpfr_init(r9342);
        mpfr_init(r9343);
        mpfr_init(r9344);
        mpfr_init_set_str(r9345, "1.170080853887373e+54", 10, MPFR_RNDN);
        mpfr_init(r9346);
        mpfr_init(r9347);
        mpfr_init(r9348);
        mpfr_init(r9349);
        mpfr_init_set_str(r9350, "-2", 10, MPFR_RNDN);
        mpfr_init(r9351);
        mpfr_init(r9352);
        mpfr_init(r9353);
        mpfr_init(r9354);
        mpfr_init(r9355);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r9326, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9328, mpfr_cmp(r9326, r9327) <= 0, MPFR_RNDN);
        mpfr_set_d(r9329, c, MPFR_RNDN);
        mpfr_set_d(r9330, a, MPFR_RNDN);
        mpfr_mul(r9331, r9330, r9329, MPFR_RNDN);
        mpfr_div(r9332, r9331, r9326, MPFR_RNDN);
        ;
        mpfr_mul(r9334, r9332, r9333, MPFR_RNDN);
        mpfr_sub(r9335, r9334, r9326, MPFR_RNDN);
        mpfr_sub(r9336, r9335, r9326, MPFR_RNDN);
        mpfr_div(r9337, r9329, r9336, MPFR_RNDN);
        ;
        mpfr_set_si(r9339, mpfr_cmp(r9326, r9338) <= 0, MPFR_RNDN);
        mpfr_mul(r9340, r9326, r9326, MPFR_RNDN);
        mpfr_sub(r9341, r9340, r9331, MPFR_RNDN);
        mpfr_sqrt(r9342, r9341, MPFR_RNDN);
        mpfr_sub(r9343, r9342, r9326, MPFR_RNDN);
        mpfr_div(r9344, r9329, r9343, MPFR_RNDN);
        ;
        mpfr_set_si(r9346, mpfr_cmp(r9326, r9345) <= 0, MPFR_RNDN);
        mpfr_neg(r9347, r9326, MPFR_RNDN);
        mpfr_sub(r9348, r9347, r9342, MPFR_RNDN);
        mpfr_div(r9349, r9348, r9330, MPFR_RNDN);
        ;
        mpfr_div(r9351, r9326, r9330, MPFR_RNDN);
        mpfr_mul(r9352, r9350, r9351, MPFR_RNDN);
        if (mpfr_get_si(r9346, MPFR_RNDN)) { mpfr_set(r9353, r9349, MPFR_RNDN); } else { mpfr_set(r9353, r9352, MPFR_RNDN); };
        if (mpfr_get_si(r9339, MPFR_RNDN)) { mpfr_set(r9354, r9344, MPFR_RNDN); } else { mpfr_set(r9354, r9353, MPFR_RNDN); };
        if (mpfr_get_si(r9328, MPFR_RNDN)) { mpfr_set(r9355, r9337, MPFR_RNDN); } else { mpfr_set(r9355, r9354, MPFR_RNDN); };
        return mpfr_get_d(r9355, MPFR_RNDN);
}

