#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 r4501235 = b;
        float r4501236 = -r4501235;
        float r4501237 = r4501235 * r4501235;
        float r4501238 = 4.0f;
        float r4501239 = a;
        float r4501240 = c;
        float r4501241 = r4501239 * r4501240;
        float r4501242 = r4501238 * r4501241;
        float r4501243 = r4501237 - r4501242;
        float r4501244 = sqrt(r4501243);
        float r4501245 = r4501236 - r4501244;
        float r4501246 = 2.0f;
        float r4501247 = r4501246 * r4501239;
        float r4501248 = r4501245 / r4501247;
        return r4501248;
}

double f_id(double a, double b, double c) {
        double r4501249 = b;
        double r4501250 = -r4501249;
        double r4501251 = r4501249 * r4501249;
        double r4501252 = 4.0;
        double r4501253 = a;
        double r4501254 = c;
        double r4501255 = r4501253 * r4501254;
        double r4501256 = r4501252 * r4501255;
        double r4501257 = r4501251 - r4501256;
        double r4501258 = sqrt(r4501257);
        double r4501259 = r4501250 - r4501258;
        double r4501260 = 2.0;
        double r4501261 = r4501260 * r4501253;
        double r4501262 = r4501259 / r4501261;
        return r4501262;
}


double f_of(float a, float b, float c) {
        float r4501263 = b;
        float r4501264 = -1.6984829603276024e+97f;
        bool r4501265 = r4501263 <= r4501264;
        float r4501266 = -r4501263;
        float r4501267 = r4501266 + r4501263;
        float r4501268 = a;
        float r4501269 = r4501268 + r4501268;
        float r4501270 = r4501267 / r4501269;
        float r4501271 = c;
        float r4501272 = r4501271 / r4501263;
        float r4501273 = r4501270 - r4501272;
        float r4501274 = -2.1555069951410637e-127f;
        bool r4501275 = r4501263 <= r4501274;
        float r4501276 = 1.0f;
        float r4501277 = r4501268 / r4501276;
        float r4501278 = 4.0f;
        float r4501279 = r4501271 * r4501278;
        float r4501280 = r4501263 * r4501263;
        float r4501281 = r4501268 * r4501271;
        float r4501282 = r4501278 * r4501281;
        float r4501283 = r4501280 - r4501282;
        float r4501284 = sqrt(r4501283);
        float r4501285 = r4501266 + r4501284;
        float r4501286 = r4501279 / r4501285;
        float r4501287 = r4501277 * r4501286;
        float r4501288 = 2.0f;
        float r4501289 = r4501288 * r4501268;
        float r4501290 = r4501287 / r4501289;
        float r4501291 = 2.6854465913894807e+99f;
        bool r4501292 = r4501263 <= r4501291;
        float r4501293 = r4501266 - r4501284;
        float r4501294 = r4501293 / r4501289;
        float r4501295 = r4501266 / r4501268;
        float r4501296 = r4501292 ? r4501294 : r4501295;
        float r4501297 = r4501275 ? r4501290 : r4501296;
        float r4501298 = r4501265 ? r4501273 : r4501297;
        return r4501298;
}

double f_od(double a, double b, double c) {
        double r4501299 = b;
        double r4501300 = -1.6984829603276024e+97;
        bool r4501301 = r4501299 <= r4501300;
        double r4501302 = -r4501299;
        double r4501303 = r4501302 + r4501299;
        double r4501304 = a;
        double r4501305 = r4501304 + r4501304;
        double r4501306 = r4501303 / r4501305;
        double r4501307 = c;
        double r4501308 = r4501307 / r4501299;
        double r4501309 = r4501306 - r4501308;
        double r4501310 = -2.1555069951410637e-127;
        bool r4501311 = r4501299 <= r4501310;
        double r4501312 = 1.0;
        double r4501313 = r4501304 / r4501312;
        double r4501314 = 4.0;
        double r4501315 = r4501307 * r4501314;
        double r4501316 = r4501299 * r4501299;
        double r4501317 = r4501304 * r4501307;
        double r4501318 = r4501314 * r4501317;
        double r4501319 = r4501316 - r4501318;
        double r4501320 = sqrt(r4501319);
        double r4501321 = r4501302 + r4501320;
        double r4501322 = r4501315 / r4501321;
        double r4501323 = r4501313 * r4501322;
        double r4501324 = 2.0;
        double r4501325 = r4501324 * r4501304;
        double r4501326 = r4501323 / r4501325;
        double r4501327 = 2.6854465913894807e+99;
        bool r4501328 = r4501299 <= r4501327;
        double r4501329 = r4501302 - r4501320;
        double r4501330 = r4501329 / r4501325;
        double r4501331 = r4501302 / r4501304;
        double r4501332 = r4501328 ? r4501330 : r4501331;
        double r4501333 = r4501311 ? r4501326 : r4501332;
        double r4501334 = r4501301 ? r4501309 : r4501333;
        return r4501334;
}

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 r4501335, r4501336, r4501337, r4501338, r4501339, r4501340, r4501341, r4501342, r4501343, r4501344, r4501345, r4501346, r4501347, r4501348;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4501335);
        mpfr_init(r4501336);
        mpfr_init(r4501337);
        mpfr_init_set_str(r4501338, "4", 10, MPFR_RNDN);
        mpfr_init(r4501339);
        mpfr_init(r4501340);
        mpfr_init(r4501341);
        mpfr_init(r4501342);
        mpfr_init(r4501343);
        mpfr_init(r4501344);
        mpfr_init(r4501345);
        mpfr_init_set_str(r4501346, "2", 10, MPFR_RNDN);
        mpfr_init(r4501347);
        mpfr_init(r4501348);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r4501335, b, MPFR_RNDN);
        mpfr_neg(r4501336, r4501335, MPFR_RNDN);
        mpfr_sqr(r4501337, r4501335, MPFR_RNDN);
        ;
        mpfr_set_d(r4501339, a, MPFR_RNDN);
        mpfr_set_d(r4501340, c, MPFR_RNDN);
        mpfr_mul(r4501341, r4501339, r4501340, MPFR_RNDN);
        mpfr_mul(r4501342, r4501338, r4501341, MPFR_RNDN);
        mpfr_sub(r4501343, r4501337, r4501342, MPFR_RNDN);
        mpfr_sqrt(r4501344, r4501343, MPFR_RNDN);
        mpfr_sub(r4501345, r4501336, r4501344, MPFR_RNDN);
        ;
        mpfr_mul(r4501347, r4501346, r4501339, MPFR_RNDN);
        mpfr_div(r4501348, r4501345, r4501347, MPFR_RNDN);
        return mpfr_get_d(r4501348, MPFR_RNDN);
}

static mpfr_t r4501349, r4501350, r4501351, r4501352, r4501353, r4501354, r4501355, r4501356, r4501357, r4501358, r4501359, r4501360, r4501361, r4501362, r4501363, r4501364, r4501365, r4501366, r4501367, r4501368, r4501369, r4501370, r4501371, r4501372, r4501373, r4501374, r4501375, r4501376, r4501377, r4501378, r4501379, r4501380, r4501381, r4501382, r4501383, r4501384;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4501349);
        mpfr_init_set_str(r4501350, "-1.6984829603276024e+97", 10, MPFR_RNDN);
        mpfr_init(r4501351);
        mpfr_init(r4501352);
        mpfr_init(r4501353);
        mpfr_init(r4501354);
        mpfr_init(r4501355);
        mpfr_init(r4501356);
        mpfr_init(r4501357);
        mpfr_init(r4501358);
        mpfr_init(r4501359);
        mpfr_init_set_str(r4501360, "-2.1555069951410637e-127", 10, MPFR_RNDN);
        mpfr_init(r4501361);
        mpfr_init_set_str(r4501362, "1", 10, MPFR_RNDN);
        mpfr_init(r4501363);
        mpfr_init_set_str(r4501364, "4", 10, MPFR_RNDN);
        mpfr_init(r4501365);
        mpfr_init(r4501366);
        mpfr_init(r4501367);
        mpfr_init(r4501368);
        mpfr_init(r4501369);
        mpfr_init(r4501370);
        mpfr_init(r4501371);
        mpfr_init(r4501372);
        mpfr_init(r4501373);
        mpfr_init_set_str(r4501374, "2", 10, MPFR_RNDN);
        mpfr_init(r4501375);
        mpfr_init(r4501376);
        mpfr_init_set_str(r4501377, "2.6854465913894807e+99", 10, MPFR_RNDN);
        mpfr_init(r4501378);
        mpfr_init(r4501379);
        mpfr_init(r4501380);
        mpfr_init(r4501381);
        mpfr_init(r4501382);
        mpfr_init(r4501383);
        mpfr_init(r4501384);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r4501349, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4501351, mpfr_cmp(r4501349, r4501350) <= 0, MPFR_RNDN);
        mpfr_neg(r4501352, r4501349, MPFR_RNDN);
        mpfr_add(r4501353, r4501352, r4501349, MPFR_RNDN);
        mpfr_set_d(r4501354, a, MPFR_RNDN);
        mpfr_add(r4501355, r4501354, r4501354, MPFR_RNDN);
        mpfr_div(r4501356, r4501353, r4501355, MPFR_RNDN);
        mpfr_set_d(r4501357, c, MPFR_RNDN);
        mpfr_div(r4501358, r4501357, r4501349, MPFR_RNDN);
        mpfr_sub(r4501359, r4501356, r4501358, MPFR_RNDN);
        ;
        mpfr_set_si(r4501361, mpfr_cmp(r4501349, r4501360) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r4501363, r4501354, r4501362, MPFR_RNDN);
        ;
        mpfr_mul(r4501365, r4501357, r4501364, MPFR_RNDN);
        mpfr_sqr(r4501366, r4501349, MPFR_RNDN);
        mpfr_mul(r4501367, r4501354, r4501357, MPFR_RNDN);
        mpfr_mul(r4501368, r4501364, r4501367, MPFR_RNDN);
        mpfr_sub(r4501369, r4501366, r4501368, MPFR_RNDN);
        mpfr_sqrt(r4501370, r4501369, MPFR_RNDN);
        mpfr_add(r4501371, r4501352, r4501370, MPFR_RNDN);
        mpfr_div(r4501372, r4501365, r4501371, MPFR_RNDN);
        mpfr_mul(r4501373, r4501363, r4501372, MPFR_RNDN);
        ;
        mpfr_mul(r4501375, r4501374, r4501354, MPFR_RNDN);
        mpfr_div(r4501376, r4501373, r4501375, MPFR_RNDN);
        ;
        mpfr_set_si(r4501378, mpfr_cmp(r4501349, r4501377) <= 0, MPFR_RNDN);
        mpfr_sub(r4501379, r4501352, r4501370, MPFR_RNDN);
        mpfr_div(r4501380, r4501379, r4501375, MPFR_RNDN);
        mpfr_div(r4501381, r4501352, r4501354, MPFR_RNDN);
        if (mpfr_get_si(r4501378, MPFR_RNDN)) { mpfr_set(r4501382, r4501380, MPFR_RNDN); } else { mpfr_set(r4501382, r4501381, MPFR_RNDN); };
        if (mpfr_get_si(r4501361, MPFR_RNDN)) { mpfr_set(r4501383, r4501376, MPFR_RNDN); } else { mpfr_set(r4501383, r4501382, MPFR_RNDN); };
        if (mpfr_get_si(r4501351, MPFR_RNDN)) { mpfr_set(r4501384, r4501359, MPFR_RNDN); } else { mpfr_set(r4501384, r4501383, MPFR_RNDN); };
        return mpfr_get_d(r4501384, MPFR_RNDN);
}

static mpfr_t r4501385, r4501386, r4501387, r4501388, r4501389, r4501390, r4501391, r4501392, r4501393, r4501394, r4501395, r4501396, r4501397, r4501398, r4501399, r4501400, r4501401, r4501402, r4501403, r4501404, r4501405, r4501406, r4501407, r4501408, r4501409, r4501410, r4501411, r4501412, r4501413, r4501414, r4501415, r4501416, r4501417, r4501418, r4501419, r4501420;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4501385);
        mpfr_init_set_str(r4501386, "-1.6984829603276024e+97", 10, MPFR_RNDN);
        mpfr_init(r4501387);
        mpfr_init(r4501388);
        mpfr_init(r4501389);
        mpfr_init(r4501390);
        mpfr_init(r4501391);
        mpfr_init(r4501392);
        mpfr_init(r4501393);
        mpfr_init(r4501394);
        mpfr_init(r4501395);
        mpfr_init_set_str(r4501396, "-2.1555069951410637e-127", 10, MPFR_RNDN);
        mpfr_init(r4501397);
        mpfr_init_set_str(r4501398, "1", 10, MPFR_RNDN);
        mpfr_init(r4501399);
        mpfr_init_set_str(r4501400, "4", 10, MPFR_RNDN);
        mpfr_init(r4501401);
        mpfr_init(r4501402);
        mpfr_init(r4501403);
        mpfr_init(r4501404);
        mpfr_init(r4501405);
        mpfr_init(r4501406);
        mpfr_init(r4501407);
        mpfr_init(r4501408);
        mpfr_init(r4501409);
        mpfr_init_set_str(r4501410, "2", 10, MPFR_RNDN);
        mpfr_init(r4501411);
        mpfr_init(r4501412);
        mpfr_init_set_str(r4501413, "2.6854465913894807e+99", 10, MPFR_RNDN);
        mpfr_init(r4501414);
        mpfr_init(r4501415);
        mpfr_init(r4501416);
        mpfr_init(r4501417);
        mpfr_init(r4501418);
        mpfr_init(r4501419);
        mpfr_init(r4501420);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r4501385, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4501387, mpfr_cmp(r4501385, r4501386) <= 0, MPFR_RNDN);
        mpfr_neg(r4501388, r4501385, MPFR_RNDN);
        mpfr_add(r4501389, r4501388, r4501385, MPFR_RNDN);
        mpfr_set_d(r4501390, a, MPFR_RNDN);
        mpfr_add(r4501391, r4501390, r4501390, MPFR_RNDN);
        mpfr_div(r4501392, r4501389, r4501391, MPFR_RNDN);
        mpfr_set_d(r4501393, c, MPFR_RNDN);
        mpfr_div(r4501394, r4501393, r4501385, MPFR_RNDN);
        mpfr_sub(r4501395, r4501392, r4501394, MPFR_RNDN);
        ;
        mpfr_set_si(r4501397, mpfr_cmp(r4501385, r4501396) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r4501399, r4501390, r4501398, MPFR_RNDN);
        ;
        mpfr_mul(r4501401, r4501393, r4501400, MPFR_RNDN);
        mpfr_sqr(r4501402, r4501385, MPFR_RNDN);
        mpfr_mul(r4501403, r4501390, r4501393, MPFR_RNDN);
        mpfr_mul(r4501404, r4501400, r4501403, MPFR_RNDN);
        mpfr_sub(r4501405, r4501402, r4501404, MPFR_RNDN);
        mpfr_sqrt(r4501406, r4501405, MPFR_RNDN);
        mpfr_add(r4501407, r4501388, r4501406, MPFR_RNDN);
        mpfr_div(r4501408, r4501401, r4501407, MPFR_RNDN);
        mpfr_mul(r4501409, r4501399, r4501408, MPFR_RNDN);
        ;
        mpfr_mul(r4501411, r4501410, r4501390, MPFR_RNDN);
        mpfr_div(r4501412, r4501409, r4501411, MPFR_RNDN);
        ;
        mpfr_set_si(r4501414, mpfr_cmp(r4501385, r4501413) <= 0, MPFR_RNDN);
        mpfr_sub(r4501415, r4501388, r4501406, MPFR_RNDN);
        mpfr_div(r4501416, r4501415, r4501411, MPFR_RNDN);
        mpfr_div(r4501417, r4501388, r4501390, MPFR_RNDN);
        if (mpfr_get_si(r4501414, MPFR_RNDN)) { mpfr_set(r4501418, r4501416, MPFR_RNDN); } else { mpfr_set(r4501418, r4501417, MPFR_RNDN); };
        if (mpfr_get_si(r4501397, MPFR_RNDN)) { mpfr_set(r4501419, r4501412, MPFR_RNDN); } else { mpfr_set(r4501419, r4501418, MPFR_RNDN); };
        if (mpfr_get_si(r4501387, MPFR_RNDN)) { mpfr_set(r4501420, r4501395, MPFR_RNDN); } else { mpfr_set(r4501420, r4501419, MPFR_RNDN); };
        return mpfr_get_d(r4501420, MPFR_RNDN);
}

