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

char *name = "quadp (p42, positive)";

double f_if(float a, float b, float c) {
        float r38283 = b;
        float r38284 = -r38283;
        float r38285 = r38283 * r38283;
        float r38286 = 4;
        float r38287 = a;
        float r38288 = c;
        float r38289 = r38287 * r38288;
        float r38290 = r38286 * r38289;
        float r38291 = r38285 - r38290;
        float r38292 = sqrt(r38291);
        float r38293 = r38284 + r38292;
        float r38294 = 2;
        float r38295 = r38294 * r38287;
        float r38296 = r38293 / r38295;
        return r38296;
}

double f_id(double a, double b, double c) {
        double r38297 = b;
        double r38298 = -r38297;
        double r38299 = r38297 * r38297;
        double r38300 = 4;
        double r38301 = a;
        double r38302 = c;
        double r38303 = r38301 * r38302;
        double r38304 = r38300 * r38303;
        double r38305 = r38299 - r38304;
        double r38306 = sqrt(r38305);
        double r38307 = r38298 + r38306;
        double r38308 = 2;
        double r38309 = r38308 * r38301;
        double r38310 = r38307 / r38309;
        return r38310;
}


double f_of(float a, float b, float c) {
        float r38311 = b;
        float r38312 = -7.833327672762858e+152;
        bool r38313 = r38311 <= r38312;
        float r38314 = -r38311;
        float r38315 = a;
        float r38316 = r38314 / r38315;
        float r38317 = 7.698366662298276e-138;
        bool r38318 = r38311 <= r38317;
        float r38319 = r38311 * r38311;
        float r38320 = 4;
        float r38321 = c;
        float r38322 = r38320 * r38321;
        float r38323 = r38322 * r38315;
        float r38324 = r38319 - r38323;
        float r38325 = sqrt(r38324);
        float r38326 = -r38325;
        float r38327 = r38311 + r38326;
        float r38328 = 2;
        float r38329 = r38328 * r38315;
        float r38330 = -r38329;
        float r38331 = r38327 / r38330;
        float r38332 = r38321 / r38311;
        float r38333 = -2;
        float r38334 = r38333 / r38328;
        float r38335 = r38332 * r38334;
        float r38336 = r38318 ? r38331 : r38335;
        float r38337 = r38313 ? r38316 : r38336;
        return r38337;
}

double f_od(double a, double b, double c) {
        double r38338 = b;
        double r38339 = -7.833327672762858e+152;
        bool r38340 = r38338 <= r38339;
        double r38341 = -r38338;
        double r38342 = a;
        double r38343 = r38341 / r38342;
        double r38344 = 7.698366662298276e-138;
        bool r38345 = r38338 <= r38344;
        double r38346 = r38338 * r38338;
        double r38347 = 4;
        double r38348 = c;
        double r38349 = r38347 * r38348;
        double r38350 = r38349 * r38342;
        double r38351 = r38346 - r38350;
        double r38352 = sqrt(r38351);
        double r38353 = -r38352;
        double r38354 = r38338 + r38353;
        double r38355 = 2;
        double r38356 = r38355 * r38342;
        double r38357 = -r38356;
        double r38358 = r38354 / r38357;
        double r38359 = r38348 / r38338;
        double r38360 = -2;
        double r38361 = r38360 / r38355;
        double r38362 = r38359 * r38361;
        double r38363 = r38345 ? r38358 : r38362;
        double r38364 = r38340 ? r38343 : r38363;
        return r38364;
}

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 r38365, r38366, r38367, r38368, r38369, r38370, r38371, r38372, r38373, r38374, r38375, r38376, r38377, r38378;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r38365);
        mpfr_init(r38366);
        mpfr_init(r38367);
        mpfr_init_set_str(r38368, "4", 10, MPFR_RNDN);
        mpfr_init(r38369);
        mpfr_init(r38370);
        mpfr_init(r38371);
        mpfr_init(r38372);
        mpfr_init(r38373);
        mpfr_init(r38374);
        mpfr_init(r38375);
        mpfr_init_set_str(r38376, "2", 10, MPFR_RNDN);
        mpfr_init(r38377);
        mpfr_init(r38378);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r38365, b, MPFR_RNDN);
        mpfr_neg(r38366, r38365, MPFR_RNDN);
        mpfr_mul(r38367, r38365, r38365, MPFR_RNDN);
        ;
        mpfr_set_d(r38369, a, MPFR_RNDN);
        mpfr_set_d(r38370, c, MPFR_RNDN);
        mpfr_mul(r38371, r38369, r38370, MPFR_RNDN);
        mpfr_mul(r38372, r38368, r38371, MPFR_RNDN);
        mpfr_sub(r38373, r38367, r38372, MPFR_RNDN);
        mpfr_sqrt(r38374, r38373, MPFR_RNDN);
        mpfr_add(r38375, r38366, r38374, MPFR_RNDN);
        ;
        mpfr_mul(r38377, r38376, r38369, MPFR_RNDN);
        mpfr_div(r38378, r38375, r38377, MPFR_RNDN);
        return mpfr_get_d(r38378, MPFR_RNDN);
}

static mpfr_t r38379, r38380, r38381, r38382, r38383, r38384, r38385, r38386, r38387, r38388, r38389, r38390, r38391, r38392, r38393, r38394, r38395, r38396, r38397, r38398, r38399, r38400, r38401, r38402, r38403, r38404, r38405;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r38379);
        mpfr_init_set_str(r38380, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r38381);
        mpfr_init(r38382);
        mpfr_init(r38383);
        mpfr_init(r38384);
        mpfr_init_set_str(r38385, "7.698366662298276e-138", 10, MPFR_RNDN);
        mpfr_init(r38386);
        mpfr_init(r38387);
        mpfr_init_set_str(r38388, "4", 10, MPFR_RNDN);
        mpfr_init(r38389);
        mpfr_init(r38390);
        mpfr_init(r38391);
        mpfr_init(r38392);
        mpfr_init(r38393);
        mpfr_init(r38394);
        mpfr_init(r38395);
        mpfr_init_set_str(r38396, "2", 10, MPFR_RNDN);
        mpfr_init(r38397);
        mpfr_init(r38398);
        mpfr_init(r38399);
        mpfr_init(r38400);
        mpfr_init_set_str(r38401, "-2", 10, MPFR_RNDN);
        mpfr_init(r38402);
        mpfr_init(r38403);
        mpfr_init(r38404);
        mpfr_init(r38405);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r38379, b, MPFR_RNDN);
        ;
        mpfr_set_si(r38381, mpfr_cmp(r38379, r38380) <= 0, MPFR_RNDN);
        mpfr_neg(r38382, r38379, MPFR_RNDN);
        mpfr_set_d(r38383, a, MPFR_RNDN);
        mpfr_div(r38384, r38382, r38383, MPFR_RNDN);
        ;
        mpfr_set_si(r38386, mpfr_cmp(r38379, r38385) <= 0, MPFR_RNDN);
        mpfr_mul(r38387, r38379, r38379, MPFR_RNDN);
        ;
        mpfr_set_d(r38389, c, MPFR_RNDN);
        mpfr_mul(r38390, r38388, r38389, MPFR_RNDN);
        mpfr_mul(r38391, r38390, r38383, MPFR_RNDN);
        mpfr_sub(r38392, r38387, r38391, MPFR_RNDN);
        mpfr_sqrt(r38393, r38392, MPFR_RNDN);
        mpfr_neg(r38394, r38393, MPFR_RNDN);
        mpfr_add(r38395, r38379, r38394, MPFR_RNDN);
        ;
        mpfr_mul(r38397, r38396, r38383, MPFR_RNDN);
        mpfr_neg(r38398, r38397, MPFR_RNDN);
        mpfr_div(r38399, r38395, r38398, MPFR_RNDN);
        mpfr_div(r38400, r38389, r38379, MPFR_RNDN);
        ;
        mpfr_div(r38402, r38401, r38396, MPFR_RNDN);
        mpfr_mul(r38403, r38400, r38402, MPFR_RNDN);
        if (mpfr_get_si(r38386, MPFR_RNDN)) { mpfr_set(r38404, r38399, MPFR_RNDN); } else { mpfr_set(r38404, r38403, MPFR_RNDN); };
        if (mpfr_get_si(r38381, MPFR_RNDN)) { mpfr_set(r38405, r38384, MPFR_RNDN); } else { mpfr_set(r38405, r38404, MPFR_RNDN); };
        return mpfr_get_d(r38405, MPFR_RNDN);
}

static mpfr_t r38406, r38407, r38408, r38409, r38410, r38411, r38412, r38413, r38414, r38415, r38416, r38417, r38418, r38419, r38420, r38421, r38422, r38423, r38424, r38425, r38426, r38427, r38428, r38429, r38430, r38431, r38432;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r38406);
        mpfr_init_set_str(r38407, "-7.833327672762858e+152", 10, MPFR_RNDN);
        mpfr_init(r38408);
        mpfr_init(r38409);
        mpfr_init(r38410);
        mpfr_init(r38411);
        mpfr_init_set_str(r38412, "7.698366662298276e-138", 10, MPFR_RNDN);
        mpfr_init(r38413);
        mpfr_init(r38414);
        mpfr_init_set_str(r38415, "4", 10, MPFR_RNDN);
        mpfr_init(r38416);
        mpfr_init(r38417);
        mpfr_init(r38418);
        mpfr_init(r38419);
        mpfr_init(r38420);
        mpfr_init(r38421);
        mpfr_init(r38422);
        mpfr_init_set_str(r38423, "2", 10, MPFR_RNDN);
        mpfr_init(r38424);
        mpfr_init(r38425);
        mpfr_init(r38426);
        mpfr_init(r38427);
        mpfr_init_set_str(r38428, "-2", 10, MPFR_RNDN);
        mpfr_init(r38429);
        mpfr_init(r38430);
        mpfr_init(r38431);
        mpfr_init(r38432);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r38406, b, MPFR_RNDN);
        ;
        mpfr_set_si(r38408, mpfr_cmp(r38406, r38407) <= 0, MPFR_RNDN);
        mpfr_neg(r38409, r38406, MPFR_RNDN);
        mpfr_set_d(r38410, a, MPFR_RNDN);
        mpfr_div(r38411, r38409, r38410, MPFR_RNDN);
        ;
        mpfr_set_si(r38413, mpfr_cmp(r38406, r38412) <= 0, MPFR_RNDN);
        mpfr_mul(r38414, r38406, r38406, MPFR_RNDN);
        ;
        mpfr_set_d(r38416, c, MPFR_RNDN);
        mpfr_mul(r38417, r38415, r38416, MPFR_RNDN);
        mpfr_mul(r38418, r38417, r38410, MPFR_RNDN);
        mpfr_sub(r38419, r38414, r38418, MPFR_RNDN);
        mpfr_sqrt(r38420, r38419, MPFR_RNDN);
        mpfr_neg(r38421, r38420, MPFR_RNDN);
        mpfr_add(r38422, r38406, r38421, MPFR_RNDN);
        ;
        mpfr_mul(r38424, r38423, r38410, MPFR_RNDN);
        mpfr_neg(r38425, r38424, MPFR_RNDN);
        mpfr_div(r38426, r38422, r38425, MPFR_RNDN);
        mpfr_div(r38427, r38416, r38406, MPFR_RNDN);
        ;
        mpfr_div(r38429, r38428, r38423, MPFR_RNDN);
        mpfr_mul(r38430, r38427, r38429, MPFR_RNDN);
        if (mpfr_get_si(r38413, MPFR_RNDN)) { mpfr_set(r38431, r38426, MPFR_RNDN); } else { mpfr_set(r38431, r38430, MPFR_RNDN); };
        if (mpfr_get_si(r38408, MPFR_RNDN)) { mpfr_set(r38432, r38411, MPFR_RNDN); } else { mpfr_set(r38432, r38431, MPFR_RNDN); };
        return mpfr_get_d(r38432, MPFR_RNDN);
}

