#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 r9390 = b_2;
        float r9391 = -r9390;
        float r9392 = r9390 * r9390;
        float r9393 = a;
        float r9394 = c;
        float r9395 = r9393 * r9394;
        float r9396 = r9392 - r9395;
        float r9397 = sqrt(r9396);
        float r9398 = r9391 - r9397;
        float r9399 = r9398 / r9393;
        return r9399;
}

double f_id(double a, double b_2, double c) {
        double r9400 = b_2;
        double r9401 = -r9400;
        double r9402 = r9400 * r9400;
        double r9403 = a;
        double r9404 = c;
        double r9405 = r9403 * r9404;
        double r9406 = r9402 - r9405;
        double r9407 = sqrt(r9406);
        double r9408 = r9401 - r9407;
        double r9409 = r9408 / r9403;
        return r9409;
}


double f_of(float a, float b_2, float c) {
        float r9410 = b_2;
        float r9411 = -1.338815475246526e+154f;
        bool r9412 = r9410 <= r9411;
        float r9413 = c;
        float r9414 = a;
        float r9415 = r9414 * r9413;
        float r9416 = r9415 / r9410;
        float r9417 = 0.5f;
        float r9418 = r9416 * r9417;
        float r9419 = r9418 - r9410;
        float r9420 = r9419 - r9410;
        float r9421 = r9413 / r9420;
        float r9422 = -1.09373698335034e-303f;
        bool r9423 = r9410 <= r9422;
        float r9424 = r9410 * r9410;
        float r9425 = r9424 - r9415;
        float r9426 = sqrt(r9425);
        float r9427 = r9426 - r9410;
        float r9428 = r9413 / r9427;
        float r9429 = 1.170080853887373e+54f;
        bool r9430 = r9410 <= r9429;
        float r9431 = r9410 / r9414;
        float r9432 = -r9431;
        float r9433 = r9426 / r9414;
        float r9434 = r9432 - r9433;
        float r9435 = -2.0f;
        float r9436 = r9431 * r9435;
        float r9437 = r9430 ? r9434 : r9436;
        float r9438 = r9423 ? r9428 : r9437;
        float r9439 = r9412 ? r9421 : r9438;
        return r9439;
}

double f_od(double a, double b_2, double c) {
        double r9440 = b_2;
        double r9441 = -1.338815475246526e+154;
        bool r9442 = r9440 <= r9441;
        double r9443 = c;
        double r9444 = a;
        double r9445 = r9444 * r9443;
        double r9446 = r9445 / r9440;
        double r9447 = 0.5;
        double r9448 = r9446 * r9447;
        double r9449 = r9448 - r9440;
        double r9450 = r9449 - r9440;
        double r9451 = r9443 / r9450;
        double r9452 = -1.09373698335034e-303;
        bool r9453 = r9440 <= r9452;
        double r9454 = r9440 * r9440;
        double r9455 = r9454 - r9445;
        double r9456 = sqrt(r9455);
        double r9457 = r9456 - r9440;
        double r9458 = r9443 / r9457;
        double r9459 = 1.170080853887373e+54;
        bool r9460 = r9440 <= r9459;
        double r9461 = r9440 / r9444;
        double r9462 = -r9461;
        double r9463 = r9456 / r9444;
        double r9464 = r9462 - r9463;
        double r9465 = -2.0;
        double r9466 = r9461 * r9465;
        double r9467 = r9460 ? r9464 : r9466;
        double r9468 = r9453 ? r9458 : r9467;
        double r9469 = r9442 ? r9451 : r9468;
        return r9469;
}

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 r9470, r9471, r9472, r9473, r9474, r9475, r9476, r9477, r9478, r9479;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9470);
        mpfr_init(r9471);
        mpfr_init(r9472);
        mpfr_init(r9473);
        mpfr_init(r9474);
        mpfr_init(r9475);
        mpfr_init(r9476);
        mpfr_init(r9477);
        mpfr_init(r9478);
        mpfr_init(r9479);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r9470, b_2, MPFR_RNDN);
        mpfr_neg(r9471, r9470, MPFR_RNDN);
        mpfr_mul(r9472, r9470, r9470, MPFR_RNDN);
        mpfr_set_d(r9473, a, MPFR_RNDN);
        mpfr_set_d(r9474, c, MPFR_RNDN);
        mpfr_mul(r9475, r9473, r9474, MPFR_RNDN);
        mpfr_sub(r9476, r9472, r9475, MPFR_RNDN);
        mpfr_sqrt(r9477, r9476, MPFR_RNDN);
        mpfr_sub(r9478, r9471, r9477, MPFR_RNDN);
        mpfr_div(r9479, r9478, r9473, MPFR_RNDN);
        return mpfr_get_d(r9479, MPFR_RNDN);
}

static mpfr_t r9480, r9481, r9482, r9483, r9484, r9485, r9486, r9487, r9488, r9489, r9490, r9491, r9492, r9493, r9494, r9495, r9496, r9497, r9498, r9499, r9500, r9501, r9502, r9503, r9504, r9505, r9506, r9507, r9508, r9509;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9480);
        mpfr_init_set_str(r9481, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r9482);
        mpfr_init(r9483);
        mpfr_init(r9484);
        mpfr_init(r9485);
        mpfr_init(r9486);
        mpfr_init_set_str(r9487, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9488);
        mpfr_init(r9489);
        mpfr_init(r9490);
        mpfr_init(r9491);
        mpfr_init_set_str(r9492, "-1.09373698335034e-303", 10, MPFR_RNDN);
        mpfr_init(r9493);
        mpfr_init(r9494);
        mpfr_init(r9495);
        mpfr_init(r9496);
        mpfr_init(r9497);
        mpfr_init(r9498);
        mpfr_init_set_str(r9499, "1.170080853887373e+54", 10, MPFR_RNDN);
        mpfr_init(r9500);
        mpfr_init(r9501);
        mpfr_init(r9502);
        mpfr_init(r9503);
        mpfr_init(r9504);
        mpfr_init_set_str(r9505, "-2", 10, MPFR_RNDN);
        mpfr_init(r9506);
        mpfr_init(r9507);
        mpfr_init(r9508);
        mpfr_init(r9509);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r9480, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9482, mpfr_cmp(r9480, r9481) <= 0, MPFR_RNDN);
        mpfr_set_d(r9483, c, MPFR_RNDN);
        mpfr_set_d(r9484, a, MPFR_RNDN);
        mpfr_mul(r9485, r9484, r9483, MPFR_RNDN);
        mpfr_div(r9486, r9485, r9480, MPFR_RNDN);
        ;
        mpfr_mul(r9488, r9486, r9487, MPFR_RNDN);
        mpfr_sub(r9489, r9488, r9480, MPFR_RNDN);
        mpfr_sub(r9490, r9489, r9480, MPFR_RNDN);
        mpfr_div(r9491, r9483, r9490, MPFR_RNDN);
        ;
        mpfr_set_si(r9493, mpfr_cmp(r9480, r9492) <= 0, MPFR_RNDN);
        mpfr_mul(r9494, r9480, r9480, MPFR_RNDN);
        mpfr_sub(r9495, r9494, r9485, MPFR_RNDN);
        mpfr_sqrt(r9496, r9495, MPFR_RNDN);
        mpfr_sub(r9497, r9496, r9480, MPFR_RNDN);
        mpfr_div(r9498, r9483, r9497, MPFR_RNDN);
        ;
        mpfr_set_si(r9500, mpfr_cmp(r9480, r9499) <= 0, MPFR_RNDN);
        mpfr_div(r9501, r9480, r9484, MPFR_RNDN);
        mpfr_neg(r9502, r9501, MPFR_RNDN);
        mpfr_div(r9503, r9496, r9484, MPFR_RNDN);
        mpfr_sub(r9504, r9502, r9503, MPFR_RNDN);
        ;
        mpfr_mul(r9506, r9501, r9505, MPFR_RNDN);
        if (mpfr_get_si(r9500, MPFR_RNDN)) { mpfr_set(r9507, r9504, MPFR_RNDN); } else { mpfr_set(r9507, r9506, MPFR_RNDN); };
        if (mpfr_get_si(r9493, MPFR_RNDN)) { mpfr_set(r9508, r9498, MPFR_RNDN); } else { mpfr_set(r9508, r9507, MPFR_RNDN); };
        if (mpfr_get_si(r9482, MPFR_RNDN)) { mpfr_set(r9509, r9491, MPFR_RNDN); } else { mpfr_set(r9509, r9508, MPFR_RNDN); };
        return mpfr_get_d(r9509, MPFR_RNDN);
}

static mpfr_t r9510, r9511, r9512, r9513, r9514, r9515, r9516, r9517, r9518, r9519, r9520, r9521, r9522, r9523, r9524, r9525, r9526, r9527, r9528, r9529, r9530, r9531, r9532, r9533, r9534, r9535, r9536, r9537, r9538, r9539;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9510);
        mpfr_init_set_str(r9511, "-1.338815475246526e+154", 10, MPFR_RNDN);
        mpfr_init(r9512);
        mpfr_init(r9513);
        mpfr_init(r9514);
        mpfr_init(r9515);
        mpfr_init(r9516);
        mpfr_init_set_str(r9517, "1/2", 10, MPFR_RNDN);
        mpfr_init(r9518);
        mpfr_init(r9519);
        mpfr_init(r9520);
        mpfr_init(r9521);
        mpfr_init_set_str(r9522, "-1.09373698335034e-303", 10, MPFR_RNDN);
        mpfr_init(r9523);
        mpfr_init(r9524);
        mpfr_init(r9525);
        mpfr_init(r9526);
        mpfr_init(r9527);
        mpfr_init(r9528);
        mpfr_init_set_str(r9529, "1.170080853887373e+54", 10, MPFR_RNDN);
        mpfr_init(r9530);
        mpfr_init(r9531);
        mpfr_init(r9532);
        mpfr_init(r9533);
        mpfr_init(r9534);
        mpfr_init_set_str(r9535, "-2", 10, MPFR_RNDN);
        mpfr_init(r9536);
        mpfr_init(r9537);
        mpfr_init(r9538);
        mpfr_init(r9539);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r9510, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r9512, mpfr_cmp(r9510, r9511) <= 0, MPFR_RNDN);
        mpfr_set_d(r9513, c, MPFR_RNDN);
        mpfr_set_d(r9514, a, MPFR_RNDN);
        mpfr_mul(r9515, r9514, r9513, MPFR_RNDN);
        mpfr_div(r9516, r9515, r9510, MPFR_RNDN);
        ;
        mpfr_mul(r9518, r9516, r9517, MPFR_RNDN);
        mpfr_sub(r9519, r9518, r9510, MPFR_RNDN);
        mpfr_sub(r9520, r9519, r9510, MPFR_RNDN);
        mpfr_div(r9521, r9513, r9520, MPFR_RNDN);
        ;
        mpfr_set_si(r9523, mpfr_cmp(r9510, r9522) <= 0, MPFR_RNDN);
        mpfr_mul(r9524, r9510, r9510, MPFR_RNDN);
        mpfr_sub(r9525, r9524, r9515, MPFR_RNDN);
        mpfr_sqrt(r9526, r9525, MPFR_RNDN);
        mpfr_sub(r9527, r9526, r9510, MPFR_RNDN);
        mpfr_div(r9528, r9513, r9527, MPFR_RNDN);
        ;
        mpfr_set_si(r9530, mpfr_cmp(r9510, r9529) <= 0, MPFR_RNDN);
        mpfr_div(r9531, r9510, r9514, MPFR_RNDN);
        mpfr_neg(r9532, r9531, MPFR_RNDN);
        mpfr_div(r9533, r9526, r9514, MPFR_RNDN);
        mpfr_sub(r9534, r9532, r9533, MPFR_RNDN);
        ;
        mpfr_mul(r9536, r9531, r9535, MPFR_RNDN);
        if (mpfr_get_si(r9530, MPFR_RNDN)) { mpfr_set(r9537, r9534, MPFR_RNDN); } else { mpfr_set(r9537, r9536, MPFR_RNDN); };
        if (mpfr_get_si(r9523, MPFR_RNDN)) { mpfr_set(r9538, r9528, MPFR_RNDN); } else { mpfr_set(r9538, r9537, MPFR_RNDN); };
        if (mpfr_get_si(r9512, MPFR_RNDN)) { mpfr_set(r9539, r9521, MPFR_RNDN); } else { mpfr_set(r9539, r9538, MPFR_RNDN); };
        return mpfr_get_d(r9539, MPFR_RNDN);
}

