#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 r26336 = b_2;
        float r26337 = -r26336;
        float r26338 = r26336 * r26336;
        float r26339 = a;
        float r26340 = c;
        float r26341 = r26339 * r26340;
        float r26342 = r26338 - r26341;
        float r26343 = sqrt(r26342);
        float r26344 = r26337 - r26343;
        float r26345 = r26344 / r26339;
        return r26345;
}

double f_id(double a, double b_2, double c) {
        double r26346 = b_2;
        double r26347 = -r26346;
        double r26348 = r26346 * r26346;
        double r26349 = a;
        double r26350 = c;
        double r26351 = r26349 * r26350;
        double r26352 = r26348 - r26351;
        double r26353 = sqrt(r26352);
        double r26354 = r26347 - r26353;
        double r26355 = r26354 / r26349;
        return r26355;
}


double f_of(float a, float b_2, float c) {
        float r26356 = c;
        float r26357 = 1/2;
        float r26358 = -r26357;
        float r26359 = b_2;
        float r26360 = r26356 / r26359;
        float r26361 = r26358 * r26360;
        float r26362 = r26356 / r26361;
        float r26363 = -1.8880332828951593e+155;
        bool r26364 = r26362 <= r26363;
        float r26365 = r26356 * r26357;
        float r26366 = r26365 / r26359;
        float r26367 = 2;
        float r26368 = a;
        float r26369 = r26368 / r26359;
        float r26370 = r26367 / r26369;
        float r26371 = r26366 - r26370;
        float r26372 = 7.181741203934953e-127;
        bool r26373 = r26362 <= r26372;
        float r26374 = -r26359;
        float r26375 = r26374 / r26368;
        float r26376 = r26359 * r26359;
        float r26377 = r26368 * r26356;
        float r26378 = r26376 - r26377;
        float r26379 = sqrt(r26378);
        float r26380 = r26379 / r26368;
        float r26381 = r26375 - r26380;
        float r26382 = 4.104256134440555e+92;
        bool r26383 = r26362 <= r26382;
        float r26384 = r26356 * r26368;
        float r26385 = r26379 - r26359;
        float r26386 = r26384 / r26385;
        float r26387 = 1;
        float r26388 = r26387 / r26368;
        float r26389 = r26386 * r26388;
        float r26390 = r26357 * r26356;
        float r26391 = r26359 / r26368;
        float r26392 = r26390 / r26391;
        float r26393 = r26359 + r26359;
        float r26394 = r26392 - r26393;
        float r26395 = r26356 / r26394;
        float r26396 = r26383 ? r26389 : r26395;
        float r26397 = r26373 ? r26381 : r26396;
        float r26398 = r26364 ? r26371 : r26397;
        return r26398;
}

double f_od(double a, double b_2, double c) {
        double r26399 = c;
        double r26400 = 1/2;
        double r26401 = -r26400;
        double r26402 = b_2;
        double r26403 = r26399 / r26402;
        double r26404 = r26401 * r26403;
        double r26405 = r26399 / r26404;
        double r26406 = -1.8880332828951593e+155;
        bool r26407 = r26405 <= r26406;
        double r26408 = r26399 * r26400;
        double r26409 = r26408 / r26402;
        double r26410 = 2;
        double r26411 = a;
        double r26412 = r26411 / r26402;
        double r26413 = r26410 / r26412;
        double r26414 = r26409 - r26413;
        double r26415 = 7.181741203934953e-127;
        bool r26416 = r26405 <= r26415;
        double r26417 = -r26402;
        double r26418 = r26417 / r26411;
        double r26419 = r26402 * r26402;
        double r26420 = r26411 * r26399;
        double r26421 = r26419 - r26420;
        double r26422 = sqrt(r26421);
        double r26423 = r26422 / r26411;
        double r26424 = r26418 - r26423;
        double r26425 = 4.104256134440555e+92;
        bool r26426 = r26405 <= r26425;
        double r26427 = r26399 * r26411;
        double r26428 = r26422 - r26402;
        double r26429 = r26427 / r26428;
        double r26430 = 1;
        double r26431 = r26430 / r26411;
        double r26432 = r26429 * r26431;
        double r26433 = r26400 * r26399;
        double r26434 = r26402 / r26411;
        double r26435 = r26433 / r26434;
        double r26436 = r26402 + r26402;
        double r26437 = r26435 - r26436;
        double r26438 = r26399 / r26437;
        double r26439 = r26426 ? r26432 : r26438;
        double r26440 = r26416 ? r26424 : r26439;
        double r26441 = r26407 ? r26414 : r26440;
        return r26441;
}

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 r26442, r26443, r26444, r26445, r26446, r26447, r26448, r26449, r26450, r26451;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26442);
        mpfr_init(r26443);
        mpfr_init(r26444);
        mpfr_init(r26445);
        mpfr_init(r26446);
        mpfr_init(r26447);
        mpfr_init(r26448);
        mpfr_init(r26449);
        mpfr_init(r26450);
        mpfr_init(r26451);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r26442, b_2, MPFR_RNDN);
        mpfr_neg(r26443, r26442, MPFR_RNDN);
        mpfr_mul(r26444, r26442, r26442, MPFR_RNDN);
        mpfr_set_d(r26445, a, MPFR_RNDN);
        mpfr_set_d(r26446, c, MPFR_RNDN);
        mpfr_mul(r26447, r26445, r26446, MPFR_RNDN);
        mpfr_sub(r26448, r26444, r26447, MPFR_RNDN);
        mpfr_sqrt(r26449, r26448, MPFR_RNDN);
        mpfr_sub(r26450, r26443, r26449, MPFR_RNDN);
        mpfr_div(r26451, r26450, r26445, MPFR_RNDN);
        return mpfr_get_d(r26451, MPFR_RNDN);
}

static mpfr_t r26452, r26453, r26454, r26455, r26456, r26457, r26458, r26459, r26460, r26461, r26462, r26463, r26464, r26465, r26466, r26467, r26468, r26469, r26470, r26471, r26472, r26473, r26474, r26475, r26476, r26477, r26478, r26479, r26480, r26481, r26482, r26483, r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491, r26492, r26493, r26494;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26452);
        mpfr_init_set_str(r26453, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26454);
        mpfr_init(r26455);
        mpfr_init(r26456);
        mpfr_init(r26457);
        mpfr_init(r26458);
        mpfr_init_set_str(r26459, "-1.8880332828951593e+155", 10, MPFR_RNDN);
        mpfr_init(r26460);
        mpfr_init(r26461);
        mpfr_init(r26462);
        mpfr_init_set_str(r26463, "2", 10, MPFR_RNDN);
        mpfr_init(r26464);
        mpfr_init(r26465);
        mpfr_init(r26466);
        mpfr_init(r26467);
        mpfr_init_set_str(r26468, "7.181741203934953e-127", 10, MPFR_RNDN);
        mpfr_init(r26469);
        mpfr_init(r26470);
        mpfr_init(r26471);
        mpfr_init(r26472);
        mpfr_init(r26473);
        mpfr_init(r26474);
        mpfr_init(r26475);
        mpfr_init(r26476);
        mpfr_init(r26477);
        mpfr_init_set_str(r26478, "4.104256134440555e+92", 10, MPFR_RNDN);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init(r26482);
        mpfr_init_set_str(r26483, "1", 10, MPFR_RNDN);
        mpfr_init(r26484);
        mpfr_init(r26485);
        mpfr_init(r26486);
        mpfr_init(r26487);
        mpfr_init(r26488);
        mpfr_init(r26489);
        mpfr_init(r26490);
        mpfr_init(r26491);
        mpfr_init(r26492);
        mpfr_init(r26493);
        mpfr_init(r26494);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r26452, c, MPFR_RNDN);
        ;
        mpfr_neg(r26454, r26453, MPFR_RNDN);
        mpfr_set_d(r26455, b_2, MPFR_RNDN);
        mpfr_div(r26456, r26452, r26455, MPFR_RNDN);
        mpfr_mul(r26457, r26454, r26456, MPFR_RNDN);
        mpfr_div(r26458, r26452, r26457, MPFR_RNDN);
        ;
        mpfr_set_si(r26460, mpfr_cmp(r26458, r26459) <= 0, MPFR_RNDN);
        mpfr_mul(r26461, r26452, r26453, MPFR_RNDN);
        mpfr_div(r26462, r26461, r26455, MPFR_RNDN);
        ;
        mpfr_set_d(r26464, a, MPFR_RNDN);
        mpfr_div(r26465, r26464, r26455, MPFR_RNDN);
        mpfr_div(r26466, r26463, r26465, MPFR_RNDN);
        mpfr_sub(r26467, r26462, r26466, MPFR_RNDN);
        ;
        mpfr_set_si(r26469, mpfr_cmp(r26458, r26468) <= 0, MPFR_RNDN);
        mpfr_neg(r26470, r26455, MPFR_RNDN);
        mpfr_div(r26471, r26470, r26464, MPFR_RNDN);
        mpfr_mul(r26472, r26455, r26455, MPFR_RNDN);
        mpfr_mul(r26473, r26464, r26452, MPFR_RNDN);
        mpfr_sub(r26474, r26472, r26473, MPFR_RNDN);
        mpfr_sqrt(r26475, r26474, MPFR_RNDN);
        mpfr_div(r26476, r26475, r26464, MPFR_RNDN);
        mpfr_sub(r26477, r26471, r26476, MPFR_RNDN);
        ;
        mpfr_set_si(r26479, mpfr_cmp(r26458, r26478) <= 0, MPFR_RNDN);
        mpfr_mul(r26480, r26452, r26464, MPFR_RNDN);
        mpfr_sub(r26481, r26475, r26455, MPFR_RNDN);
        mpfr_div(r26482, r26480, r26481, MPFR_RNDN);
        ;
        mpfr_div(r26484, r26483, r26464, MPFR_RNDN);
        mpfr_mul(r26485, r26482, r26484, MPFR_RNDN);
        mpfr_mul(r26486, r26453, r26452, MPFR_RNDN);
        mpfr_div(r26487, r26455, r26464, MPFR_RNDN);
        mpfr_div(r26488, r26486, r26487, MPFR_RNDN);
        mpfr_add(r26489, r26455, r26455, MPFR_RNDN);
        mpfr_sub(r26490, r26488, r26489, MPFR_RNDN);
        mpfr_div(r26491, r26452, r26490, MPFR_RNDN);
        if (mpfr_get_si(r26479, MPFR_RNDN)) { mpfr_set(r26492, r26485, MPFR_RNDN); } else { mpfr_set(r26492, r26491, MPFR_RNDN); };
        if (mpfr_get_si(r26469, MPFR_RNDN)) { mpfr_set(r26493, r26477, MPFR_RNDN); } else { mpfr_set(r26493, r26492, MPFR_RNDN); };
        if (mpfr_get_si(r26460, MPFR_RNDN)) { mpfr_set(r26494, r26467, MPFR_RNDN); } else { mpfr_set(r26494, r26493, MPFR_RNDN); };
        return mpfr_get_d(r26494, MPFR_RNDN);
}

static mpfr_t r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502, r26503, r26504, r26505, r26506, r26507, r26508, r26509, r26510, r26511, r26512, r26513, r26514, r26515, r26516, r26517, r26518, r26519, r26520, r26521, r26522, r26523, r26524, r26525, r26526, r26527, r26528, r26529, r26530, r26531, r26532, r26533, r26534, r26535, r26536, r26537;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26495);
        mpfr_init_set_str(r26496, "1/2", 10, MPFR_RNDN);
        mpfr_init(r26497);
        mpfr_init(r26498);
        mpfr_init(r26499);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init_set_str(r26502, "-1.8880332828951593e+155", 10, MPFR_RNDN);
        mpfr_init(r26503);
        mpfr_init(r26504);
        mpfr_init(r26505);
        mpfr_init_set_str(r26506, "2", 10, MPFR_RNDN);
        mpfr_init(r26507);
        mpfr_init(r26508);
        mpfr_init(r26509);
        mpfr_init(r26510);
        mpfr_init_set_str(r26511, "7.181741203934953e-127", 10, MPFR_RNDN);
        mpfr_init(r26512);
        mpfr_init(r26513);
        mpfr_init(r26514);
        mpfr_init(r26515);
        mpfr_init(r26516);
        mpfr_init(r26517);
        mpfr_init(r26518);
        mpfr_init(r26519);
        mpfr_init(r26520);
        mpfr_init_set_str(r26521, "4.104256134440555e+92", 10, MPFR_RNDN);
        mpfr_init(r26522);
        mpfr_init(r26523);
        mpfr_init(r26524);
        mpfr_init(r26525);
        mpfr_init_set_str(r26526, "1", 10, MPFR_RNDN);
        mpfr_init(r26527);
        mpfr_init(r26528);
        mpfr_init(r26529);
        mpfr_init(r26530);
        mpfr_init(r26531);
        mpfr_init(r26532);
        mpfr_init(r26533);
        mpfr_init(r26534);
        mpfr_init(r26535);
        mpfr_init(r26536);
        mpfr_init(r26537);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r26495, c, MPFR_RNDN);
        ;
        mpfr_neg(r26497, r26496, MPFR_RNDN);
        mpfr_set_d(r26498, b_2, MPFR_RNDN);
        mpfr_div(r26499, r26495, r26498, MPFR_RNDN);
        mpfr_mul(r26500, r26497, r26499, MPFR_RNDN);
        mpfr_div(r26501, r26495, r26500, MPFR_RNDN);
        ;
        mpfr_set_si(r26503, mpfr_cmp(r26501, r26502) <= 0, MPFR_RNDN);
        mpfr_mul(r26504, r26495, r26496, MPFR_RNDN);
        mpfr_div(r26505, r26504, r26498, MPFR_RNDN);
        ;
        mpfr_set_d(r26507, a, MPFR_RNDN);
        mpfr_div(r26508, r26507, r26498, MPFR_RNDN);
        mpfr_div(r26509, r26506, r26508, MPFR_RNDN);
        mpfr_sub(r26510, r26505, r26509, MPFR_RNDN);
        ;
        mpfr_set_si(r26512, mpfr_cmp(r26501, r26511) <= 0, MPFR_RNDN);
        mpfr_neg(r26513, r26498, MPFR_RNDN);
        mpfr_div(r26514, r26513, r26507, MPFR_RNDN);
        mpfr_mul(r26515, r26498, r26498, MPFR_RNDN);
        mpfr_mul(r26516, r26507, r26495, MPFR_RNDN);
        mpfr_sub(r26517, r26515, r26516, MPFR_RNDN);
        mpfr_sqrt(r26518, r26517, MPFR_RNDN);
        mpfr_div(r26519, r26518, r26507, MPFR_RNDN);
        mpfr_sub(r26520, r26514, r26519, MPFR_RNDN);
        ;
        mpfr_set_si(r26522, mpfr_cmp(r26501, r26521) <= 0, MPFR_RNDN);
        mpfr_mul(r26523, r26495, r26507, MPFR_RNDN);
        mpfr_sub(r26524, r26518, r26498, MPFR_RNDN);
        mpfr_div(r26525, r26523, r26524, MPFR_RNDN);
        ;
        mpfr_div(r26527, r26526, r26507, MPFR_RNDN);
        mpfr_mul(r26528, r26525, r26527, MPFR_RNDN);
        mpfr_mul(r26529, r26496, r26495, MPFR_RNDN);
        mpfr_div(r26530, r26498, r26507, MPFR_RNDN);
        mpfr_div(r26531, r26529, r26530, MPFR_RNDN);
        mpfr_add(r26532, r26498, r26498, MPFR_RNDN);
        mpfr_sub(r26533, r26531, r26532, MPFR_RNDN);
        mpfr_div(r26534, r26495, r26533, MPFR_RNDN);
        if (mpfr_get_si(r26522, MPFR_RNDN)) { mpfr_set(r26535, r26528, MPFR_RNDN); } else { mpfr_set(r26535, r26534, MPFR_RNDN); };
        if (mpfr_get_si(r26512, MPFR_RNDN)) { mpfr_set(r26536, r26520, MPFR_RNDN); } else { mpfr_set(r26536, r26535, MPFR_RNDN); };
        if (mpfr_get_si(r26503, MPFR_RNDN)) { mpfr_set(r26537, r26510, MPFR_RNDN); } else { mpfr_set(r26537, r26536, MPFR_RNDN); };
        return mpfr_get_d(r26537, MPFR_RNDN);
}

