#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 r11193 = a1;
        float r11194 = a2;
        float r11195 = r11193 * r11194;
        float r11196 = b1;
        float r11197 = b2;
        float r11198 = r11196 * r11197;
        float r11199 = r11195 / r11198;
        return r11199;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r11200 = a1;
        double r11201 = a2;
        double r11202 = r11200 * r11201;
        double r11203 = b1;
        double r11204 = b2;
        double r11205 = r11203 * r11204;
        double r11206 = r11202 / r11205;
        return r11206;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r11207 = a1;
        float r11208 = b1;
        float r11209 = r11207 / r11208;
        float r11210 = a2;
        float r11211 = r11209 * r11210;
        float r11212 = -5.505268534644017e+219;
        bool r11213 = r11211 <= r11212;
        float r11214 = b2;
        float r11215 = r11210 / r11214;
        float r11216 = r11215 / r11208;
        float r11217 = r11207 * r11216;
        float r11218 = -2.631708285375282e-224;
        bool r11219 = r11211 <= r11218;
        float r11220 = 1;
        float r11221 = r11220 / r11214;
        float r11222 = r11211 * r11221;
        float r11223 = 1.4821475551002457e-297;
        bool r11224 = r11211 <= r11223;
        float r11225 = 5.912666292838447e+288;
        bool r11226 = r11211 <= r11225;
        float r11227 = r11207 / r11214;
        float r11228 = r11210 / r11208;
        float r11229 = r11227 * r11228;
        float r11230 = r11226 ? r11222 : r11229;
        float r11231 = r11224 ? r11217 : r11230;
        float r11232 = r11219 ? r11222 : r11231;
        float r11233 = r11213 ? r11217 : r11232;
        return r11233;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r11234 = a1;
        double r11235 = b1;
        double r11236 = r11234 / r11235;
        double r11237 = a2;
        double r11238 = r11236 * r11237;
        double r11239 = -5.505268534644017e+219;
        bool r11240 = r11238 <= r11239;
        double r11241 = b2;
        double r11242 = r11237 / r11241;
        double r11243 = r11242 / r11235;
        double r11244 = r11234 * r11243;
        double r11245 = -2.631708285375282e-224;
        bool r11246 = r11238 <= r11245;
        double r11247 = 1;
        double r11248 = r11247 / r11241;
        double r11249 = r11238 * r11248;
        double r11250 = 1.4821475551002457e-297;
        bool r11251 = r11238 <= r11250;
        double r11252 = 5.912666292838447e+288;
        bool r11253 = r11238 <= r11252;
        double r11254 = r11234 / r11241;
        double r11255 = r11237 / r11235;
        double r11256 = r11254 * r11255;
        double r11257 = r11253 ? r11249 : r11256;
        double r11258 = r11251 ? r11244 : r11257;
        double r11259 = r11246 ? r11249 : r11258;
        double r11260 = r11240 ? r11244 : r11259;
        return r11260;
}

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 r11261, r11262, r11263, r11264, r11265, r11266, r11267;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11261);
        mpfr_init(r11262);
        mpfr_init(r11263);
        mpfr_init(r11264);
        mpfr_init(r11265);
        mpfr_init(r11266);
        mpfr_init(r11267);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11261, a1, MPFR_RNDN);
        mpfr_set_d(r11262, a2, MPFR_RNDN);
        mpfr_mul(r11263, r11261, r11262, MPFR_RNDN);
        mpfr_set_d(r11264, b1, MPFR_RNDN);
        mpfr_set_d(r11265, b2, MPFR_RNDN);
        mpfr_mul(r11266, r11264, r11265, MPFR_RNDN);
        mpfr_div(r11267, r11263, r11266, MPFR_RNDN);
        return mpfr_get_d(r11267, MPFR_RNDN);
}

static mpfr_t r11268, r11269, r11270, r11271, r11272, r11273, r11274, r11275, r11276, r11277, r11278, r11279, r11280, r11281, r11282, r11283, r11284, r11285, r11286, r11287, r11288, r11289, r11290, r11291, r11292, r11293, r11294;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11268);
        mpfr_init(r11269);
        mpfr_init(r11270);
        mpfr_init(r11271);
        mpfr_init(r11272);
        mpfr_init_set_str(r11273, "-5.505268534644017e+219", 10, MPFR_RNDN);
        mpfr_init(r11274);
        mpfr_init(r11275);
        mpfr_init(r11276);
        mpfr_init(r11277);
        mpfr_init(r11278);
        mpfr_init_set_str(r11279, "-2.631708285375282e-224", 10, MPFR_RNDN);
        mpfr_init(r11280);
        mpfr_init_set_str(r11281, "1", 10, MPFR_RNDN);
        mpfr_init(r11282);
        mpfr_init(r11283);
        mpfr_init_set_str(r11284, "1.4821475551002457e-297", 10, MPFR_RNDN);
        mpfr_init(r11285);
        mpfr_init_set_str(r11286, "5.912666292838447e+288", 10, MPFR_RNDN);
        mpfr_init(r11287);
        mpfr_init(r11288);
        mpfr_init(r11289);
        mpfr_init(r11290);
        mpfr_init(r11291);
        mpfr_init(r11292);
        mpfr_init(r11293);
        mpfr_init(r11294);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11268, a1, MPFR_RNDN);
        mpfr_set_d(r11269, b1, MPFR_RNDN);
        mpfr_div(r11270, r11268, r11269, MPFR_RNDN);
        mpfr_set_d(r11271, a2, MPFR_RNDN);
        mpfr_mul(r11272, r11270, r11271, MPFR_RNDN);
        ;
        mpfr_set_si(r11274, mpfr_cmp(r11272, r11273) <= 0, MPFR_RNDN);
        mpfr_set_d(r11275, b2, MPFR_RNDN);
        mpfr_div(r11276, r11271, r11275, MPFR_RNDN);
        mpfr_div(r11277, r11276, r11269, MPFR_RNDN);
        mpfr_mul(r11278, r11268, r11277, MPFR_RNDN);
        ;
        mpfr_set_si(r11280, mpfr_cmp(r11272, r11279) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11282, r11281, r11275, MPFR_RNDN);
        mpfr_mul(r11283, r11272, r11282, MPFR_RNDN);
        ;
        mpfr_set_si(r11285, mpfr_cmp(r11272, r11284) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11287, mpfr_cmp(r11272, r11286) <= 0, MPFR_RNDN);
        mpfr_div(r11288, r11268, r11275, MPFR_RNDN);
        mpfr_div(r11289, r11271, r11269, MPFR_RNDN);
        mpfr_mul(r11290, r11288, r11289, MPFR_RNDN);
        if (mpfr_get_si(r11287, MPFR_RNDN)) { mpfr_set(r11291, r11283, MPFR_RNDN); } else { mpfr_set(r11291, r11290, MPFR_RNDN); };
        if (mpfr_get_si(r11285, MPFR_RNDN)) { mpfr_set(r11292, r11278, MPFR_RNDN); } else { mpfr_set(r11292, r11291, MPFR_RNDN); };
        if (mpfr_get_si(r11280, MPFR_RNDN)) { mpfr_set(r11293, r11283, MPFR_RNDN); } else { mpfr_set(r11293, r11292, MPFR_RNDN); };
        if (mpfr_get_si(r11274, MPFR_RNDN)) { mpfr_set(r11294, r11278, MPFR_RNDN); } else { mpfr_set(r11294, r11293, MPFR_RNDN); };
        return mpfr_get_d(r11294, MPFR_RNDN);
}

static mpfr_t r11295, r11296, r11297, r11298, r11299, r11300, r11301, r11302, r11303, r11304, r11305, r11306, r11307, r11308, r11309, r11310, r11311, r11312, r11313, r11314, r11315, r11316, r11317, r11318, r11319, r11320, r11321;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11295);
        mpfr_init(r11296);
        mpfr_init(r11297);
        mpfr_init(r11298);
        mpfr_init(r11299);
        mpfr_init_set_str(r11300, "-5.505268534644017e+219", 10, MPFR_RNDN);
        mpfr_init(r11301);
        mpfr_init(r11302);
        mpfr_init(r11303);
        mpfr_init(r11304);
        mpfr_init(r11305);
        mpfr_init_set_str(r11306, "-2.631708285375282e-224", 10, MPFR_RNDN);
        mpfr_init(r11307);
        mpfr_init_set_str(r11308, "1", 10, MPFR_RNDN);
        mpfr_init(r11309);
        mpfr_init(r11310);
        mpfr_init_set_str(r11311, "1.4821475551002457e-297", 10, MPFR_RNDN);
        mpfr_init(r11312);
        mpfr_init_set_str(r11313, "5.912666292838447e+288", 10, MPFR_RNDN);
        mpfr_init(r11314);
        mpfr_init(r11315);
        mpfr_init(r11316);
        mpfr_init(r11317);
        mpfr_init(r11318);
        mpfr_init(r11319);
        mpfr_init(r11320);
        mpfr_init(r11321);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11295, a1, MPFR_RNDN);
        mpfr_set_d(r11296, b1, MPFR_RNDN);
        mpfr_div(r11297, r11295, r11296, MPFR_RNDN);
        mpfr_set_d(r11298, a2, MPFR_RNDN);
        mpfr_mul(r11299, r11297, r11298, MPFR_RNDN);
        ;
        mpfr_set_si(r11301, mpfr_cmp(r11299, r11300) <= 0, MPFR_RNDN);
        mpfr_set_d(r11302, b2, MPFR_RNDN);
        mpfr_div(r11303, r11298, r11302, MPFR_RNDN);
        mpfr_div(r11304, r11303, r11296, MPFR_RNDN);
        mpfr_mul(r11305, r11295, r11304, MPFR_RNDN);
        ;
        mpfr_set_si(r11307, mpfr_cmp(r11299, r11306) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11309, r11308, r11302, MPFR_RNDN);
        mpfr_mul(r11310, r11299, r11309, MPFR_RNDN);
        ;
        mpfr_set_si(r11312, mpfr_cmp(r11299, r11311) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11314, mpfr_cmp(r11299, r11313) <= 0, MPFR_RNDN);
        mpfr_div(r11315, r11295, r11302, MPFR_RNDN);
        mpfr_div(r11316, r11298, r11296, MPFR_RNDN);
        mpfr_mul(r11317, r11315, r11316, MPFR_RNDN);
        if (mpfr_get_si(r11314, MPFR_RNDN)) { mpfr_set(r11318, r11310, MPFR_RNDN); } else { mpfr_set(r11318, r11317, MPFR_RNDN); };
        if (mpfr_get_si(r11312, MPFR_RNDN)) { mpfr_set(r11319, r11305, MPFR_RNDN); } else { mpfr_set(r11319, r11318, MPFR_RNDN); };
        if (mpfr_get_si(r11307, MPFR_RNDN)) { mpfr_set(r11320, r11310, MPFR_RNDN); } else { mpfr_set(r11320, r11319, MPFR_RNDN); };
        if (mpfr_get_si(r11301, MPFR_RNDN)) { mpfr_set(r11321, r11305, MPFR_RNDN); } else { mpfr_set(r11321, r11320, MPFR_RNDN); };
        return mpfr_get_d(r11321, MPFR_RNDN);
}

