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

char *name = "Quotient of products";

double f_if(float a1, float a2, float b1, float b2) {
        float r27272 = a1;
        float r27273 = a2;
        float r27274 = r27272 * r27273;
        float r27275 = b1;
        float r27276 = b2;
        float r27277 = r27275 * r27276;
        float r27278 = r27274 / r27277;
        return r27278;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r27279 = a1;
        double r27280 = a2;
        double r27281 = r27279 * r27280;
        double r27282 = b1;
        double r27283 = b2;
        double r27284 = r27282 * r27283;
        double r27285 = r27281 / r27284;
        return r27285;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r27286 = b2;
        float r27287 = a1;
        float r27288 = a2;
        float r27289 = r27287 * r27288;
        float r27290 = r27286 / r27289;
        float r27291 = -1.863876160696964e+274;
        bool r27292 = r27290 <= r27291;
        float r27293 = b1;
        float r27294 = r27293 * r27286;
        float r27295 = r27294 / r27288;
        float r27296 = r27287 / r27295;
        float r27297 = -4.7730160798000866e-170;
        bool r27298 = r27290 <= r27297;
        float r27299 = 1;
        float r27300 = r27299 / r27293;
        float r27301 = r27290 / r27300;
        float r27302 = r27299 / r27301;
        float r27303 = 1.1036717243454331e-206;
        bool r27304 = r27290 <= r27303;
        float r27305 = r27293 / r27288;
        float r27306 = r27287 / r27305;
        float r27307 = r27306 / r27286;
        float r27308 = 3.309194595868243e+284;
        bool r27309 = r27290 <= r27308;
        float r27310 = r27309 ? r27302 : r27296;
        float r27311 = r27304 ? r27307 : r27310;
        float r27312 = r27298 ? r27302 : r27311;
        float r27313 = r27292 ? r27296 : r27312;
        return r27313;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r27314 = b2;
        double r27315 = a1;
        double r27316 = a2;
        double r27317 = r27315 * r27316;
        double r27318 = r27314 / r27317;
        double r27319 = -1.863876160696964e+274;
        bool r27320 = r27318 <= r27319;
        double r27321 = b1;
        double r27322 = r27321 * r27314;
        double r27323 = r27322 / r27316;
        double r27324 = r27315 / r27323;
        double r27325 = -4.7730160798000866e-170;
        bool r27326 = r27318 <= r27325;
        double r27327 = 1;
        double r27328 = r27327 / r27321;
        double r27329 = r27318 / r27328;
        double r27330 = r27327 / r27329;
        double r27331 = 1.1036717243454331e-206;
        bool r27332 = r27318 <= r27331;
        double r27333 = r27321 / r27316;
        double r27334 = r27315 / r27333;
        double r27335 = r27334 / r27314;
        double r27336 = 3.309194595868243e+284;
        bool r27337 = r27318 <= r27336;
        double r27338 = r27337 ? r27330 : r27324;
        double r27339 = r27332 ? r27335 : r27338;
        double r27340 = r27326 ? r27330 : r27339;
        double r27341 = r27320 ? r27324 : r27340;
        return r27341;
}

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 r27342, r27343, r27344, r27345, r27346, r27347, r27348;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27342);
        mpfr_init(r27343);
        mpfr_init(r27344);
        mpfr_init(r27345);
        mpfr_init(r27346);
        mpfr_init(r27347);
        mpfr_init(r27348);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27342, a1, MPFR_RNDN);
        mpfr_set_d(r27343, a2, MPFR_RNDN);
        mpfr_mul(r27344, r27342, r27343, MPFR_RNDN);
        mpfr_set_d(r27345, b1, MPFR_RNDN);
        mpfr_set_d(r27346, b2, MPFR_RNDN);
        mpfr_mul(r27347, r27345, r27346, MPFR_RNDN);
        mpfr_div(r27348, r27344, r27347, MPFR_RNDN);
        return mpfr_get_d(r27348, MPFR_RNDN);
}

static mpfr_t r27349, r27350, r27351, r27352, r27353, r27354, r27355, r27356, r27357, r27358, r27359, r27360, r27361, r27362, r27363, r27364, r27365, r27366, r27367, r27368, r27369, r27370, r27371, r27372, r27373, r27374, r27375, r27376;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27349);
        mpfr_init(r27350);
        mpfr_init(r27351);
        mpfr_init(r27352);
        mpfr_init(r27353);
        mpfr_init_set_str(r27354, "-1.863876160696964e+274", 10, MPFR_RNDN);
        mpfr_init(r27355);
        mpfr_init(r27356);
        mpfr_init(r27357);
        mpfr_init(r27358);
        mpfr_init(r27359);
        mpfr_init_set_str(r27360, "-4.7730160798000866e-170", 10, MPFR_RNDN);
        mpfr_init(r27361);
        mpfr_init_set_str(r27362, "1", 10, MPFR_RNDN);
        mpfr_init(r27363);
        mpfr_init(r27364);
        mpfr_init(r27365);
        mpfr_init_set_str(r27366, "1.1036717243454331e-206", 10, MPFR_RNDN);
        mpfr_init(r27367);
        mpfr_init(r27368);
        mpfr_init(r27369);
        mpfr_init(r27370);
        mpfr_init_set_str(r27371, "3.309194595868243e+284", 10, MPFR_RNDN);
        mpfr_init(r27372);
        mpfr_init(r27373);
        mpfr_init(r27374);
        mpfr_init(r27375);
        mpfr_init(r27376);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27349, b2, MPFR_RNDN);
        mpfr_set_d(r27350, a1, MPFR_RNDN);
        mpfr_set_d(r27351, a2, MPFR_RNDN);
        mpfr_mul(r27352, r27350, r27351, MPFR_RNDN);
        mpfr_div(r27353, r27349, r27352, MPFR_RNDN);
        ;
        mpfr_set_si(r27355, mpfr_cmp(r27353, r27354) <= 0, MPFR_RNDN);
        mpfr_set_d(r27356, b1, MPFR_RNDN);
        mpfr_mul(r27357, r27356, r27349, MPFR_RNDN);
        mpfr_div(r27358, r27357, r27351, MPFR_RNDN);
        mpfr_div(r27359, r27350, r27358, MPFR_RNDN);
        ;
        mpfr_set_si(r27361, mpfr_cmp(r27353, r27360) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27363, r27362, r27356, MPFR_RNDN);
        mpfr_div(r27364, r27353, r27363, MPFR_RNDN);
        mpfr_div(r27365, r27362, r27364, MPFR_RNDN);
        ;
        mpfr_set_si(r27367, mpfr_cmp(r27353, r27366) <= 0, MPFR_RNDN);
        mpfr_div(r27368, r27356, r27351, MPFR_RNDN);
        mpfr_div(r27369, r27350, r27368, MPFR_RNDN);
        mpfr_div(r27370, r27369, r27349, MPFR_RNDN);
        ;
        mpfr_set_si(r27372, mpfr_cmp(r27353, r27371) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27372, MPFR_RNDN)) { mpfr_set(r27373, r27365, MPFR_RNDN); } else { mpfr_set(r27373, r27359, MPFR_RNDN); };
        if (mpfr_get_si(r27367, MPFR_RNDN)) { mpfr_set(r27374, r27370, MPFR_RNDN); } else { mpfr_set(r27374, r27373, MPFR_RNDN); };
        if (mpfr_get_si(r27361, MPFR_RNDN)) { mpfr_set(r27375, r27365, MPFR_RNDN); } else { mpfr_set(r27375, r27374, MPFR_RNDN); };
        if (mpfr_get_si(r27355, MPFR_RNDN)) { mpfr_set(r27376, r27359, MPFR_RNDN); } else { mpfr_set(r27376, r27375, MPFR_RNDN); };
        return mpfr_get_d(r27376, MPFR_RNDN);
}

static mpfr_t r27377, r27378, r27379, r27380, r27381, r27382, r27383, r27384, r27385, r27386, r27387, r27388, r27389, r27390, r27391, r27392, r27393, r27394, r27395, r27396, r27397, r27398, r27399, r27400, r27401, r27402, r27403, r27404;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27377);
        mpfr_init(r27378);
        mpfr_init(r27379);
        mpfr_init(r27380);
        mpfr_init(r27381);
        mpfr_init_set_str(r27382, "-1.863876160696964e+274", 10, MPFR_RNDN);
        mpfr_init(r27383);
        mpfr_init(r27384);
        mpfr_init(r27385);
        mpfr_init(r27386);
        mpfr_init(r27387);
        mpfr_init_set_str(r27388, "-4.7730160798000866e-170", 10, MPFR_RNDN);
        mpfr_init(r27389);
        mpfr_init_set_str(r27390, "1", 10, MPFR_RNDN);
        mpfr_init(r27391);
        mpfr_init(r27392);
        mpfr_init(r27393);
        mpfr_init_set_str(r27394, "1.1036717243454331e-206", 10, MPFR_RNDN);
        mpfr_init(r27395);
        mpfr_init(r27396);
        mpfr_init(r27397);
        mpfr_init(r27398);
        mpfr_init_set_str(r27399, "3.309194595868243e+284", 10, MPFR_RNDN);
        mpfr_init(r27400);
        mpfr_init(r27401);
        mpfr_init(r27402);
        mpfr_init(r27403);
        mpfr_init(r27404);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27377, b2, MPFR_RNDN);
        mpfr_set_d(r27378, a1, MPFR_RNDN);
        mpfr_set_d(r27379, a2, MPFR_RNDN);
        mpfr_mul(r27380, r27378, r27379, MPFR_RNDN);
        mpfr_div(r27381, r27377, r27380, MPFR_RNDN);
        ;
        mpfr_set_si(r27383, mpfr_cmp(r27381, r27382) <= 0, MPFR_RNDN);
        mpfr_set_d(r27384, b1, MPFR_RNDN);
        mpfr_mul(r27385, r27384, r27377, MPFR_RNDN);
        mpfr_div(r27386, r27385, r27379, MPFR_RNDN);
        mpfr_div(r27387, r27378, r27386, MPFR_RNDN);
        ;
        mpfr_set_si(r27389, mpfr_cmp(r27381, r27388) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27391, r27390, r27384, MPFR_RNDN);
        mpfr_div(r27392, r27381, r27391, MPFR_RNDN);
        mpfr_div(r27393, r27390, r27392, MPFR_RNDN);
        ;
        mpfr_set_si(r27395, mpfr_cmp(r27381, r27394) <= 0, MPFR_RNDN);
        mpfr_div(r27396, r27384, r27379, MPFR_RNDN);
        mpfr_div(r27397, r27378, r27396, MPFR_RNDN);
        mpfr_div(r27398, r27397, r27377, MPFR_RNDN);
        ;
        mpfr_set_si(r27400, mpfr_cmp(r27381, r27399) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27400, MPFR_RNDN)) { mpfr_set(r27401, r27393, MPFR_RNDN); } else { mpfr_set(r27401, r27387, MPFR_RNDN); };
        if (mpfr_get_si(r27395, MPFR_RNDN)) { mpfr_set(r27402, r27398, MPFR_RNDN); } else { mpfr_set(r27402, r27401, MPFR_RNDN); };
        if (mpfr_get_si(r27389, MPFR_RNDN)) { mpfr_set(r27403, r27393, MPFR_RNDN); } else { mpfr_set(r27403, r27402, MPFR_RNDN); };
        if (mpfr_get_si(r27383, MPFR_RNDN)) { mpfr_set(r27404, r27387, MPFR_RNDN); } else { mpfr_set(r27404, r27403, MPFR_RNDN); };
        return mpfr_get_d(r27404, MPFR_RNDN);
}

