#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 r11035 = a1;
        float r11036 = a2;
        float r11037 = r11035 * r11036;
        float r11038 = b1;
        float r11039 = b2;
        float r11040 = r11038 * r11039;
        float r11041 = r11037 / r11040;
        return r11041;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r11042 = a1;
        double r11043 = a2;
        double r11044 = r11042 * r11043;
        double r11045 = b1;
        double r11046 = b2;
        double r11047 = r11045 * r11046;
        double r11048 = r11044 / r11047;
        return r11048;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r11049 = a1;
        float r11050 = b1;
        float r11051 = r11049 / r11050;
        float r11052 = a2;
        float r11053 = r11051 * r11052;
        float r11054 = -5.505268534644017e+219;
        bool r11055 = r11053 <= r11054;
        float r11056 = b2;
        float r11057 = r11052 / r11056;
        float r11058 = r11057 / r11050;
        float r11059 = r11049 * r11058;
        float r11060 = -2.631708285375282e-224;
        bool r11061 = r11053 <= r11060;
        float r11062 = 1;
        float r11063 = r11062 / r11056;
        float r11064 = r11053 * r11063;
        float r11065 = 1.4821475551002457e-297;
        bool r11066 = r11053 <= r11065;
        float r11067 = 5.912666292838447e+288;
        bool r11068 = r11053 <= r11067;
        float r11069 = r11049 / r11056;
        float r11070 = r11052 / r11050;
        float r11071 = r11069 * r11070;
        float r11072 = r11068 ? r11064 : r11071;
        float r11073 = r11066 ? r11059 : r11072;
        float r11074 = r11061 ? r11064 : r11073;
        float r11075 = r11055 ? r11059 : r11074;
        return r11075;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r11076 = a1;
        double r11077 = b1;
        double r11078 = r11076 / r11077;
        double r11079 = a2;
        double r11080 = r11078 * r11079;
        double r11081 = -5.505268534644017e+219;
        bool r11082 = r11080 <= r11081;
        double r11083 = b2;
        double r11084 = r11079 / r11083;
        double r11085 = r11084 / r11077;
        double r11086 = r11076 * r11085;
        double r11087 = -2.631708285375282e-224;
        bool r11088 = r11080 <= r11087;
        double r11089 = 1;
        double r11090 = r11089 / r11083;
        double r11091 = r11080 * r11090;
        double r11092 = 1.4821475551002457e-297;
        bool r11093 = r11080 <= r11092;
        double r11094 = 5.912666292838447e+288;
        bool r11095 = r11080 <= r11094;
        double r11096 = r11076 / r11083;
        double r11097 = r11079 / r11077;
        double r11098 = r11096 * r11097;
        double r11099 = r11095 ? r11091 : r11098;
        double r11100 = r11093 ? r11086 : r11099;
        double r11101 = r11088 ? r11091 : r11100;
        double r11102 = r11082 ? r11086 : r11101;
        return r11102;
}

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 r11103, r11104, r11105, r11106, r11107, r11108, r11109;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11103);
        mpfr_init(r11104);
        mpfr_init(r11105);
        mpfr_init(r11106);
        mpfr_init(r11107);
        mpfr_init(r11108);
        mpfr_init(r11109);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11103, a1, MPFR_RNDN);
        mpfr_set_d(r11104, a2, MPFR_RNDN);
        mpfr_mul(r11105, r11103, r11104, MPFR_RNDN);
        mpfr_set_d(r11106, b1, MPFR_RNDN);
        mpfr_set_d(r11107, b2, MPFR_RNDN);
        mpfr_mul(r11108, r11106, r11107, MPFR_RNDN);
        mpfr_div(r11109, r11105, r11108, MPFR_RNDN);
        return mpfr_get_d(r11109, MPFR_RNDN);
}

static mpfr_t r11110, r11111, r11112, r11113, r11114, r11115, r11116, r11117, r11118, r11119, r11120, r11121, r11122, r11123, r11124, r11125, r11126, r11127, r11128, r11129, r11130, r11131, r11132, r11133, r11134, r11135, r11136;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11110);
        mpfr_init(r11111);
        mpfr_init(r11112);
        mpfr_init(r11113);
        mpfr_init(r11114);
        mpfr_init_set_str(r11115, "-5.505268534644017e+219", 10, MPFR_RNDN);
        mpfr_init(r11116);
        mpfr_init(r11117);
        mpfr_init(r11118);
        mpfr_init(r11119);
        mpfr_init(r11120);
        mpfr_init_set_str(r11121, "-2.631708285375282e-224", 10, MPFR_RNDN);
        mpfr_init(r11122);
        mpfr_init_set_str(r11123, "1", 10, MPFR_RNDN);
        mpfr_init(r11124);
        mpfr_init(r11125);
        mpfr_init_set_str(r11126, "1.4821475551002457e-297", 10, MPFR_RNDN);
        mpfr_init(r11127);
        mpfr_init_set_str(r11128, "5.912666292838447e+288", 10, MPFR_RNDN);
        mpfr_init(r11129);
        mpfr_init(r11130);
        mpfr_init(r11131);
        mpfr_init(r11132);
        mpfr_init(r11133);
        mpfr_init(r11134);
        mpfr_init(r11135);
        mpfr_init(r11136);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11110, a1, MPFR_RNDN);
        mpfr_set_d(r11111, b1, MPFR_RNDN);
        mpfr_div(r11112, r11110, r11111, MPFR_RNDN);
        mpfr_set_d(r11113, a2, MPFR_RNDN);
        mpfr_mul(r11114, r11112, r11113, MPFR_RNDN);
        ;
        mpfr_set_si(r11116, mpfr_cmp(r11114, r11115) <= 0, MPFR_RNDN);
        mpfr_set_d(r11117, b2, MPFR_RNDN);
        mpfr_div(r11118, r11113, r11117, MPFR_RNDN);
        mpfr_div(r11119, r11118, r11111, MPFR_RNDN);
        mpfr_mul(r11120, r11110, r11119, MPFR_RNDN);
        ;
        mpfr_set_si(r11122, mpfr_cmp(r11114, r11121) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11124, r11123, r11117, MPFR_RNDN);
        mpfr_mul(r11125, r11114, r11124, MPFR_RNDN);
        ;
        mpfr_set_si(r11127, mpfr_cmp(r11114, r11126) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11129, mpfr_cmp(r11114, r11128) <= 0, MPFR_RNDN);
        mpfr_div(r11130, r11110, r11117, MPFR_RNDN);
        mpfr_div(r11131, r11113, r11111, MPFR_RNDN);
        mpfr_mul(r11132, r11130, r11131, MPFR_RNDN);
        if (mpfr_get_si(r11129, MPFR_RNDN)) { mpfr_set(r11133, r11125, MPFR_RNDN); } else { mpfr_set(r11133, r11132, MPFR_RNDN); };
        if (mpfr_get_si(r11127, MPFR_RNDN)) { mpfr_set(r11134, r11120, MPFR_RNDN); } else { mpfr_set(r11134, r11133, MPFR_RNDN); };
        if (mpfr_get_si(r11122, MPFR_RNDN)) { mpfr_set(r11135, r11125, MPFR_RNDN); } else { mpfr_set(r11135, r11134, MPFR_RNDN); };
        if (mpfr_get_si(r11116, MPFR_RNDN)) { mpfr_set(r11136, r11120, MPFR_RNDN); } else { mpfr_set(r11136, r11135, MPFR_RNDN); };
        return mpfr_get_d(r11136, MPFR_RNDN);
}

static mpfr_t r11137, r11138, r11139, r11140, r11141, r11142, r11143, r11144, r11145, r11146, r11147, r11148, r11149, r11150, r11151, r11152, r11153, r11154, r11155, r11156, r11157, r11158, r11159, r11160, r11161, r11162, r11163;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11137);
        mpfr_init(r11138);
        mpfr_init(r11139);
        mpfr_init(r11140);
        mpfr_init(r11141);
        mpfr_init_set_str(r11142, "-5.505268534644017e+219", 10, MPFR_RNDN);
        mpfr_init(r11143);
        mpfr_init(r11144);
        mpfr_init(r11145);
        mpfr_init(r11146);
        mpfr_init(r11147);
        mpfr_init_set_str(r11148, "-2.631708285375282e-224", 10, MPFR_RNDN);
        mpfr_init(r11149);
        mpfr_init_set_str(r11150, "1", 10, MPFR_RNDN);
        mpfr_init(r11151);
        mpfr_init(r11152);
        mpfr_init_set_str(r11153, "1.4821475551002457e-297", 10, MPFR_RNDN);
        mpfr_init(r11154);
        mpfr_init_set_str(r11155, "5.912666292838447e+288", 10, MPFR_RNDN);
        mpfr_init(r11156);
        mpfr_init(r11157);
        mpfr_init(r11158);
        mpfr_init(r11159);
        mpfr_init(r11160);
        mpfr_init(r11161);
        mpfr_init(r11162);
        mpfr_init(r11163);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11137, a1, MPFR_RNDN);
        mpfr_set_d(r11138, b1, MPFR_RNDN);
        mpfr_div(r11139, r11137, r11138, MPFR_RNDN);
        mpfr_set_d(r11140, a2, MPFR_RNDN);
        mpfr_mul(r11141, r11139, r11140, MPFR_RNDN);
        ;
        mpfr_set_si(r11143, mpfr_cmp(r11141, r11142) <= 0, MPFR_RNDN);
        mpfr_set_d(r11144, b2, MPFR_RNDN);
        mpfr_div(r11145, r11140, r11144, MPFR_RNDN);
        mpfr_div(r11146, r11145, r11138, MPFR_RNDN);
        mpfr_mul(r11147, r11137, r11146, MPFR_RNDN);
        ;
        mpfr_set_si(r11149, mpfr_cmp(r11141, r11148) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11151, r11150, r11144, MPFR_RNDN);
        mpfr_mul(r11152, r11141, r11151, MPFR_RNDN);
        ;
        mpfr_set_si(r11154, mpfr_cmp(r11141, r11153) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11156, mpfr_cmp(r11141, r11155) <= 0, MPFR_RNDN);
        mpfr_div(r11157, r11137, r11144, MPFR_RNDN);
        mpfr_div(r11158, r11140, r11138, MPFR_RNDN);
        mpfr_mul(r11159, r11157, r11158, MPFR_RNDN);
        if (mpfr_get_si(r11156, MPFR_RNDN)) { mpfr_set(r11160, r11152, MPFR_RNDN); } else { mpfr_set(r11160, r11159, MPFR_RNDN); };
        if (mpfr_get_si(r11154, MPFR_RNDN)) { mpfr_set(r11161, r11147, MPFR_RNDN); } else { mpfr_set(r11161, r11160, MPFR_RNDN); };
        if (mpfr_get_si(r11149, MPFR_RNDN)) { mpfr_set(r11162, r11152, MPFR_RNDN); } else { mpfr_set(r11162, r11161, MPFR_RNDN); };
        if (mpfr_get_si(r11143, MPFR_RNDN)) { mpfr_set(r11163, r11147, MPFR_RNDN); } else { mpfr_set(r11163, r11162, MPFR_RNDN); };
        return mpfr_get_d(r11163, MPFR_RNDN);
}

