#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 r27211 = a1;
        float r27212 = a2;
        float r27213 = r27211 * r27212;
        float r27214 = b1;
        float r27215 = b2;
        float r27216 = r27214 * r27215;
        float r27217 = r27213 / r27216;
        return r27217;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r27218 = a1;
        double r27219 = a2;
        double r27220 = r27218 * r27219;
        double r27221 = b1;
        double r27222 = b2;
        double r27223 = r27221 * r27222;
        double r27224 = r27220 / r27223;
        return r27224;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r27225 = a2;
        float r27226 = b1;
        float r27227 = r27225 / r27226;
        float r27228 = b2;
        float r27229 = r27227 / r27228;
        float r27230 = -2.6089023308796636e+306;
        bool r27231 = r27229 <= r27230;
        float r27232 = a1;
        float r27233 = r27232 * r27225;
        float r27234 = r27233 / r27226;
        float r27235 = r27234 / r27228;
        float r27236 = -1.2180714020774775e-304;
        bool r27237 = r27229 <= r27236;
        float r27238 = r27232 * r27229;
        float r27239 = 8.746547490695171e-299;
        bool r27240 = r27229 <= r27239;
        float r27241 = 1;
        float r27242 = r27241 / r27228;
        float r27243 = r27233 * r27242;
        float r27244 = r27243 / r27226;
        float r27245 = 3.4733057543004296e+301;
        bool r27246 = r27229 <= r27245;
        float r27247 = r27246 ? r27238 : r27244;
        float r27248 = r27240 ? r27244 : r27247;
        float r27249 = r27237 ? r27238 : r27248;
        float r27250 = r27231 ? r27235 : r27249;
        return r27250;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r27251 = a2;
        double r27252 = b1;
        double r27253 = r27251 / r27252;
        double r27254 = b2;
        double r27255 = r27253 / r27254;
        double r27256 = -2.6089023308796636e+306;
        bool r27257 = r27255 <= r27256;
        double r27258 = a1;
        double r27259 = r27258 * r27251;
        double r27260 = r27259 / r27252;
        double r27261 = r27260 / r27254;
        double r27262 = -1.2180714020774775e-304;
        bool r27263 = r27255 <= r27262;
        double r27264 = r27258 * r27255;
        double r27265 = 8.746547490695171e-299;
        bool r27266 = r27255 <= r27265;
        double r27267 = 1;
        double r27268 = r27267 / r27254;
        double r27269 = r27259 * r27268;
        double r27270 = r27269 / r27252;
        double r27271 = 3.4733057543004296e+301;
        bool r27272 = r27255 <= r27271;
        double r27273 = r27272 ? r27264 : r27270;
        double r27274 = r27266 ? r27270 : r27273;
        double r27275 = r27263 ? r27264 : r27274;
        double r27276 = r27257 ? r27261 : r27275;
        return r27276;
}

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 r27277, r27278, r27279, r27280, r27281, r27282, r27283;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27277);
        mpfr_init(r27278);
        mpfr_init(r27279);
        mpfr_init(r27280);
        mpfr_init(r27281);
        mpfr_init(r27282);
        mpfr_init(r27283);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27277, a1, MPFR_RNDN);
        mpfr_set_d(r27278, a2, MPFR_RNDN);
        mpfr_mul(r27279, r27277, r27278, MPFR_RNDN);
        mpfr_set_d(r27280, b1, MPFR_RNDN);
        mpfr_set_d(r27281, b2, MPFR_RNDN);
        mpfr_mul(r27282, r27280, r27281, MPFR_RNDN);
        mpfr_div(r27283, r27279, r27282, MPFR_RNDN);
        return mpfr_get_d(r27283, MPFR_RNDN);
}

static mpfr_t r27284, r27285, r27286, r27287, r27288, r27289, r27290, r27291, r27292, r27293, r27294, r27295, r27296, r27297, r27298, r27299, r27300, r27301, r27302, r27303, r27304, r27305, r27306, r27307, r27308, r27309;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27284);
        mpfr_init(r27285);
        mpfr_init(r27286);
        mpfr_init(r27287);
        mpfr_init(r27288);
        mpfr_init_set_str(r27289, "-2.6089023308796636e+306", 10, MPFR_RNDN);
        mpfr_init(r27290);
        mpfr_init(r27291);
        mpfr_init(r27292);
        mpfr_init(r27293);
        mpfr_init(r27294);
        mpfr_init_set_str(r27295, "-1.2180714020774775e-304", 10, MPFR_RNDN);
        mpfr_init(r27296);
        mpfr_init(r27297);
        mpfr_init_set_str(r27298, "8.746547490695171e-299", 10, MPFR_RNDN);
        mpfr_init(r27299);
        mpfr_init_set_str(r27300, "1", 10, MPFR_RNDN);
        mpfr_init(r27301);
        mpfr_init(r27302);
        mpfr_init(r27303);
        mpfr_init_set_str(r27304, "3.4733057543004296e+301", 10, MPFR_RNDN);
        mpfr_init(r27305);
        mpfr_init(r27306);
        mpfr_init(r27307);
        mpfr_init(r27308);
        mpfr_init(r27309);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27284, a2, MPFR_RNDN);
        mpfr_set_d(r27285, b1, MPFR_RNDN);
        mpfr_div(r27286, r27284, r27285, MPFR_RNDN);
        mpfr_set_d(r27287, b2, MPFR_RNDN);
        mpfr_div(r27288, r27286, r27287, MPFR_RNDN);
        ;
        mpfr_set_si(r27290, mpfr_cmp(r27288, r27289) <= 0, MPFR_RNDN);
        mpfr_set_d(r27291, a1, MPFR_RNDN);
        mpfr_mul(r27292, r27291, r27284, MPFR_RNDN);
        mpfr_div(r27293, r27292, r27285, MPFR_RNDN);
        mpfr_div(r27294, r27293, r27287, MPFR_RNDN);
        ;
        mpfr_set_si(r27296, mpfr_cmp(r27288, r27295) <= 0, MPFR_RNDN);
        mpfr_mul(r27297, r27291, r27288, MPFR_RNDN);
        ;
        mpfr_set_si(r27299, mpfr_cmp(r27288, r27298) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27301, r27300, r27287, MPFR_RNDN);
        mpfr_mul(r27302, r27292, r27301, MPFR_RNDN);
        mpfr_div(r27303, r27302, r27285, MPFR_RNDN);
        ;
        mpfr_set_si(r27305, mpfr_cmp(r27288, r27304) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27305, MPFR_RNDN)) { mpfr_set(r27306, r27297, MPFR_RNDN); } else { mpfr_set(r27306, r27303, MPFR_RNDN); };
        if (mpfr_get_si(r27299, MPFR_RNDN)) { mpfr_set(r27307, r27303, MPFR_RNDN); } else { mpfr_set(r27307, r27306, MPFR_RNDN); };
        if (mpfr_get_si(r27296, MPFR_RNDN)) { mpfr_set(r27308, r27297, MPFR_RNDN); } else { mpfr_set(r27308, r27307, MPFR_RNDN); };
        if (mpfr_get_si(r27290, MPFR_RNDN)) { mpfr_set(r27309, r27294, MPFR_RNDN); } else { mpfr_set(r27309, r27308, MPFR_RNDN); };
        return mpfr_get_d(r27309, MPFR_RNDN);
}

static mpfr_t r27310, r27311, r27312, r27313, r27314, r27315, r27316, r27317, r27318, r27319, r27320, r27321, r27322, r27323, r27324, r27325, r27326, r27327, r27328, r27329, r27330, r27331, r27332, r27333, r27334, r27335;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27310);
        mpfr_init(r27311);
        mpfr_init(r27312);
        mpfr_init(r27313);
        mpfr_init(r27314);
        mpfr_init_set_str(r27315, "-2.6089023308796636e+306", 10, MPFR_RNDN);
        mpfr_init(r27316);
        mpfr_init(r27317);
        mpfr_init(r27318);
        mpfr_init(r27319);
        mpfr_init(r27320);
        mpfr_init_set_str(r27321, "-1.2180714020774775e-304", 10, MPFR_RNDN);
        mpfr_init(r27322);
        mpfr_init(r27323);
        mpfr_init_set_str(r27324, "8.746547490695171e-299", 10, MPFR_RNDN);
        mpfr_init(r27325);
        mpfr_init_set_str(r27326, "1", 10, MPFR_RNDN);
        mpfr_init(r27327);
        mpfr_init(r27328);
        mpfr_init(r27329);
        mpfr_init_set_str(r27330, "3.4733057543004296e+301", 10, MPFR_RNDN);
        mpfr_init(r27331);
        mpfr_init(r27332);
        mpfr_init(r27333);
        mpfr_init(r27334);
        mpfr_init(r27335);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27310, a2, MPFR_RNDN);
        mpfr_set_d(r27311, b1, MPFR_RNDN);
        mpfr_div(r27312, r27310, r27311, MPFR_RNDN);
        mpfr_set_d(r27313, b2, MPFR_RNDN);
        mpfr_div(r27314, r27312, r27313, MPFR_RNDN);
        ;
        mpfr_set_si(r27316, mpfr_cmp(r27314, r27315) <= 0, MPFR_RNDN);
        mpfr_set_d(r27317, a1, MPFR_RNDN);
        mpfr_mul(r27318, r27317, r27310, MPFR_RNDN);
        mpfr_div(r27319, r27318, r27311, MPFR_RNDN);
        mpfr_div(r27320, r27319, r27313, MPFR_RNDN);
        ;
        mpfr_set_si(r27322, mpfr_cmp(r27314, r27321) <= 0, MPFR_RNDN);
        mpfr_mul(r27323, r27317, r27314, MPFR_RNDN);
        ;
        mpfr_set_si(r27325, mpfr_cmp(r27314, r27324) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27327, r27326, r27313, MPFR_RNDN);
        mpfr_mul(r27328, r27318, r27327, MPFR_RNDN);
        mpfr_div(r27329, r27328, r27311, MPFR_RNDN);
        ;
        mpfr_set_si(r27331, mpfr_cmp(r27314, r27330) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27331, MPFR_RNDN)) { mpfr_set(r27332, r27323, MPFR_RNDN); } else { mpfr_set(r27332, r27329, MPFR_RNDN); };
        if (mpfr_get_si(r27325, MPFR_RNDN)) { mpfr_set(r27333, r27329, MPFR_RNDN); } else { mpfr_set(r27333, r27332, MPFR_RNDN); };
        if (mpfr_get_si(r27322, MPFR_RNDN)) { mpfr_set(r27334, r27323, MPFR_RNDN); } else { mpfr_set(r27334, r27333, MPFR_RNDN); };
        if (mpfr_get_si(r27316, MPFR_RNDN)) { mpfr_set(r27335, r27320, MPFR_RNDN); } else { mpfr_set(r27335, r27334, MPFR_RNDN); };
        return mpfr_get_d(r27335, MPFR_RNDN);
}

