#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 r27271 = a1;
        float r27272 = a2;
        float r27273 = r27271 * r27272;
        float r27274 = b1;
        float r27275 = b2;
        float r27276 = r27274 * r27275;
        float r27277 = r27273 / r27276;
        return r27277;
}

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


double f_of(float a1, float a2, float b1, float b2) {
        float r27285 = a2;
        float r27286 = b1;
        float r27287 = r27285 / r27286;
        float r27288 = b2;
        float r27289 = r27287 / r27288;
        float r27290 = -2.6089023308796636e+306;
        bool r27291 = r27289 <= r27290;
        float r27292 = a1;
        float r27293 = r27292 * r27285;
        float r27294 = r27293 / r27286;
        float r27295 = r27294 / r27288;
        float r27296 = -1.2180714020774775e-304;
        bool r27297 = r27289 <= r27296;
        float r27298 = r27292 * r27289;
        float r27299 = 8.746547490695171e-299;
        bool r27300 = r27289 <= r27299;
        float r27301 = 1;
        float r27302 = r27301 / r27288;
        float r27303 = r27293 * r27302;
        float r27304 = r27303 / r27286;
        float r27305 = 3.4733057543004296e+301;
        bool r27306 = r27289 <= r27305;
        float r27307 = r27306 ? r27298 : r27304;
        float r27308 = r27300 ? r27304 : r27307;
        float r27309 = r27297 ? r27298 : r27308;
        float r27310 = r27291 ? r27295 : r27309;
        return r27310;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r27311 = a2;
        double r27312 = b1;
        double r27313 = r27311 / r27312;
        double r27314 = b2;
        double r27315 = r27313 / r27314;
        double r27316 = -2.6089023308796636e+306;
        bool r27317 = r27315 <= r27316;
        double r27318 = a1;
        double r27319 = r27318 * r27311;
        double r27320 = r27319 / r27312;
        double r27321 = r27320 / r27314;
        double r27322 = -1.2180714020774775e-304;
        bool r27323 = r27315 <= r27322;
        double r27324 = r27318 * r27315;
        double r27325 = 8.746547490695171e-299;
        bool r27326 = r27315 <= r27325;
        double r27327 = 1;
        double r27328 = r27327 / r27314;
        double r27329 = r27319 * r27328;
        double r27330 = r27329 / r27312;
        double r27331 = 3.4733057543004296e+301;
        bool r27332 = r27315 <= r27331;
        double r27333 = r27332 ? r27324 : r27330;
        double r27334 = r27326 ? r27330 : r27333;
        double r27335 = r27323 ? r27324 : r27334;
        double r27336 = r27317 ? r27321 : r27335;
        return r27336;
}

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 r27337, r27338, r27339, r27340, r27341, r27342, r27343;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27337);
        mpfr_init(r27338);
        mpfr_init(r27339);
        mpfr_init(r27340);
        mpfr_init(r27341);
        mpfr_init(r27342);
        mpfr_init(r27343);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27337, a1, MPFR_RNDN);
        mpfr_set_d(r27338, a2, MPFR_RNDN);
        mpfr_mul(r27339, r27337, r27338, MPFR_RNDN);
        mpfr_set_d(r27340, b1, MPFR_RNDN);
        mpfr_set_d(r27341, b2, MPFR_RNDN);
        mpfr_mul(r27342, r27340, r27341, MPFR_RNDN);
        mpfr_div(r27343, r27339, r27342, MPFR_RNDN);
        return mpfr_get_d(r27343, MPFR_RNDN);
}

static mpfr_t r27344, r27345, r27346, r27347, r27348, r27349, r27350, r27351, r27352, r27353, r27354, r27355, r27356, r27357, r27358, r27359, r27360, r27361, r27362, r27363, r27364, r27365, r27366, r27367, r27368, r27369;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27344);
        mpfr_init(r27345);
        mpfr_init(r27346);
        mpfr_init(r27347);
        mpfr_init(r27348);
        mpfr_init_set_str(r27349, "-2.6089023308796636e+306", 10, MPFR_RNDN);
        mpfr_init(r27350);
        mpfr_init(r27351);
        mpfr_init(r27352);
        mpfr_init(r27353);
        mpfr_init(r27354);
        mpfr_init_set_str(r27355, "-1.2180714020774775e-304", 10, MPFR_RNDN);
        mpfr_init(r27356);
        mpfr_init(r27357);
        mpfr_init_set_str(r27358, "8.746547490695171e-299", 10, MPFR_RNDN);
        mpfr_init(r27359);
        mpfr_init_set_str(r27360, "1", 10, MPFR_RNDN);
        mpfr_init(r27361);
        mpfr_init(r27362);
        mpfr_init(r27363);
        mpfr_init_set_str(r27364, "3.4733057543004296e+301", 10, MPFR_RNDN);
        mpfr_init(r27365);
        mpfr_init(r27366);
        mpfr_init(r27367);
        mpfr_init(r27368);
        mpfr_init(r27369);
}

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

static mpfr_t r27370, r27371, r27372, r27373, r27374, r27375, r27376, r27377, r27378, r27379, r27380, r27381, r27382, r27383, r27384, r27385, r27386, r27387, r27388, r27389, r27390, r27391, r27392, r27393, r27394, r27395;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27370);
        mpfr_init(r27371);
        mpfr_init(r27372);
        mpfr_init(r27373);
        mpfr_init(r27374);
        mpfr_init_set_str(r27375, "-2.6089023308796636e+306", 10, MPFR_RNDN);
        mpfr_init(r27376);
        mpfr_init(r27377);
        mpfr_init(r27378);
        mpfr_init(r27379);
        mpfr_init(r27380);
        mpfr_init_set_str(r27381, "-1.2180714020774775e-304", 10, MPFR_RNDN);
        mpfr_init(r27382);
        mpfr_init(r27383);
        mpfr_init_set_str(r27384, "8.746547490695171e-299", 10, MPFR_RNDN);
        mpfr_init(r27385);
        mpfr_init_set_str(r27386, "1", 10, MPFR_RNDN);
        mpfr_init(r27387);
        mpfr_init(r27388);
        mpfr_init(r27389);
        mpfr_init_set_str(r27390, "3.4733057543004296e+301", 10, MPFR_RNDN);
        mpfr_init(r27391);
        mpfr_init(r27392);
        mpfr_init(r27393);
        mpfr_init(r27394);
        mpfr_init(r27395);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27370, a2, MPFR_RNDN);
        mpfr_set_d(r27371, b1, MPFR_RNDN);
        mpfr_div(r27372, r27370, r27371, MPFR_RNDN);
        mpfr_set_d(r27373, b2, MPFR_RNDN);
        mpfr_div(r27374, r27372, r27373, MPFR_RNDN);
        ;
        mpfr_set_si(r27376, mpfr_cmp(r27374, r27375) <= 0, MPFR_RNDN);
        mpfr_set_d(r27377, a1, MPFR_RNDN);
        mpfr_mul(r27378, r27377, r27370, MPFR_RNDN);
        mpfr_div(r27379, r27378, r27371, MPFR_RNDN);
        mpfr_div(r27380, r27379, r27373, MPFR_RNDN);
        ;
        mpfr_set_si(r27382, mpfr_cmp(r27374, r27381) <= 0, MPFR_RNDN);
        mpfr_mul(r27383, r27377, r27374, MPFR_RNDN);
        ;
        mpfr_set_si(r27385, mpfr_cmp(r27374, r27384) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27387, r27386, r27373, MPFR_RNDN);
        mpfr_mul(r27388, r27378, r27387, MPFR_RNDN);
        mpfr_div(r27389, r27388, r27371, MPFR_RNDN);
        ;
        mpfr_set_si(r27391, mpfr_cmp(r27374, r27390) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27391, MPFR_RNDN)) { mpfr_set(r27392, r27383, MPFR_RNDN); } else { mpfr_set(r27392, r27389, MPFR_RNDN); };
        if (mpfr_get_si(r27385, MPFR_RNDN)) { mpfr_set(r27393, r27389, MPFR_RNDN); } else { mpfr_set(r27393, r27392, MPFR_RNDN); };
        if (mpfr_get_si(r27382, MPFR_RNDN)) { mpfr_set(r27394, r27383, MPFR_RNDN); } else { mpfr_set(r27394, r27393, MPFR_RNDN); };
        if (mpfr_get_si(r27376, MPFR_RNDN)) { mpfr_set(r27395, r27380, MPFR_RNDN); } else { mpfr_set(r27395, r27394, MPFR_RNDN); };
        return mpfr_get_d(r27395, MPFR_RNDN);
}

