#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 r4875198 = b;
        float r4875199 = -r4875198;
        float r4875200 = r4875198 * r4875198;
        float r4875201 = 4.0f;
        float r4875202 = a;
        float r4875203 = c;
        float r4875204 = r4875202 * r4875203;
        float r4875205 = r4875201 * r4875204;
        float r4875206 = r4875200 - r4875205;
        float r4875207 = sqrt(r4875206);
        float r4875208 = r4875199 + r4875207;
        float r4875209 = 2.0f;
        float r4875210 = r4875209 * r4875202;
        float r4875211 = r4875208 / r4875210;
        return r4875211;
}

double f_id(double a, double b, double c) {
        double r4875212 = b;
        double r4875213 = -r4875212;
        double r4875214 = r4875212 * r4875212;
        double r4875215 = 4.0;
        double r4875216 = a;
        double r4875217 = c;
        double r4875218 = r4875216 * r4875217;
        double r4875219 = r4875215 * r4875218;
        double r4875220 = r4875214 - r4875219;
        double r4875221 = sqrt(r4875220);
        double r4875222 = r4875213 + r4875221;
        double r4875223 = 2.0;
        double r4875224 = r4875223 * r4875216;
        double r4875225 = r4875222 / r4875224;
        return r4875225;
}


double f_of(float a, float b, float c) {
        float r4875226 = b;
        float r4875227 = -1.83182834227653e+137f;
        bool r4875228 = r4875226 <= r4875227;
        float r4875229 = c;
        float r4875230 = r4875229 / r4875226;
        float r4875231 = a;
        float r4875232 = r4875226 / r4875231;
        float r4875233 = r4875230 - r4875232;
        float r4875234 = 1.0165767397661658e-304f;
        bool r4875235 = r4875226 <= r4875234;
        float r4875236 = 1.0f;
        float r4875237 = 2.0f;
        float r4875238 = r4875237 * r4875231;
        float r4875239 = -r4875226;
        float r4875240 = r4875226 * r4875226;
        float r4875241 = 4.0f;
        float r4875242 = r4875231 * r4875229;
        float r4875243 = r4875241 * r4875242;
        float r4875244 = r4875240 - r4875243;
        float r4875245 = sqrt(r4875244);
        float r4875246 = r4875239 + r4875245;
        float r4875247 = r4875238 / r4875246;
        float r4875248 = r4875236 / r4875247;
        float r4875249 = 4.585114762073355e+93f;
        bool r4875250 = r4875226 <= r4875249;
        float r4875251 = r4875229 / r4875237;
        float r4875252 = r4875241 / r4875236;
        float r4875253 = r4875251 * r4875252;
        float r4875254 = r4875239 - r4875245;
        float r4875255 = r4875253 / r4875254;
        float r4875256 = -2.0f;
        float r4875257 = r4875256 / r4875237;
        float r4875258 = r4875230 * r4875257;
        float r4875259 = r4875250 ? r4875255 : r4875258;
        float r4875260 = r4875235 ? r4875248 : r4875259;
        float r4875261 = r4875228 ? r4875233 : r4875260;
        return r4875261;
}

double f_od(double a, double b, double c) {
        double r4875262 = b;
        double r4875263 = -1.83182834227653e+137;
        bool r4875264 = r4875262 <= r4875263;
        double r4875265 = c;
        double r4875266 = r4875265 / r4875262;
        double r4875267 = a;
        double r4875268 = r4875262 / r4875267;
        double r4875269 = r4875266 - r4875268;
        double r4875270 = 1.0165767397661658e-304;
        bool r4875271 = r4875262 <= r4875270;
        double r4875272 = 1.0;
        double r4875273 = 2.0;
        double r4875274 = r4875273 * r4875267;
        double r4875275 = -r4875262;
        double r4875276 = r4875262 * r4875262;
        double r4875277 = 4.0;
        double r4875278 = r4875267 * r4875265;
        double r4875279 = r4875277 * r4875278;
        double r4875280 = r4875276 - r4875279;
        double r4875281 = sqrt(r4875280);
        double r4875282 = r4875275 + r4875281;
        double r4875283 = r4875274 / r4875282;
        double r4875284 = r4875272 / r4875283;
        double r4875285 = 4.585114762073355e+93;
        bool r4875286 = r4875262 <= r4875285;
        double r4875287 = r4875265 / r4875273;
        double r4875288 = r4875277 / r4875272;
        double r4875289 = r4875287 * r4875288;
        double r4875290 = r4875275 - r4875281;
        double r4875291 = r4875289 / r4875290;
        double r4875292 = -2.0;
        double r4875293 = r4875292 / r4875273;
        double r4875294 = r4875266 * r4875293;
        double r4875295 = r4875286 ? r4875291 : r4875294;
        double r4875296 = r4875271 ? r4875284 : r4875295;
        double r4875297 = r4875264 ? r4875269 : r4875296;
        return r4875297;
}

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 r4875298, r4875299, r4875300, r4875301, r4875302, r4875303, r4875304, r4875305, r4875306, r4875307, r4875308, r4875309, r4875310, r4875311;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4875298);
        mpfr_init(r4875299);
        mpfr_init(r4875300);
        mpfr_init_set_str(r4875301, "4", 10, MPFR_RNDN);
        mpfr_init(r4875302);
        mpfr_init(r4875303);
        mpfr_init(r4875304);
        mpfr_init(r4875305);
        mpfr_init(r4875306);
        mpfr_init(r4875307);
        mpfr_init(r4875308);
        mpfr_init_set_str(r4875309, "2", 10, MPFR_RNDN);
        mpfr_init(r4875310);
        mpfr_init(r4875311);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r4875298, b, MPFR_RNDN);
        mpfr_neg(r4875299, r4875298, MPFR_RNDN);
        mpfr_mul(r4875300, r4875298, r4875298, MPFR_RNDN);
        ;
        mpfr_set_d(r4875302, a, MPFR_RNDN);
        mpfr_set_d(r4875303, c, MPFR_RNDN);
        mpfr_mul(r4875304, r4875302, r4875303, MPFR_RNDN);
        mpfr_mul(r4875305, r4875301, r4875304, MPFR_RNDN);
        mpfr_sub(r4875306, r4875300, r4875305, MPFR_RNDN);
        mpfr_sqrt(r4875307, r4875306, MPFR_RNDN);
        mpfr_add(r4875308, r4875299, r4875307, MPFR_RNDN);
        ;
        mpfr_mul(r4875310, r4875309, r4875302, MPFR_RNDN);
        mpfr_div(r4875311, r4875308, r4875310, MPFR_RNDN);
        return mpfr_get_d(r4875311, MPFR_RNDN);
}

static mpfr_t r4875312, r4875313, r4875314, r4875315, r4875316, r4875317, r4875318, r4875319, r4875320, r4875321, r4875322, r4875323, r4875324, r4875325, r4875326, r4875327, r4875328, r4875329, r4875330, r4875331, r4875332, r4875333, r4875334, r4875335, r4875336, r4875337, r4875338, r4875339, r4875340, r4875341, r4875342, r4875343, r4875344, r4875345, r4875346, r4875347;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4875312);
        mpfr_init_set_str(r4875313, "-1.83182834227653e+137", 10, MPFR_RNDN);
        mpfr_init(r4875314);
        mpfr_init(r4875315);
        mpfr_init(r4875316);
        mpfr_init(r4875317);
        mpfr_init(r4875318);
        mpfr_init(r4875319);
        mpfr_init_set_str(r4875320, "1.0165767397661658e-304", 10, MPFR_RNDN);
        mpfr_init(r4875321);
        mpfr_init_set_str(r4875322, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4875323, "2", 10, MPFR_RNDN);
        mpfr_init(r4875324);
        mpfr_init(r4875325);
        mpfr_init(r4875326);
        mpfr_init_set_str(r4875327, "4", 10, MPFR_RNDN);
        mpfr_init(r4875328);
        mpfr_init(r4875329);
        mpfr_init(r4875330);
        mpfr_init(r4875331);
        mpfr_init(r4875332);
        mpfr_init(r4875333);
        mpfr_init(r4875334);
        mpfr_init_set_str(r4875335, "4.585114762073355e+93", 10, MPFR_RNDN);
        mpfr_init(r4875336);
        mpfr_init(r4875337);
        mpfr_init(r4875338);
        mpfr_init(r4875339);
        mpfr_init(r4875340);
        mpfr_init(r4875341);
        mpfr_init_set_str(r4875342, "-2", 10, MPFR_RNDN);
        mpfr_init(r4875343);
        mpfr_init(r4875344);
        mpfr_init(r4875345);
        mpfr_init(r4875346);
        mpfr_init(r4875347);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r4875312, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4875314, mpfr_cmp(r4875312, r4875313) <= 0, MPFR_RNDN);
        mpfr_set_d(r4875315, c, MPFR_RNDN);
        mpfr_div(r4875316, r4875315, r4875312, MPFR_RNDN);
        mpfr_set_d(r4875317, a, MPFR_RNDN);
        mpfr_div(r4875318, r4875312, r4875317, MPFR_RNDN);
        mpfr_sub(r4875319, r4875316, r4875318, MPFR_RNDN);
        ;
        mpfr_set_si(r4875321, mpfr_cmp(r4875312, r4875320) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r4875324, r4875323, r4875317, MPFR_RNDN);
        mpfr_neg(r4875325, r4875312, MPFR_RNDN);
        mpfr_mul(r4875326, r4875312, r4875312, MPFR_RNDN);
        ;
        mpfr_mul(r4875328, r4875317, r4875315, MPFR_RNDN);
        mpfr_mul(r4875329, r4875327, r4875328, MPFR_RNDN);
        mpfr_sub(r4875330, r4875326, r4875329, MPFR_RNDN);
        mpfr_sqrt(r4875331, r4875330, MPFR_RNDN);
        mpfr_add(r4875332, r4875325, r4875331, MPFR_RNDN);
        mpfr_div(r4875333, r4875324, r4875332, MPFR_RNDN);
        mpfr_div(r4875334, r4875322, r4875333, MPFR_RNDN);
        ;
        mpfr_set_si(r4875336, mpfr_cmp(r4875312, r4875335) <= 0, MPFR_RNDN);
        mpfr_div(r4875337, r4875315, r4875323, MPFR_RNDN);
        mpfr_div(r4875338, r4875327, r4875322, MPFR_RNDN);
        mpfr_mul(r4875339, r4875337, r4875338, MPFR_RNDN);
        mpfr_sub(r4875340, r4875325, r4875331, MPFR_RNDN);
        mpfr_div(r4875341, r4875339, r4875340, MPFR_RNDN);
        ;
        mpfr_div(r4875343, r4875342, r4875323, MPFR_RNDN);
        mpfr_mul(r4875344, r4875316, r4875343, MPFR_RNDN);
        if (mpfr_get_si(r4875336, MPFR_RNDN)) { mpfr_set(r4875345, r4875341, MPFR_RNDN); } else { mpfr_set(r4875345, r4875344, MPFR_RNDN); };
        if (mpfr_get_si(r4875321, MPFR_RNDN)) { mpfr_set(r4875346, r4875334, MPFR_RNDN); } else { mpfr_set(r4875346, r4875345, MPFR_RNDN); };
        if (mpfr_get_si(r4875314, MPFR_RNDN)) { mpfr_set(r4875347, r4875319, MPFR_RNDN); } else { mpfr_set(r4875347, r4875346, MPFR_RNDN); };
        return mpfr_get_d(r4875347, MPFR_RNDN);
}

static mpfr_t r4875348, r4875349, r4875350, r4875351, r4875352, r4875353, r4875354, r4875355, r4875356, r4875357, r4875358, r4875359, r4875360, r4875361, r4875362, r4875363, r4875364, r4875365, r4875366, r4875367, r4875368, r4875369, r4875370, r4875371, r4875372, r4875373, r4875374, r4875375, r4875376, r4875377, r4875378, r4875379, r4875380, r4875381, r4875382, r4875383;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2960);
        mpfr_init(r4875348);
        mpfr_init_set_str(r4875349, "-1.83182834227653e+137", 10, MPFR_RNDN);
        mpfr_init(r4875350);
        mpfr_init(r4875351);
        mpfr_init(r4875352);
        mpfr_init(r4875353);
        mpfr_init(r4875354);
        mpfr_init(r4875355);
        mpfr_init_set_str(r4875356, "1.0165767397661658e-304", 10, MPFR_RNDN);
        mpfr_init(r4875357);
        mpfr_init_set_str(r4875358, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4875359, "2", 10, MPFR_RNDN);
        mpfr_init(r4875360);
        mpfr_init(r4875361);
        mpfr_init(r4875362);
        mpfr_init_set_str(r4875363, "4", 10, MPFR_RNDN);
        mpfr_init(r4875364);
        mpfr_init(r4875365);
        mpfr_init(r4875366);
        mpfr_init(r4875367);
        mpfr_init(r4875368);
        mpfr_init(r4875369);
        mpfr_init(r4875370);
        mpfr_init_set_str(r4875371, "4.585114762073355e+93", 10, MPFR_RNDN);
        mpfr_init(r4875372);
        mpfr_init(r4875373);
        mpfr_init(r4875374);
        mpfr_init(r4875375);
        mpfr_init(r4875376);
        mpfr_init(r4875377);
        mpfr_init_set_str(r4875378, "-2", 10, MPFR_RNDN);
        mpfr_init(r4875379);
        mpfr_init(r4875380);
        mpfr_init(r4875381);
        mpfr_init(r4875382);
        mpfr_init(r4875383);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r4875348, b, MPFR_RNDN);
        ;
        mpfr_set_si(r4875350, mpfr_cmp(r4875348, r4875349) <= 0, MPFR_RNDN);
        mpfr_set_d(r4875351, c, MPFR_RNDN);
        mpfr_div(r4875352, r4875351, r4875348, MPFR_RNDN);
        mpfr_set_d(r4875353, a, MPFR_RNDN);
        mpfr_div(r4875354, r4875348, r4875353, MPFR_RNDN);
        mpfr_sub(r4875355, r4875352, r4875354, MPFR_RNDN);
        ;
        mpfr_set_si(r4875357, mpfr_cmp(r4875348, r4875356) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r4875360, r4875359, r4875353, MPFR_RNDN);
        mpfr_neg(r4875361, r4875348, MPFR_RNDN);
        mpfr_mul(r4875362, r4875348, r4875348, MPFR_RNDN);
        ;
        mpfr_mul(r4875364, r4875353, r4875351, MPFR_RNDN);
        mpfr_mul(r4875365, r4875363, r4875364, MPFR_RNDN);
        mpfr_sub(r4875366, r4875362, r4875365, MPFR_RNDN);
        mpfr_sqrt(r4875367, r4875366, MPFR_RNDN);
        mpfr_add(r4875368, r4875361, r4875367, MPFR_RNDN);
        mpfr_div(r4875369, r4875360, r4875368, MPFR_RNDN);
        mpfr_div(r4875370, r4875358, r4875369, MPFR_RNDN);
        ;
        mpfr_set_si(r4875372, mpfr_cmp(r4875348, r4875371) <= 0, MPFR_RNDN);
        mpfr_div(r4875373, r4875351, r4875359, MPFR_RNDN);
        mpfr_div(r4875374, r4875363, r4875358, MPFR_RNDN);
        mpfr_mul(r4875375, r4875373, r4875374, MPFR_RNDN);
        mpfr_sub(r4875376, r4875361, r4875367, MPFR_RNDN);
        mpfr_div(r4875377, r4875375, r4875376, MPFR_RNDN);
        ;
        mpfr_div(r4875379, r4875378, r4875359, MPFR_RNDN);
        mpfr_mul(r4875380, r4875352, r4875379, MPFR_RNDN);
        if (mpfr_get_si(r4875372, MPFR_RNDN)) { mpfr_set(r4875381, r4875377, MPFR_RNDN); } else { mpfr_set(r4875381, r4875380, MPFR_RNDN); };
        if (mpfr_get_si(r4875357, MPFR_RNDN)) { mpfr_set(r4875382, r4875370, MPFR_RNDN); } else { mpfr_set(r4875382, r4875381, MPFR_RNDN); };
        if (mpfr_get_si(r4875350, MPFR_RNDN)) { mpfr_set(r4875383, r4875355, MPFR_RNDN); } else { mpfr_set(r4875383, r4875382, MPFR_RNDN); };
        return mpfr_get_d(r4875383, MPFR_RNDN);
}

