#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 r27336 = a1;
        float r27337 = a2;
        float r27338 = r27336 * r27337;
        float r27339 = b1;
        float r27340 = b2;
        float r27341 = r27339 * r27340;
        float r27342 = r27338 / r27341;
        return r27342;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r27343 = a1;
        double r27344 = a2;
        double r27345 = r27343 * r27344;
        double r27346 = b1;
        double r27347 = b2;
        double r27348 = r27346 * r27347;
        double r27349 = r27345 / r27348;
        return r27349;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r27350 = a1;
        float r27351 = b1;
        float r27352 = r27350 / r27351;
        float r27353 = a2;
        float r27354 = b2;
        float r27355 = r27353 / r27354;
        float r27356 = r27352 * r27355;
        float r27357 = -1.3968466779217588e+288;
        bool r27358 = r27356 <= r27357;
        float r27359 = r27351 * r27354;
        float r27360 = r27359 / r27353;
        float r27361 = r27350 / r27360;
        float r27362 = -4.265685843674341e-308;
        bool r27363 = r27356 <= r27362;
        float r27364 = 1.5586659615523882e-284;
        bool r27365 = r27356 <= r27364;
        float r27366 = r27350 * r27353;
        float r27367 = r27366 / r27351;
        float r27368 = r27367 / r27354;
        float r27369 = 5.515640896192062e+297;
        bool r27370 = r27356 <= r27369;
        float r27371 = r27366 / r27359;
        float r27372 = r27370 ? r27356 : r27371;
        float r27373 = r27365 ? r27368 : r27372;
        float r27374 = r27363 ? r27356 : r27373;
        float r27375 = r27358 ? r27361 : r27374;
        return r27375;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r27376 = a1;
        double r27377 = b1;
        double r27378 = r27376 / r27377;
        double r27379 = a2;
        double r27380 = b2;
        double r27381 = r27379 / r27380;
        double r27382 = r27378 * r27381;
        double r27383 = -1.3968466779217588e+288;
        bool r27384 = r27382 <= r27383;
        double r27385 = r27377 * r27380;
        double r27386 = r27385 / r27379;
        double r27387 = r27376 / r27386;
        double r27388 = -4.265685843674341e-308;
        bool r27389 = r27382 <= r27388;
        double r27390 = 1.5586659615523882e-284;
        bool r27391 = r27382 <= r27390;
        double r27392 = r27376 * r27379;
        double r27393 = r27392 / r27377;
        double r27394 = r27393 / r27380;
        double r27395 = 5.515640896192062e+297;
        bool r27396 = r27382 <= r27395;
        double r27397 = r27392 / r27385;
        double r27398 = r27396 ? r27382 : r27397;
        double r27399 = r27391 ? r27394 : r27398;
        double r27400 = r27389 ? r27382 : r27399;
        double r27401 = r27384 ? r27387 : r27400;
        return r27401;
}

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 r27402, r27403, r27404, r27405, r27406, r27407, r27408;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27402);
        mpfr_init(r27403);
        mpfr_init(r27404);
        mpfr_init(r27405);
        mpfr_init(r27406);
        mpfr_init(r27407);
        mpfr_init(r27408);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27402, a1, MPFR_RNDN);
        mpfr_set_d(r27403, a2, MPFR_RNDN);
        mpfr_mul(r27404, r27402, r27403, MPFR_RNDN);
        mpfr_set_d(r27405, b1, MPFR_RNDN);
        mpfr_set_d(r27406, b2, MPFR_RNDN);
        mpfr_mul(r27407, r27405, r27406, MPFR_RNDN);
        mpfr_div(r27408, r27404, r27407, MPFR_RNDN);
        return mpfr_get_d(r27408, MPFR_RNDN);
}

static mpfr_t r27409, r27410, r27411, r27412, r27413, r27414, r27415, r27416, r27417, r27418, r27419, r27420, r27421, r27422, r27423, r27424, r27425, r27426, r27427, r27428, r27429, r27430, r27431, r27432, r27433, r27434;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27409);
        mpfr_init(r27410);
        mpfr_init(r27411);
        mpfr_init(r27412);
        mpfr_init(r27413);
        mpfr_init(r27414);
        mpfr_init(r27415);
        mpfr_init_set_str(r27416, "-1.3968466779217588e+288", 10, MPFR_RNDN);
        mpfr_init(r27417);
        mpfr_init(r27418);
        mpfr_init(r27419);
        mpfr_init(r27420);
        mpfr_init_set_str(r27421, "-4.265685843674341e-308", 10, MPFR_RNDN);
        mpfr_init(r27422);
        mpfr_init_set_str(r27423, "1.5586659615523882e-284", 10, MPFR_RNDN);
        mpfr_init(r27424);
        mpfr_init(r27425);
        mpfr_init(r27426);
        mpfr_init(r27427);
        mpfr_init_set_str(r27428, "5.515640896192062e+297", 10, MPFR_RNDN);
        mpfr_init(r27429);
        mpfr_init(r27430);
        mpfr_init(r27431);
        mpfr_init(r27432);
        mpfr_init(r27433);
        mpfr_init(r27434);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27409, a1, MPFR_RNDN);
        mpfr_set_d(r27410, b1, MPFR_RNDN);
        mpfr_div(r27411, r27409, r27410, MPFR_RNDN);
        mpfr_set_d(r27412, a2, MPFR_RNDN);
        mpfr_set_d(r27413, b2, MPFR_RNDN);
        mpfr_div(r27414, r27412, r27413, MPFR_RNDN);
        mpfr_mul(r27415, r27411, r27414, MPFR_RNDN);
        ;
        mpfr_set_si(r27417, mpfr_cmp(r27415, r27416) <= 0, MPFR_RNDN);
        mpfr_mul(r27418, r27410, r27413, MPFR_RNDN);
        mpfr_div(r27419, r27418, r27412, MPFR_RNDN);
        mpfr_div(r27420, r27409, r27419, MPFR_RNDN);
        ;
        mpfr_set_si(r27422, mpfr_cmp(r27415, r27421) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27424, mpfr_cmp(r27415, r27423) <= 0, MPFR_RNDN);
        mpfr_mul(r27425, r27409, r27412, MPFR_RNDN);
        mpfr_div(r27426, r27425, r27410, MPFR_RNDN);
        mpfr_div(r27427, r27426, r27413, MPFR_RNDN);
        ;
        mpfr_set_si(r27429, mpfr_cmp(r27415, r27428) <= 0, MPFR_RNDN);
        mpfr_div(r27430, r27425, r27418, MPFR_RNDN);
        if (mpfr_get_si(r27429, MPFR_RNDN)) { mpfr_set(r27431, r27415, MPFR_RNDN); } else { mpfr_set(r27431, r27430, MPFR_RNDN); };
        if (mpfr_get_si(r27424, MPFR_RNDN)) { mpfr_set(r27432, r27427, MPFR_RNDN); } else { mpfr_set(r27432, r27431, MPFR_RNDN); };
        if (mpfr_get_si(r27422, MPFR_RNDN)) { mpfr_set(r27433, r27415, MPFR_RNDN); } else { mpfr_set(r27433, r27432, MPFR_RNDN); };
        if (mpfr_get_si(r27417, MPFR_RNDN)) { mpfr_set(r27434, r27420, MPFR_RNDN); } else { mpfr_set(r27434, r27433, MPFR_RNDN); };
        return mpfr_get_d(r27434, MPFR_RNDN);
}

static mpfr_t r27435, r27436, r27437, r27438, r27439, r27440, r27441, r27442, r27443, r27444, r27445, r27446, r27447, r27448, r27449, r27450, r27451, r27452, r27453, r27454, r27455, r27456, r27457, r27458, r27459, r27460;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27435);
        mpfr_init(r27436);
        mpfr_init(r27437);
        mpfr_init(r27438);
        mpfr_init(r27439);
        mpfr_init(r27440);
        mpfr_init(r27441);
        mpfr_init_set_str(r27442, "-1.3968466779217588e+288", 10, MPFR_RNDN);
        mpfr_init(r27443);
        mpfr_init(r27444);
        mpfr_init(r27445);
        mpfr_init(r27446);
        mpfr_init_set_str(r27447, "-4.265685843674341e-308", 10, MPFR_RNDN);
        mpfr_init(r27448);
        mpfr_init_set_str(r27449, "1.5586659615523882e-284", 10, MPFR_RNDN);
        mpfr_init(r27450);
        mpfr_init(r27451);
        mpfr_init(r27452);
        mpfr_init(r27453);
        mpfr_init_set_str(r27454, "5.515640896192062e+297", 10, MPFR_RNDN);
        mpfr_init(r27455);
        mpfr_init(r27456);
        mpfr_init(r27457);
        mpfr_init(r27458);
        mpfr_init(r27459);
        mpfr_init(r27460);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27435, a1, MPFR_RNDN);
        mpfr_set_d(r27436, b1, MPFR_RNDN);
        mpfr_div(r27437, r27435, r27436, MPFR_RNDN);
        mpfr_set_d(r27438, a2, MPFR_RNDN);
        mpfr_set_d(r27439, b2, MPFR_RNDN);
        mpfr_div(r27440, r27438, r27439, MPFR_RNDN);
        mpfr_mul(r27441, r27437, r27440, MPFR_RNDN);
        ;
        mpfr_set_si(r27443, mpfr_cmp(r27441, r27442) <= 0, MPFR_RNDN);
        mpfr_mul(r27444, r27436, r27439, MPFR_RNDN);
        mpfr_div(r27445, r27444, r27438, MPFR_RNDN);
        mpfr_div(r27446, r27435, r27445, MPFR_RNDN);
        ;
        mpfr_set_si(r27448, mpfr_cmp(r27441, r27447) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27450, mpfr_cmp(r27441, r27449) <= 0, MPFR_RNDN);
        mpfr_mul(r27451, r27435, r27438, MPFR_RNDN);
        mpfr_div(r27452, r27451, r27436, MPFR_RNDN);
        mpfr_div(r27453, r27452, r27439, MPFR_RNDN);
        ;
        mpfr_set_si(r27455, mpfr_cmp(r27441, r27454) <= 0, MPFR_RNDN);
        mpfr_div(r27456, r27451, r27444, MPFR_RNDN);
        if (mpfr_get_si(r27455, MPFR_RNDN)) { mpfr_set(r27457, r27441, MPFR_RNDN); } else { mpfr_set(r27457, r27456, MPFR_RNDN); };
        if (mpfr_get_si(r27450, MPFR_RNDN)) { mpfr_set(r27458, r27453, MPFR_RNDN); } else { mpfr_set(r27458, r27457, MPFR_RNDN); };
        if (mpfr_get_si(r27448, MPFR_RNDN)) { mpfr_set(r27459, r27441, MPFR_RNDN); } else { mpfr_set(r27459, r27458, MPFR_RNDN); };
        if (mpfr_get_si(r27443, MPFR_RNDN)) { mpfr_set(r27460, r27446, MPFR_RNDN); } else { mpfr_set(r27460, r27459, MPFR_RNDN); };
        return mpfr_get_d(r27460, MPFR_RNDN);
}

