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

char *name = "quadm (p42, negative)";

double f_if(float a, float b, float c) {
        float r4940363 = b;
        float r4940364 = -r4940363;
        float r4940365 = r4940363 * r4940363;
        float r4940366 = 4.0f;
        float r4940367 = a;
        float r4940368 = c;
        float r4940369 = r4940367 * r4940368;
        float r4940370 = r4940366 * r4940369;
        float r4940371 = r4940365 - r4940370;
        float r4940372 = sqrt(r4940371);
        float r4940373 = r4940364 - r4940372;
        float r4940374 = 2.0f;
        float r4940375 = r4940374 * r4940367;
        float r4940376 = r4940373 / r4940375;
        return r4940376;
}

double f_id(double a, double b, double c) {
        double r4940377 = b;
        double r4940378 = -r4940377;
        double r4940379 = r4940377 * r4940377;
        double r4940380 = 4.0;
        double r4940381 = a;
        double r4940382 = c;
        double r4940383 = r4940381 * r4940382;
        double r4940384 = r4940380 * r4940383;
        double r4940385 = r4940379 - r4940384;
        double r4940386 = sqrt(r4940385);
        double r4940387 = r4940378 - r4940386;
        double r4940388 = 2.0;
        double r4940389 = r4940388 * r4940381;
        double r4940390 = r4940387 / r4940389;
        return r4940390;
}


double f_of(float a, float b, float c) {
        float r4940391 = b;
        float r4940392 = -1.6024324632435378e+106f;
        bool r4940393 = r4940391 <= r4940392;
        float r4940394 = c;
        float r4940395 = 2.0f;
        float r4940396 = r4940394 / r4940395;
        float r4940397 = 4.0f;
        float r4940398 = r4940397 / r4940395;
        float r4940399 = r4940396 * r4940398;
        float r4940400 = r4940394 / r4940391;
        float r4940401 = a;
        float r4940402 = r4940400 * r4940401;
        float r4940403 = r4940402 - r4940391;
        float r4940404 = r4940399 / r4940403;
        float r4940405 = -1.4675972444496408e-273f;
        bool r4940406 = r4940391 <= r4940405;
        float r4940407 = -r4940391;
        float r4940408 = r4940391 * r4940391;
        float r4940409 = r4940394 * r4940397;
        float r4940410 = r4940401 * r4940409;
        float r4940411 = r4940408 - r4940410;
        float r4940412 = sqrt(r4940411);
        float r4940413 = r4940407 + r4940412;
        float r4940414 = r4940394 / r4940413;
        float r4940415 = r4940398 * r4940414;
        float r4940416 = 3.339875449485796e+67f;
        bool r4940417 = r4940391 <= r4940416;
        float r4940418 = r4940391 * r4940391;
        float r4940419 = r4940401 * r4940394;
        float r4940420 = r4940397 * r4940419;
        float r4940421 = r4940418 - r4940420;
        float r4940422 = sqrt(r4940421);
        float r4940423 = r4940407 - r4940422;
        float r4940424 = r4940395 * r4940401;
        float r4940425 = r4940423 / r4940424;
        float r4940426 = r4940391 / r4940401;
        float r4940427 = r4940400 - r4940426;
        float r4940428 = r4940417 ? r4940425 : r4940427;
        float r4940429 = r4940406 ? r4940415 : r4940428;
        float r4940430 = r4940393 ? r4940404 : r4940429;
        return r4940430;
}

double f_od(double a, double b, double c) {
        double r4940431 = b;
        double r4940432 = -1.6024324632435378e+106;
        bool r4940433 = r4940431 <= r4940432;
        double r4940434 = c;
        double r4940435 = 2.0;
        double r4940436 = r4940434 / r4940435;
        double r4940437 = 4.0;
        double r4940438 = r4940437 / r4940435;
        double r4940439 = r4940436 * r4940438;
        double r4940440 = r4940434 / r4940431;
        double r4940441 = a;
        double r4940442 = r4940440 * r4940441;
        double r4940443 = r4940442 - r4940431;
        double r4940444 = r4940439 / r4940443;
        double r4940445 = -1.4675972444496408e-273;
        bool r4940446 = r4940431 <= r4940445;
        double r4940447 = -r4940431;
        double r4940448 = r4940431 * r4940431;
        double r4940449 = r4940434 * r4940437;
        double r4940450 = r4940441 * r4940449;
        double r4940451 = r4940448 - r4940450;
        double r4940452 = sqrt(r4940451);
        double r4940453 = r4940447 + r4940452;
        double r4940454 = r4940434 / r4940453;
        double r4940455 = r4940438 * r4940454;
        double r4940456 = 3.339875449485796e+67;
        bool r4940457 = r4940431 <= r4940456;
        double r4940458 = r4940431 * r4940431;
        double r4940459 = r4940441 * r4940434;
        double r4940460 = r4940437 * r4940459;
        double r4940461 = r4940458 - r4940460;
        double r4940462 = sqrt(r4940461);
        double r4940463 = r4940447 - r4940462;
        double r4940464 = r4940435 * r4940441;
        double r4940465 = r4940463 / r4940464;
        double r4940466 = r4940431 / r4940441;
        double r4940467 = r4940440 - r4940466;
        double r4940468 = r4940457 ? r4940465 : r4940467;
        double r4940469 = r4940446 ? r4940455 : r4940468;
        double r4940470 = r4940433 ? r4940444 : r4940469;
        return r4940470;
}

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 r4940471, r4940472, r4940473, r4940474, r4940475, r4940476, r4940477, r4940478, r4940479, r4940480, r4940481, r4940482, r4940483, r4940484;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r4940471);
        mpfr_init(r4940472);
        mpfr_init(r4940473);
        mpfr_init_set_str(r4940474, "4", 10, MPFR_RNDN);
        mpfr_init(r4940475);
        mpfr_init(r4940476);
        mpfr_init(r4940477);
        mpfr_init(r4940478);
        mpfr_init(r4940479);
        mpfr_init(r4940480);
        mpfr_init(r4940481);
        mpfr_init_set_str(r4940482, "2", 10, MPFR_RNDN);
        mpfr_init(r4940483);
        mpfr_init(r4940484);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r4940471, b, MPFR_RNDN);
        mpfr_neg(r4940472, r4940471, MPFR_RNDN);
        mpfr_sqr(r4940473, r4940471, MPFR_RNDN);
        ;
        mpfr_set_d(r4940475, a, MPFR_RNDN);
        mpfr_set_d(r4940476, c, MPFR_RNDN);
        mpfr_mul(r4940477, r4940475, r4940476, MPFR_RNDN);
        mpfr_mul(r4940478, r4940474, r4940477, MPFR_RNDN);
        mpfr_sub(r4940479, r4940473, r4940478, MPFR_RNDN);
        mpfr_sqrt(r4940480, r4940479, MPFR_RNDN);
        mpfr_sub(r4940481, r4940472, r4940480, MPFR_RNDN);
        ;
        mpfr_mul(r4940483, r4940482, r4940475, MPFR_RNDN);
        mpfr_div(r4940484, r4940481, r4940483, MPFR_RNDN);
        return mpfr_get_d(r4940484, MPFR_RNDN);
}

static mpfr_t r4940485, r4940486, r4940487, r4940488, r4940489, r4940490, r4940491, r4940492, r4940493, r4940494, r4940495, r4940496, r4940497, r4940498, r4940499, r4940500, r4940501, r4940502, r4940503, r4940504, r4940505, r4940506, r4940507, r4940508, r4940509, r4940510, r4940511, r4940512, r4940513, r4940514, r4940515, r4940516, r4940517, r4940518, r4940519, r4940520, r4940521, r4940522, r4940523, r4940524;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r4940485);
        mpfr_init_set_str(r4940486, "-1.6024324632435378e+106", 10, MPFR_RNDN);
        mpfr_init(r4940487);
        mpfr_init(r4940488);
        mpfr_init_set_str(r4940489, "2", 10, MPFR_RNDN);
        mpfr_init(r4940490);
        mpfr_init_set_str(r4940491, "4", 10, MPFR_RNDN);
        mpfr_init(r4940492);
        mpfr_init(r4940493);
        mpfr_init(r4940494);
        mpfr_init(r4940495);
        mpfr_init(r4940496);
        mpfr_init(r4940497);
        mpfr_init(r4940498);
        mpfr_init_set_str(r4940499, "-1.4675972444496408e-273", 10, MPFR_RNDN);
        mpfr_init(r4940500);
        mpfr_init(r4940501);
        mpfr_init(r4940502);
        mpfr_init(r4940503);
        mpfr_init(r4940504);
        mpfr_init(r4940505);
        mpfr_init(r4940506);
        mpfr_init(r4940507);
        mpfr_init(r4940508);
        mpfr_init(r4940509);
        mpfr_init_set_str(r4940510, "3.339875449485796e+67", 10, MPFR_RNDN);
        mpfr_init(r4940511);
        mpfr_init(r4940512);
        mpfr_init(r4940513);
        mpfr_init(r4940514);
        mpfr_init(r4940515);
        mpfr_init(r4940516);
        mpfr_init(r4940517);
        mpfr_init(r4940518);
        mpfr_init(r4940519);
        mpfr_init(r4940520);
        mpfr_init(r4940521);
        mpfr_init(r4940522);
        mpfr_init(r4940523);
        mpfr_init(r4940524);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r4940485, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4940487, mpfr_cmp(r4940485, r4940486) <= 0, MPFR_RNDN);
        mpfr_set_d(r4940488, c, MPFR_RNDN);
        ;
        mpfr_div(r4940490, r4940488, r4940489, MPFR_RNDN);
        ;
        mpfr_div(r4940492, r4940491, r4940489, MPFR_RNDN);
        mpfr_mul(r4940493, r4940490, r4940492, MPFR_RNDN);
        mpfr_div(r4940494, r4940488, r4940485, MPFR_RNDN);
        mpfr_set_d(r4940495, a, MPFR_RNDN);
        mpfr_mul(r4940496, r4940494, r4940495, MPFR_RNDN);
        mpfr_sub(r4940497, r4940496, r4940485, MPFR_RNDN);
        mpfr_div(r4940498, r4940493, r4940497, MPFR_RNDN);
        ;
        mpfr_set_si(r4940500, mpfr_cmp(r4940485, r4940499) <= 0, MPFR_RNDN);
        mpfr_neg(r4940501, r4940485, MPFR_RNDN);
        mpfr_mul(r4940502, r4940485, r4940485, MPFR_RNDN);
        mpfr_mul(r4940503, r4940488, r4940491, MPFR_RNDN);
        mpfr_mul(r4940504, r4940495, r4940503, MPFR_RNDN);
        mpfr_sub(r4940505, r4940502, r4940504, MPFR_RNDN);
        mpfr_sqrt(r4940506, r4940505, MPFR_RNDN);
        mpfr_add(r4940507, r4940501, r4940506, MPFR_RNDN);
        mpfr_div(r4940508, r4940488, r4940507, MPFR_RNDN);
        mpfr_mul(r4940509, r4940492, r4940508, MPFR_RNDN);
        ;
        mpfr_set_si(r4940511, mpfr_cmp(r4940485, r4940510) <= 0, MPFR_RNDN);
        mpfr_sqr(r4940512, r4940485, MPFR_RNDN);
        mpfr_mul(r4940513, r4940495, r4940488, MPFR_RNDN);
        mpfr_mul(r4940514, r4940491, r4940513, MPFR_RNDN);
        mpfr_sub(r4940515, r4940512, r4940514, MPFR_RNDN);
        mpfr_sqrt(r4940516, r4940515, MPFR_RNDN);
        mpfr_sub(r4940517, r4940501, r4940516, MPFR_RNDN);
        mpfr_mul(r4940518, r4940489, r4940495, MPFR_RNDN);
        mpfr_div(r4940519, r4940517, r4940518, MPFR_RNDN);
        mpfr_div(r4940520, r4940485, r4940495, MPFR_RNDN);
        mpfr_sub(r4940521, r4940494, r4940520, MPFR_RNDN);
        if (mpfr_get_si(r4940511, MPFR_RNDN)) { mpfr_set(r4940522, r4940519, MPFR_RNDN); } else { mpfr_set(r4940522, r4940521, MPFR_RNDN); };
        if (mpfr_get_si(r4940500, MPFR_RNDN)) { mpfr_set(r4940523, r4940509, MPFR_RNDN); } else { mpfr_set(r4940523, r4940522, MPFR_RNDN); };
        if (mpfr_get_si(r4940487, MPFR_RNDN)) { mpfr_set(r4940524, r4940498, MPFR_RNDN); } else { mpfr_set(r4940524, r4940523, MPFR_RNDN); };
        return mpfr_get_d(r4940524, MPFR_RNDN);
}

static mpfr_t r4940525, r4940526, r4940527, r4940528, r4940529, r4940530, r4940531, r4940532, r4940533, r4940534, r4940535, r4940536, r4940537, r4940538, r4940539, r4940540, r4940541, r4940542, r4940543, r4940544, r4940545, r4940546, r4940547, r4940548, r4940549, r4940550, r4940551, r4940552, r4940553, r4940554, r4940555, r4940556, r4940557, r4940558, r4940559, r4940560, r4940561, r4940562, r4940563, r4940564;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r4940525);
        mpfr_init_set_str(r4940526, "-1.6024324632435378e+106", 10, MPFR_RNDN);
        mpfr_init(r4940527);
        mpfr_init(r4940528);
        mpfr_init_set_str(r4940529, "2", 10, MPFR_RNDN);
        mpfr_init(r4940530);
        mpfr_init_set_str(r4940531, "4", 10, MPFR_RNDN);
        mpfr_init(r4940532);
        mpfr_init(r4940533);
        mpfr_init(r4940534);
        mpfr_init(r4940535);
        mpfr_init(r4940536);
        mpfr_init(r4940537);
        mpfr_init(r4940538);
        mpfr_init_set_str(r4940539, "-1.4675972444496408e-273", 10, MPFR_RNDN);
        mpfr_init(r4940540);
        mpfr_init(r4940541);
        mpfr_init(r4940542);
        mpfr_init(r4940543);
        mpfr_init(r4940544);
        mpfr_init(r4940545);
        mpfr_init(r4940546);
        mpfr_init(r4940547);
        mpfr_init(r4940548);
        mpfr_init(r4940549);
        mpfr_init_set_str(r4940550, "3.339875449485796e+67", 10, MPFR_RNDN);
        mpfr_init(r4940551);
        mpfr_init(r4940552);
        mpfr_init(r4940553);
        mpfr_init(r4940554);
        mpfr_init(r4940555);
        mpfr_init(r4940556);
        mpfr_init(r4940557);
        mpfr_init(r4940558);
        mpfr_init(r4940559);
        mpfr_init(r4940560);
        mpfr_init(r4940561);
        mpfr_init(r4940562);
        mpfr_init(r4940563);
        mpfr_init(r4940564);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r4940525, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4940527, mpfr_cmp(r4940525, r4940526) <= 0, MPFR_RNDN);
        mpfr_set_d(r4940528, c, MPFR_RNDN);
        ;
        mpfr_div(r4940530, r4940528, r4940529, MPFR_RNDN);
        ;
        mpfr_div(r4940532, r4940531, r4940529, MPFR_RNDN);
        mpfr_mul(r4940533, r4940530, r4940532, MPFR_RNDN);
        mpfr_div(r4940534, r4940528, r4940525, MPFR_RNDN);
        mpfr_set_d(r4940535, a, MPFR_RNDN);
        mpfr_mul(r4940536, r4940534, r4940535, MPFR_RNDN);
        mpfr_sub(r4940537, r4940536, r4940525, MPFR_RNDN);
        mpfr_div(r4940538, r4940533, r4940537, MPFR_RNDN);
        ;
        mpfr_set_si(r4940540, mpfr_cmp(r4940525, r4940539) <= 0, MPFR_RNDN);
        mpfr_neg(r4940541, r4940525, MPFR_RNDN);
        mpfr_mul(r4940542, r4940525, r4940525, MPFR_RNDN);
        mpfr_mul(r4940543, r4940528, r4940531, MPFR_RNDN);
        mpfr_mul(r4940544, r4940535, r4940543, MPFR_RNDN);
        mpfr_sub(r4940545, r4940542, r4940544, MPFR_RNDN);
        mpfr_sqrt(r4940546, r4940545, MPFR_RNDN);
        mpfr_add(r4940547, r4940541, r4940546, MPFR_RNDN);
        mpfr_div(r4940548, r4940528, r4940547, MPFR_RNDN);
        mpfr_mul(r4940549, r4940532, r4940548, MPFR_RNDN);
        ;
        mpfr_set_si(r4940551, mpfr_cmp(r4940525, r4940550) <= 0, MPFR_RNDN);
        mpfr_sqr(r4940552, r4940525, MPFR_RNDN);
        mpfr_mul(r4940553, r4940535, r4940528, MPFR_RNDN);
        mpfr_mul(r4940554, r4940531, r4940553, MPFR_RNDN);
        mpfr_sub(r4940555, r4940552, r4940554, MPFR_RNDN);
        mpfr_sqrt(r4940556, r4940555, MPFR_RNDN);
        mpfr_sub(r4940557, r4940541, r4940556, MPFR_RNDN);
        mpfr_mul(r4940558, r4940529, r4940535, MPFR_RNDN);
        mpfr_div(r4940559, r4940557, r4940558, MPFR_RNDN);
        mpfr_div(r4940560, r4940525, r4940535, MPFR_RNDN);
        mpfr_sub(r4940561, r4940534, r4940560, MPFR_RNDN);
        if (mpfr_get_si(r4940551, MPFR_RNDN)) { mpfr_set(r4940562, r4940559, MPFR_RNDN); } else { mpfr_set(r4940562, r4940561, MPFR_RNDN); };
        if (mpfr_get_si(r4940540, MPFR_RNDN)) { mpfr_set(r4940563, r4940549, MPFR_RNDN); } else { mpfr_set(r4940563, r4940562, MPFR_RNDN); };
        if (mpfr_get_si(r4940527, MPFR_RNDN)) { mpfr_set(r4940564, r4940538, MPFR_RNDN); } else { mpfr_set(r4940564, r4940563, MPFR_RNDN); };
        return mpfr_get_d(r4940564, MPFR_RNDN);
}

