#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 r4875384 = b;
        float r4875385 = -r4875384;
        float r4875386 = r4875384 * r4875384;
        float r4875387 = 4.0f;
        float r4875388 = a;
        float r4875389 = c;
        float r4875390 = r4875388 * r4875389;
        float r4875391 = r4875387 * r4875390;
        float r4875392 = r4875386 - r4875391;
        float r4875393 = sqrt(r4875392);
        float r4875394 = r4875385 - r4875393;
        float r4875395 = 2.0f;
        float r4875396 = r4875395 * r4875388;
        float r4875397 = r4875394 / r4875396;
        return r4875397;
}

double f_id(double a, double b, double c) {
        double r4875398 = b;
        double r4875399 = -r4875398;
        double r4875400 = r4875398 * r4875398;
        double r4875401 = 4.0;
        double r4875402 = a;
        double r4875403 = c;
        double r4875404 = r4875402 * r4875403;
        double r4875405 = r4875401 * r4875404;
        double r4875406 = r4875400 - r4875405;
        double r4875407 = sqrt(r4875406);
        double r4875408 = r4875399 - r4875407;
        double r4875409 = 2.0;
        double r4875410 = r4875409 * r4875402;
        double r4875411 = r4875408 / r4875410;
        return r4875411;
}


double f_of(float a, float b, float c) {
        float r4875412 = b;
        float r4875413 = -1.9038547349802057e-44f;
        bool r4875414 = r4875412 <= r4875413;
        float r4875415 = 4.0f;
        float r4875416 = 2.0f;
        float r4875417 = r4875415 / r4875416;
        float r4875418 = c;
        float r4875419 = r4875417 * r4875418;
        float r4875420 = a;
        float r4875421 = r4875420 / r4875412;
        float r4875422 = r4875418 + r4875418;
        float r4875423 = r4875421 * r4875422;
        float r4875424 = r4875412 + r4875412;
        float r4875425 = r4875423 - r4875424;
        float r4875426 = r4875419 / r4875425;
        float r4875427 = 4.585114762073355e+93f;
        bool r4875428 = r4875412 <= r4875427;
        float r4875429 = -r4875412;
        float r4875430 = r4875416 * r4875420;
        float r4875431 = r4875429 / r4875430;
        float r4875432 = r4875412 * r4875412;
        float r4875433 = r4875420 * r4875418;
        float r4875434 = r4875415 * r4875433;
        float r4875435 = r4875432 - r4875434;
        float r4875436 = sqrt(r4875435);
        float r4875437 = r4875436 / r4875430;
        float r4875438 = r4875431 - r4875437;
        float r4875439 = r4875429 / r4875420;
        float r4875440 = r4875428 ? r4875438 : r4875439;
        float r4875441 = r4875414 ? r4875426 : r4875440;
        return r4875441;
}

double f_od(double a, double b, double c) {
        double r4875442 = b;
        double r4875443 = -1.9038547349802057e-44;
        bool r4875444 = r4875442 <= r4875443;
        double r4875445 = 4.0;
        double r4875446 = 2.0;
        double r4875447 = r4875445 / r4875446;
        double r4875448 = c;
        double r4875449 = r4875447 * r4875448;
        double r4875450 = a;
        double r4875451 = r4875450 / r4875442;
        double r4875452 = r4875448 + r4875448;
        double r4875453 = r4875451 * r4875452;
        double r4875454 = r4875442 + r4875442;
        double r4875455 = r4875453 - r4875454;
        double r4875456 = r4875449 / r4875455;
        double r4875457 = 4.585114762073355e+93;
        bool r4875458 = r4875442 <= r4875457;
        double r4875459 = -r4875442;
        double r4875460 = r4875446 * r4875450;
        double r4875461 = r4875459 / r4875460;
        double r4875462 = r4875442 * r4875442;
        double r4875463 = r4875450 * r4875448;
        double r4875464 = r4875445 * r4875463;
        double r4875465 = r4875462 - r4875464;
        double r4875466 = sqrt(r4875465);
        double r4875467 = r4875466 / r4875460;
        double r4875468 = r4875461 - r4875467;
        double r4875469 = r4875459 / r4875450;
        double r4875470 = r4875458 ? r4875468 : r4875469;
        double r4875471 = r4875444 ? r4875456 : r4875470;
        return r4875471;
}

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 r4875472, r4875473, r4875474, r4875475, r4875476, r4875477, r4875478, r4875479, r4875480, r4875481, r4875482, r4875483, r4875484, r4875485;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r4875472);
        mpfr_init(r4875473);
        mpfr_init(r4875474);
        mpfr_init_set_str(r4875475, "4", 10, MPFR_RNDN);
        mpfr_init(r4875476);
        mpfr_init(r4875477);
        mpfr_init(r4875478);
        mpfr_init(r4875479);
        mpfr_init(r4875480);
        mpfr_init(r4875481);
        mpfr_init(r4875482);
        mpfr_init_set_str(r4875483, "2", 10, MPFR_RNDN);
        mpfr_init(r4875484);
        mpfr_init(r4875485);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r4875472, b, MPFR_RNDN);
        mpfr_neg(r4875473, r4875472, MPFR_RNDN);
        mpfr_mul(r4875474, r4875472, r4875472, MPFR_RNDN);
        ;
        mpfr_set_d(r4875476, a, MPFR_RNDN);
        mpfr_set_d(r4875477, c, MPFR_RNDN);
        mpfr_mul(r4875478, r4875476, r4875477, MPFR_RNDN);
        mpfr_mul(r4875479, r4875475, r4875478, MPFR_RNDN);
        mpfr_sub(r4875480, r4875474, r4875479, MPFR_RNDN);
        mpfr_sqrt(r4875481, r4875480, MPFR_RNDN);
        mpfr_sub(r4875482, r4875473, r4875481, MPFR_RNDN);
        ;
        mpfr_mul(r4875484, r4875483, r4875476, MPFR_RNDN);
        mpfr_div(r4875485, r4875482, r4875484, MPFR_RNDN);
        return mpfr_get_d(r4875485, MPFR_RNDN);
}

static mpfr_t r4875486, r4875487, r4875488, r4875489, r4875490, r4875491, r4875492, r4875493, r4875494, r4875495, r4875496, r4875497, r4875498, r4875499, r4875500, r4875501, r4875502, r4875503, r4875504, r4875505, r4875506, r4875507, r4875508, r4875509, r4875510, r4875511, r4875512, r4875513, r4875514, r4875515;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r4875486);
        mpfr_init_set_str(r4875487, "-1.9038547349802057e-44", 10, MPFR_RNDN);
        mpfr_init(r4875488);
        mpfr_init_set_str(r4875489, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r4875490, "2", 10, MPFR_RNDN);
        mpfr_init(r4875491);
        mpfr_init(r4875492);
        mpfr_init(r4875493);
        mpfr_init(r4875494);
        mpfr_init(r4875495);
        mpfr_init(r4875496);
        mpfr_init(r4875497);
        mpfr_init(r4875498);
        mpfr_init(r4875499);
        mpfr_init(r4875500);
        mpfr_init_set_str(r4875501, "4.585114762073355e+93", 10, MPFR_RNDN);
        mpfr_init(r4875502);
        mpfr_init(r4875503);
        mpfr_init(r4875504);
        mpfr_init(r4875505);
        mpfr_init(r4875506);
        mpfr_init(r4875507);
        mpfr_init(r4875508);
        mpfr_init(r4875509);
        mpfr_init(r4875510);
        mpfr_init(r4875511);
        mpfr_init(r4875512);
        mpfr_init(r4875513);
        mpfr_init(r4875514);
        mpfr_init(r4875515);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r4875486, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4875488, mpfr_cmp(r4875486, r4875487) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4875491, r4875489, r4875490, MPFR_RNDN);
        mpfr_set_d(r4875492, c, MPFR_RNDN);
        mpfr_mul(r4875493, r4875491, r4875492, MPFR_RNDN);
        mpfr_set_d(r4875494, a, MPFR_RNDN);
        mpfr_div(r4875495, r4875494, r4875486, MPFR_RNDN);
        mpfr_add(r4875496, r4875492, r4875492, MPFR_RNDN);
        mpfr_mul(r4875497, r4875495, r4875496, MPFR_RNDN);
        mpfr_add(r4875498, r4875486, r4875486, MPFR_RNDN);
        mpfr_sub(r4875499, r4875497, r4875498, MPFR_RNDN);
        mpfr_div(r4875500, r4875493, r4875499, MPFR_RNDN);
        ;
        mpfr_set_si(r4875502, mpfr_cmp(r4875486, r4875501) <= 0, MPFR_RNDN);
        mpfr_neg(r4875503, r4875486, MPFR_RNDN);
        mpfr_mul(r4875504, r4875490, r4875494, MPFR_RNDN);
        mpfr_div(r4875505, r4875503, r4875504, MPFR_RNDN);
        mpfr_mul(r4875506, r4875486, r4875486, MPFR_RNDN);
        mpfr_mul(r4875507, r4875494, r4875492, MPFR_RNDN);
        mpfr_mul(r4875508, r4875489, r4875507, MPFR_RNDN);
        mpfr_sub(r4875509, r4875506, r4875508, MPFR_RNDN);
        mpfr_sqrt(r4875510, r4875509, MPFR_RNDN);
        mpfr_div(r4875511, r4875510, r4875504, MPFR_RNDN);
        mpfr_sub(r4875512, r4875505, r4875511, MPFR_RNDN);
        mpfr_div(r4875513, r4875503, r4875494, MPFR_RNDN);
        if (mpfr_get_si(r4875502, MPFR_RNDN)) { mpfr_set(r4875514, r4875512, MPFR_RNDN); } else { mpfr_set(r4875514, r4875513, MPFR_RNDN); };
        if (mpfr_get_si(r4875488, MPFR_RNDN)) { mpfr_set(r4875515, r4875500, MPFR_RNDN); } else { mpfr_set(r4875515, r4875514, MPFR_RNDN); };
        return mpfr_get_d(r4875515, MPFR_RNDN);
}

static mpfr_t r4875516, r4875517, r4875518, r4875519, r4875520, r4875521, r4875522, r4875523, r4875524, r4875525, r4875526, r4875527, r4875528, r4875529, r4875530, r4875531, r4875532, r4875533, r4875534, r4875535, r4875536, r4875537, r4875538, r4875539, r4875540, r4875541, r4875542, r4875543, r4875544, r4875545;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r4875516);
        mpfr_init_set_str(r4875517, "-1.9038547349802057e-44", 10, MPFR_RNDN);
        mpfr_init(r4875518);
        mpfr_init_set_str(r4875519, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r4875520, "2", 10, MPFR_RNDN);
        mpfr_init(r4875521);
        mpfr_init(r4875522);
        mpfr_init(r4875523);
        mpfr_init(r4875524);
        mpfr_init(r4875525);
        mpfr_init(r4875526);
        mpfr_init(r4875527);
        mpfr_init(r4875528);
        mpfr_init(r4875529);
        mpfr_init(r4875530);
        mpfr_init_set_str(r4875531, "4.585114762073355e+93", 10, MPFR_RNDN);
        mpfr_init(r4875532);
        mpfr_init(r4875533);
        mpfr_init(r4875534);
        mpfr_init(r4875535);
        mpfr_init(r4875536);
        mpfr_init(r4875537);
        mpfr_init(r4875538);
        mpfr_init(r4875539);
        mpfr_init(r4875540);
        mpfr_init(r4875541);
        mpfr_init(r4875542);
        mpfr_init(r4875543);
        mpfr_init(r4875544);
        mpfr_init(r4875545);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r4875516, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4875518, mpfr_cmp(r4875516, r4875517) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4875521, r4875519, r4875520, MPFR_RNDN);
        mpfr_set_d(r4875522, c, MPFR_RNDN);
        mpfr_mul(r4875523, r4875521, r4875522, MPFR_RNDN);
        mpfr_set_d(r4875524, a, MPFR_RNDN);
        mpfr_div(r4875525, r4875524, r4875516, MPFR_RNDN);
        mpfr_add(r4875526, r4875522, r4875522, MPFR_RNDN);
        mpfr_mul(r4875527, r4875525, r4875526, MPFR_RNDN);
        mpfr_add(r4875528, r4875516, r4875516, MPFR_RNDN);
        mpfr_sub(r4875529, r4875527, r4875528, MPFR_RNDN);
        mpfr_div(r4875530, r4875523, r4875529, MPFR_RNDN);
        ;
        mpfr_set_si(r4875532, mpfr_cmp(r4875516, r4875531) <= 0, MPFR_RNDN);
        mpfr_neg(r4875533, r4875516, MPFR_RNDN);
        mpfr_mul(r4875534, r4875520, r4875524, MPFR_RNDN);
        mpfr_div(r4875535, r4875533, r4875534, MPFR_RNDN);
        mpfr_mul(r4875536, r4875516, r4875516, MPFR_RNDN);
        mpfr_mul(r4875537, r4875524, r4875522, MPFR_RNDN);
        mpfr_mul(r4875538, r4875519, r4875537, MPFR_RNDN);
        mpfr_sub(r4875539, r4875536, r4875538, MPFR_RNDN);
        mpfr_sqrt(r4875540, r4875539, MPFR_RNDN);
        mpfr_div(r4875541, r4875540, r4875534, MPFR_RNDN);
        mpfr_sub(r4875542, r4875535, r4875541, MPFR_RNDN);
        mpfr_div(r4875543, r4875533, r4875524, MPFR_RNDN);
        if (mpfr_get_si(r4875532, MPFR_RNDN)) { mpfr_set(r4875544, r4875542, MPFR_RNDN); } else { mpfr_set(r4875544, r4875543, MPFR_RNDN); };
        if (mpfr_get_si(r4875518, MPFR_RNDN)) { mpfr_set(r4875545, r4875530, MPFR_RNDN); } else { mpfr_set(r4875545, r4875544, MPFR_RNDN); };
        return mpfr_get_d(r4875545, MPFR_RNDN);
}

