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

char *name = "quad2m (problem 3.2.1, negative)";

double f_if(float a, float b_2, float c) {
        float r8364 = b_2;
        float r8365 = -r8364;
        float r8366 = r8364 * r8364;
        float r8367 = a;
        float r8368 = c;
        float r8369 = r8367 * r8368;
        float r8370 = r8366 - r8369;
        float r8371 = sqrt(r8370);
        float r8372 = r8365 - r8371;
        float r8373 = r8372 / r8367;
        return r8373;
}

double f_id(double a, double b_2, double c) {
        double r8374 = b_2;
        double r8375 = -r8374;
        double r8376 = r8374 * r8374;
        double r8377 = a;
        double r8378 = c;
        double r8379 = r8377 * r8378;
        double r8380 = r8376 - r8379;
        double r8381 = sqrt(r8380);
        double r8382 = r8375 - r8381;
        double r8383 = r8382 / r8377;
        return r8383;
}


double f_of(float a, float b_2, float c) {
        float r8384 = b_2;
        float r8385 = -0.023046085366440986;
        bool r8386 = r8384 <= r8385;
        float r8387 = -1/2;
        float r8388 = c;
        float r8389 = r8387 * r8388;
        float r8390 = r8389 / r8384;
        float r8391 = -2.5319625255424875e-142;
        bool r8392 = r8384 <= r8391;
        float r8393 = r8384 * r8384;
        float r8394 = a;
        float r8395 = r8388 * r8394;
        float r8396 = r8393 - r8395;
        float r8397 = sqrt(r8396);
        float r8398 = r8397 - r8384;
        float r8399 = cbrt(r8398);
        float r8400 = r8399 * r8399;
        float r8401 = r8388 / r8400;
        float r8402 = r8394 / r8399;
        float r8403 = r8401 * r8402;
        float r8404 = r8403 / r8394;
        float r8405 = 1.156979912524877e+82;
        bool r8406 = r8384 <= r8405;
        float r8407 = 1;
        float r8408 = -r8384;
        float r8409 = r8394 * r8388;
        float r8410 = r8393 - r8409;
        float r8411 = sqrt(r8410);
        float r8412 = r8408 - r8411;
        float r8413 = r8394 / r8412;
        float r8414 = r8407 / r8413;
        float r8415 = -2;
        float r8416 = r8384 / r8394;
        float r8417 = r8415 * r8416;
        float r8418 = r8406 ? r8414 : r8417;
        float r8419 = r8392 ? r8404 : r8418;
        float r8420 = r8386 ? r8390 : r8419;
        return r8420;
}

double f_od(double a, double b_2, double c) {
        double r8421 = b_2;
        double r8422 = -0.023046085366440986;
        bool r8423 = r8421 <= r8422;
        double r8424 = -1/2;
        double r8425 = c;
        double r8426 = r8424 * r8425;
        double r8427 = r8426 / r8421;
        double r8428 = -2.5319625255424875e-142;
        bool r8429 = r8421 <= r8428;
        double r8430 = r8421 * r8421;
        double r8431 = a;
        double r8432 = r8425 * r8431;
        double r8433 = r8430 - r8432;
        double r8434 = sqrt(r8433);
        double r8435 = r8434 - r8421;
        double r8436 = cbrt(r8435);
        double r8437 = r8436 * r8436;
        double r8438 = r8425 / r8437;
        double r8439 = r8431 / r8436;
        double r8440 = r8438 * r8439;
        double r8441 = r8440 / r8431;
        double r8442 = 1.156979912524877e+82;
        bool r8443 = r8421 <= r8442;
        double r8444 = 1;
        double r8445 = -r8421;
        double r8446 = r8431 * r8425;
        double r8447 = r8430 - r8446;
        double r8448 = sqrt(r8447);
        double r8449 = r8445 - r8448;
        double r8450 = r8431 / r8449;
        double r8451 = r8444 / r8450;
        double r8452 = -2;
        double r8453 = r8421 / r8431;
        double r8454 = r8452 * r8453;
        double r8455 = r8443 ? r8451 : r8454;
        double r8456 = r8429 ? r8441 : r8455;
        double r8457 = r8423 ? r8427 : r8456;
        return r8457;
}

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 r8458, r8459, r8460, r8461, r8462, r8463, r8464, r8465, r8466, r8467;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8458);
        mpfr_init(r8459);
        mpfr_init(r8460);
        mpfr_init(r8461);
        mpfr_init(r8462);
        mpfr_init(r8463);
        mpfr_init(r8464);
        mpfr_init(r8465);
        mpfr_init(r8466);
        mpfr_init(r8467);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8458, b_2, MPFR_RNDN);
        mpfr_neg(r8459, r8458, MPFR_RNDN);
        mpfr_mul(r8460, r8458, r8458, MPFR_RNDN);
        mpfr_set_d(r8461, a, MPFR_RNDN);
        mpfr_set_d(r8462, c, MPFR_RNDN);
        mpfr_mul(r8463, r8461, r8462, MPFR_RNDN);
        mpfr_sub(r8464, r8460, r8463, MPFR_RNDN);
        mpfr_sqrt(r8465, r8464, MPFR_RNDN);
        mpfr_sub(r8466, r8459, r8465, MPFR_RNDN);
        mpfr_div(r8467, r8466, r8461, MPFR_RNDN);
        return mpfr_get_d(r8467, MPFR_RNDN);
}

static mpfr_t r8468, r8469, r8470, r8471, r8472, r8473, r8474, r8475, r8476, r8477, r8478, r8479, r8480, r8481, r8482, r8483, r8484, r8485, r8486, r8487, r8488, r8489, r8490, r8491, r8492, r8493, r8494, r8495, r8496, r8497, r8498, r8499, r8500, r8501, r8502, r8503, r8504;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8468);
        mpfr_init_set_str(r8469, "-0.023046085366440986", 10, MPFR_RNDN);
        mpfr_init(r8470);
        mpfr_init_set_str(r8471, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8472);
        mpfr_init(r8473);
        mpfr_init(r8474);
        mpfr_init_set_str(r8475, "-2.5319625255424875e-142", 10, MPFR_RNDN);
        mpfr_init(r8476);
        mpfr_init(r8477);
        mpfr_init(r8478);
        mpfr_init(r8479);
        mpfr_init(r8480);
        mpfr_init(r8481);
        mpfr_init(r8482);
        mpfr_init(r8483);
        mpfr_init(r8484);
        mpfr_init(r8485);
        mpfr_init(r8486);
        mpfr_init(r8487);
        mpfr_init(r8488);
        mpfr_init_set_str(r8489, "1.156979912524877e+82", 10, MPFR_RNDN);
        mpfr_init(r8490);
        mpfr_init_set_str(r8491, "1", 10, MPFR_RNDN);
        mpfr_init(r8492);
        mpfr_init(r8493);
        mpfr_init(r8494);
        mpfr_init(r8495);
        mpfr_init(r8496);
        mpfr_init(r8497);
        mpfr_init(r8498);
        mpfr_init_set_str(r8499, "-2", 10, MPFR_RNDN);
        mpfr_init(r8500);
        mpfr_init(r8501);
        mpfr_init(r8502);
        mpfr_init(r8503);
        mpfr_init(r8504);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r8468, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r8470, mpfr_cmp(r8468, r8469) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r8472, c, MPFR_RNDN);
        mpfr_mul(r8473, r8471, r8472, MPFR_RNDN);
        mpfr_div(r8474, r8473, r8468, MPFR_RNDN);
        ;
        mpfr_set_si(r8476, mpfr_cmp(r8468, r8475) <= 0, MPFR_RNDN);
        mpfr_mul(r8477, r8468, r8468, MPFR_RNDN);
        mpfr_set_d(r8478, a, MPFR_RNDN);
        mpfr_mul(r8479, r8472, r8478, MPFR_RNDN);
        mpfr_sub(r8480, r8477, r8479, MPFR_RNDN);
        mpfr_sqrt(r8481, r8480, MPFR_RNDN);
        mpfr_sub(r8482, r8481, r8468, MPFR_RNDN);
        mpfr_cbrt(r8483, r8482, MPFR_RNDN);
        mpfr_mul(r8484, r8483, r8483, MPFR_RNDN);
        mpfr_div(r8485, r8472, r8484, MPFR_RNDN);
        mpfr_div(r8486, r8478, r8483, MPFR_RNDN);
        mpfr_mul(r8487, r8485, r8486, MPFR_RNDN);
        mpfr_div(r8488, r8487, r8478, MPFR_RNDN);
        ;
        mpfr_set_si(r8490, mpfr_cmp(r8468, r8489) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8492, r8468, MPFR_RNDN);
        mpfr_mul(r8493, r8478, r8472, MPFR_RNDN);
        mpfr_sub(r8494, r8477, r8493, MPFR_RNDN);
        mpfr_sqrt(r8495, r8494, MPFR_RNDN);
        mpfr_sub(r8496, r8492, r8495, MPFR_RNDN);
        mpfr_div(r8497, r8478, r8496, MPFR_RNDN);
        mpfr_div(r8498, r8491, r8497, MPFR_RNDN);
        ;
        mpfr_div(r8500, r8468, r8478, MPFR_RNDN);
        mpfr_mul(r8501, r8499, r8500, MPFR_RNDN);
        if (mpfr_get_si(r8490, MPFR_RNDN)) { mpfr_set(r8502, r8498, MPFR_RNDN); } else { mpfr_set(r8502, r8501, MPFR_RNDN); };
        if (mpfr_get_si(r8476, MPFR_RNDN)) { mpfr_set(r8503, r8488, MPFR_RNDN); } else { mpfr_set(r8503, r8502, MPFR_RNDN); };
        if (mpfr_get_si(r8470, MPFR_RNDN)) { mpfr_set(r8504, r8474, MPFR_RNDN); } else { mpfr_set(r8504, r8503, MPFR_RNDN); };
        return mpfr_get_d(r8504, MPFR_RNDN);
}

static mpfr_t r8505, r8506, r8507, r8508, r8509, r8510, r8511, r8512, r8513, r8514, r8515, r8516, r8517, r8518, r8519, r8520, r8521, r8522, r8523, r8524, r8525, r8526, r8527, r8528, r8529, r8530, r8531, r8532, r8533, r8534, r8535, r8536, r8537, r8538, r8539, r8540, r8541;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8505);
        mpfr_init_set_str(r8506, "-0.023046085366440986", 10, MPFR_RNDN);
        mpfr_init(r8507);
        mpfr_init_set_str(r8508, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8509);
        mpfr_init(r8510);
        mpfr_init(r8511);
        mpfr_init_set_str(r8512, "-2.5319625255424875e-142", 10, MPFR_RNDN);
        mpfr_init(r8513);
        mpfr_init(r8514);
        mpfr_init(r8515);
        mpfr_init(r8516);
        mpfr_init(r8517);
        mpfr_init(r8518);
        mpfr_init(r8519);
        mpfr_init(r8520);
        mpfr_init(r8521);
        mpfr_init(r8522);
        mpfr_init(r8523);
        mpfr_init(r8524);
        mpfr_init(r8525);
        mpfr_init_set_str(r8526, "1.156979912524877e+82", 10, MPFR_RNDN);
        mpfr_init(r8527);
        mpfr_init_set_str(r8528, "1", 10, MPFR_RNDN);
        mpfr_init(r8529);
        mpfr_init(r8530);
        mpfr_init(r8531);
        mpfr_init(r8532);
        mpfr_init(r8533);
        mpfr_init(r8534);
        mpfr_init(r8535);
        mpfr_init_set_str(r8536, "-2", 10, MPFR_RNDN);
        mpfr_init(r8537);
        mpfr_init(r8538);
        mpfr_init(r8539);
        mpfr_init(r8540);
        mpfr_init(r8541);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r8505, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r8507, mpfr_cmp(r8505, r8506) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r8509, c, MPFR_RNDN);
        mpfr_mul(r8510, r8508, r8509, MPFR_RNDN);
        mpfr_div(r8511, r8510, r8505, MPFR_RNDN);
        ;
        mpfr_set_si(r8513, mpfr_cmp(r8505, r8512) <= 0, MPFR_RNDN);
        mpfr_mul(r8514, r8505, r8505, MPFR_RNDN);
        mpfr_set_d(r8515, a, MPFR_RNDN);
        mpfr_mul(r8516, r8509, r8515, MPFR_RNDN);
        mpfr_sub(r8517, r8514, r8516, MPFR_RNDN);
        mpfr_sqrt(r8518, r8517, MPFR_RNDN);
        mpfr_sub(r8519, r8518, r8505, MPFR_RNDN);
        mpfr_cbrt(r8520, r8519, MPFR_RNDN);
        mpfr_mul(r8521, r8520, r8520, MPFR_RNDN);
        mpfr_div(r8522, r8509, r8521, MPFR_RNDN);
        mpfr_div(r8523, r8515, r8520, MPFR_RNDN);
        mpfr_mul(r8524, r8522, r8523, MPFR_RNDN);
        mpfr_div(r8525, r8524, r8515, MPFR_RNDN);
        ;
        mpfr_set_si(r8527, mpfr_cmp(r8505, r8526) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8529, r8505, MPFR_RNDN);
        mpfr_mul(r8530, r8515, r8509, MPFR_RNDN);
        mpfr_sub(r8531, r8514, r8530, MPFR_RNDN);
        mpfr_sqrt(r8532, r8531, MPFR_RNDN);
        mpfr_sub(r8533, r8529, r8532, MPFR_RNDN);
        mpfr_div(r8534, r8515, r8533, MPFR_RNDN);
        mpfr_div(r8535, r8528, r8534, MPFR_RNDN);
        ;
        mpfr_div(r8537, r8505, r8515, MPFR_RNDN);
        mpfr_mul(r8538, r8536, r8537, MPFR_RNDN);
        if (mpfr_get_si(r8527, MPFR_RNDN)) { mpfr_set(r8539, r8535, MPFR_RNDN); } else { mpfr_set(r8539, r8538, MPFR_RNDN); };
        if (mpfr_get_si(r8513, MPFR_RNDN)) { mpfr_set(r8540, r8525, MPFR_RNDN); } else { mpfr_set(r8540, r8539, MPFR_RNDN); };
        if (mpfr_get_si(r8507, MPFR_RNDN)) { mpfr_set(r8541, r8511, MPFR_RNDN); } else { mpfr_set(r8541, r8540, MPFR_RNDN); };
        return mpfr_get_d(r8541, MPFR_RNDN);
}

