#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 r27290 = a1;
        float r27291 = a2;
        float r27292 = r27290 * r27291;
        float r27293 = b1;
        float r27294 = b2;
        float r27295 = r27293 * r27294;
        float r27296 = r27292 / r27295;
        return r27296;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r27297 = a1;
        double r27298 = a2;
        double r27299 = r27297 * r27298;
        double r27300 = b1;
        double r27301 = b2;
        double r27302 = r27300 * r27301;
        double r27303 = r27299 / r27302;
        return r27303;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r27304 = a1;
        float r27305 = a2;
        float r27306 = b1;
        float r27307 = r27305 / r27306;
        float r27308 = r27304 * r27307;
        float r27309 = b2;
        float r27310 = r27308 / r27309;
        float r27311 = -5.487922603099143e+279;
        bool r27312 = r27310 <= r27311;
        float r27313 = 1;
        float r27314 = r27306 * r27309;
        float r27315 = r27304 * r27305;
        float r27316 = r27314 / r27315;
        float r27317 = r27313 / r27316;
        float r27318 = -1.3325174439157501e-185;
        bool r27319 = r27310 <= r27318;
        float r27320 = 2.6744466146562813e-307;
        bool r27321 = r27310 <= r27320;
        float r27322 = r27314 / r27305;
        float r27323 = r27304 / r27322;
        float r27324 = 6.129786661582218e+305;
        bool r27325 = r27310 <= r27324;
        float r27326 = r27306 / r27305;
        float r27327 = r27304 / r27326;
        float r27328 = r27309 / r27327;
        float r27329 = r27313 / r27328;
        float r27330 = r27325 ? r27329 : r27323;
        float r27331 = r27321 ? r27323 : r27330;
        float r27332 = r27319 ? r27310 : r27331;
        float r27333 = r27312 ? r27317 : r27332;
        return r27333;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r27334 = a1;
        double r27335 = a2;
        double r27336 = b1;
        double r27337 = r27335 / r27336;
        double r27338 = r27334 * r27337;
        double r27339 = b2;
        double r27340 = r27338 / r27339;
        double r27341 = -5.487922603099143e+279;
        bool r27342 = r27340 <= r27341;
        double r27343 = 1;
        double r27344 = r27336 * r27339;
        double r27345 = r27334 * r27335;
        double r27346 = r27344 / r27345;
        double r27347 = r27343 / r27346;
        double r27348 = -1.3325174439157501e-185;
        bool r27349 = r27340 <= r27348;
        double r27350 = 2.6744466146562813e-307;
        bool r27351 = r27340 <= r27350;
        double r27352 = r27344 / r27335;
        double r27353 = r27334 / r27352;
        double r27354 = 6.129786661582218e+305;
        bool r27355 = r27340 <= r27354;
        double r27356 = r27336 / r27335;
        double r27357 = r27334 / r27356;
        double r27358 = r27339 / r27357;
        double r27359 = r27343 / r27358;
        double r27360 = r27355 ? r27359 : r27353;
        double r27361 = r27351 ? r27353 : r27360;
        double r27362 = r27349 ? r27340 : r27361;
        double r27363 = r27342 ? r27347 : r27362;
        return r27363;
}

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 r27364, r27365, r27366, r27367, r27368, r27369, r27370;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27364);
        mpfr_init(r27365);
        mpfr_init(r27366);
        mpfr_init(r27367);
        mpfr_init(r27368);
        mpfr_init(r27369);
        mpfr_init(r27370);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27364, a1, MPFR_RNDN);
        mpfr_set_d(r27365, a2, MPFR_RNDN);
        mpfr_mul(r27366, r27364, r27365, MPFR_RNDN);
        mpfr_set_d(r27367, b1, MPFR_RNDN);
        mpfr_set_d(r27368, b2, MPFR_RNDN);
        mpfr_mul(r27369, r27367, r27368, MPFR_RNDN);
        mpfr_div(r27370, r27366, r27369, MPFR_RNDN);
        return mpfr_get_d(r27370, MPFR_RNDN);
}

static mpfr_t 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, r27396, r27397, r27398, r27399, r27400;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27371);
        mpfr_init(r27372);
        mpfr_init(r27373);
        mpfr_init(r27374);
        mpfr_init(r27375);
        mpfr_init(r27376);
        mpfr_init(r27377);
        mpfr_init_set_str(r27378, "-5.487922603099143e+279", 10, MPFR_RNDN);
        mpfr_init(r27379);
        mpfr_init_set_str(r27380, "1", 10, MPFR_RNDN);
        mpfr_init(r27381);
        mpfr_init(r27382);
        mpfr_init(r27383);
        mpfr_init(r27384);
        mpfr_init_set_str(r27385, "-1.3325174439157501e-185", 10, MPFR_RNDN);
        mpfr_init(r27386);
        mpfr_init_set_str(r27387, "2.6744466146562813e-307", 10, MPFR_RNDN);
        mpfr_init(r27388);
        mpfr_init(r27389);
        mpfr_init(r27390);
        mpfr_init_set_str(r27391, "6.129786661582218e+305", 10, MPFR_RNDN);
        mpfr_init(r27392);
        mpfr_init(r27393);
        mpfr_init(r27394);
        mpfr_init(r27395);
        mpfr_init(r27396);
        mpfr_init(r27397);
        mpfr_init(r27398);
        mpfr_init(r27399);
        mpfr_init(r27400);
}

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

static mpfr_t r27401, r27402, r27403, r27404, r27405, r27406, r27407, r27408, r27409, r27410, r27411, r27412, r27413, r27414, r27415, r27416, r27417, r27418, r27419, r27420, r27421, r27422, r27423, r27424, r27425, r27426, r27427, r27428, r27429, r27430;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27401);
        mpfr_init(r27402);
        mpfr_init(r27403);
        mpfr_init(r27404);
        mpfr_init(r27405);
        mpfr_init(r27406);
        mpfr_init(r27407);
        mpfr_init_set_str(r27408, "-5.487922603099143e+279", 10, MPFR_RNDN);
        mpfr_init(r27409);
        mpfr_init_set_str(r27410, "1", 10, MPFR_RNDN);
        mpfr_init(r27411);
        mpfr_init(r27412);
        mpfr_init(r27413);
        mpfr_init(r27414);
        mpfr_init_set_str(r27415, "-1.3325174439157501e-185", 10, MPFR_RNDN);
        mpfr_init(r27416);
        mpfr_init_set_str(r27417, "2.6744466146562813e-307", 10, MPFR_RNDN);
        mpfr_init(r27418);
        mpfr_init(r27419);
        mpfr_init(r27420);
        mpfr_init_set_str(r27421, "6.129786661582218e+305", 10, MPFR_RNDN);
        mpfr_init(r27422);
        mpfr_init(r27423);
        mpfr_init(r27424);
        mpfr_init(r27425);
        mpfr_init(r27426);
        mpfr_init(r27427);
        mpfr_init(r27428);
        mpfr_init(r27429);
        mpfr_init(r27430);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27401, a1, MPFR_RNDN);
        mpfr_set_d(r27402, a2, MPFR_RNDN);
        mpfr_set_d(r27403, b1, MPFR_RNDN);
        mpfr_div(r27404, r27402, r27403, MPFR_RNDN);
        mpfr_mul(r27405, r27401, r27404, MPFR_RNDN);
        mpfr_set_d(r27406, b2, MPFR_RNDN);
        mpfr_div(r27407, r27405, r27406, MPFR_RNDN);
        ;
        mpfr_set_si(r27409, mpfr_cmp(r27407, r27408) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27411, r27403, r27406, MPFR_RNDN);
        mpfr_mul(r27412, r27401, r27402, MPFR_RNDN);
        mpfr_div(r27413, r27411, r27412, MPFR_RNDN);
        mpfr_div(r27414, r27410, r27413, MPFR_RNDN);
        ;
        mpfr_set_si(r27416, mpfr_cmp(r27407, r27415) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27418, mpfr_cmp(r27407, r27417) <= 0, MPFR_RNDN);
        mpfr_div(r27419, r27411, r27402, MPFR_RNDN);
        mpfr_div(r27420, r27401, r27419, MPFR_RNDN);
        ;
        mpfr_set_si(r27422, mpfr_cmp(r27407, r27421) <= 0, MPFR_RNDN);
        mpfr_div(r27423, r27403, r27402, MPFR_RNDN);
        mpfr_div(r27424, r27401, r27423, MPFR_RNDN);
        mpfr_div(r27425, r27406, r27424, MPFR_RNDN);
        mpfr_div(r27426, r27410, r27425, MPFR_RNDN);
        if (mpfr_get_si(r27422, MPFR_RNDN)) { mpfr_set(r27427, r27426, MPFR_RNDN); } else { mpfr_set(r27427, r27420, MPFR_RNDN); };
        if (mpfr_get_si(r27418, MPFR_RNDN)) { mpfr_set(r27428, r27420, MPFR_RNDN); } else { mpfr_set(r27428, r27427, MPFR_RNDN); };
        if (mpfr_get_si(r27416, MPFR_RNDN)) { mpfr_set(r27429, r27407, MPFR_RNDN); } else { mpfr_set(r27429, r27428, MPFR_RNDN); };
        if (mpfr_get_si(r27409, MPFR_RNDN)) { mpfr_set(r27430, r27414, MPFR_RNDN); } else { mpfr_set(r27430, r27429, MPFR_RNDN); };
        return mpfr_get_d(r27430, MPFR_RNDN);
}

