#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 r11026 = a1;
        float r11027 = a2;
        float r11028 = r11026 * r11027;
        float r11029 = b1;
        float r11030 = b2;
        float r11031 = r11029 * r11030;
        float r11032 = r11028 / r11031;
        return r11032;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r11033 = a1;
        double r11034 = a2;
        double r11035 = r11033 * r11034;
        double r11036 = b1;
        double r11037 = b2;
        double r11038 = r11036 * r11037;
        double r11039 = r11035 / r11038;
        return r11039;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r11040 = a1;
        float r11041 = b1;
        float r11042 = r11040 / r11041;
        float r11043 = a2;
        float r11044 = b2;
        float r11045 = r11043 / r11044;
        float r11046 = cbrt(r11045);
        float r11047 = r11046 * r11046;
        float r11048 = r11042 * r11047;
        float r11049 = r11048 * r11046;
        float r11050 = -2.3363736251944115e+289;
        bool r11051 = r11049 <= r11050;
        float r11052 = r11040 * r11043;
        float r11053 = r11041 * r11044;
        float r11054 = r11052 / r11053;
        float r11055 = -6.1980387051091e-318;
        bool r11056 = r11049 <= r11055;
        float r11057 = r11042 * r11045;
        float r11058 = 4.0826872913750024e-308;
        bool r11059 = r11049 <= r11058;
        float r11060 = r11053 / r11043;
        float r11061 = r11040 / r11060;
        float r11062 = 8.71237314266599e+300;
        bool r11063 = r11049 <= r11062;
        float r11064 = r11052 / r11041;
        float r11065 = r11064 / r11044;
        float r11066 = r11063 ? r11057 : r11065;
        float r11067 = r11059 ? r11061 : r11066;
        float r11068 = r11056 ? r11057 : r11067;
        float r11069 = r11051 ? r11054 : r11068;
        return r11069;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r11070 = a1;
        double r11071 = b1;
        double r11072 = r11070 / r11071;
        double r11073 = a2;
        double r11074 = b2;
        double r11075 = r11073 / r11074;
        double r11076 = cbrt(r11075);
        double r11077 = r11076 * r11076;
        double r11078 = r11072 * r11077;
        double r11079 = r11078 * r11076;
        double r11080 = -2.3363736251944115e+289;
        bool r11081 = r11079 <= r11080;
        double r11082 = r11070 * r11073;
        double r11083 = r11071 * r11074;
        double r11084 = r11082 / r11083;
        double r11085 = -6.1980387051091e-318;
        bool r11086 = r11079 <= r11085;
        double r11087 = r11072 * r11075;
        double r11088 = 4.0826872913750024e-308;
        bool r11089 = r11079 <= r11088;
        double r11090 = r11083 / r11073;
        double r11091 = r11070 / r11090;
        double r11092 = 8.71237314266599e+300;
        bool r11093 = r11079 <= r11092;
        double r11094 = r11082 / r11071;
        double r11095 = r11094 / r11074;
        double r11096 = r11093 ? r11087 : r11095;
        double r11097 = r11089 ? r11091 : r11096;
        double r11098 = r11086 ? r11087 : r11097;
        double r11099 = r11081 ? r11084 : r11098;
        return r11099;
}

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 r11100, r11101, r11102, r11103, r11104, r11105, r11106;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11100);
        mpfr_init(r11101);
        mpfr_init(r11102);
        mpfr_init(r11103);
        mpfr_init(r11104);
        mpfr_init(r11105);
        mpfr_init(r11106);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11100, a1, MPFR_RNDN);
        mpfr_set_d(r11101, a2, MPFR_RNDN);
        mpfr_mul(r11102, r11100, r11101, MPFR_RNDN);
        mpfr_set_d(r11103, b1, MPFR_RNDN);
        mpfr_set_d(r11104, b2, MPFR_RNDN);
        mpfr_mul(r11105, r11103, r11104, MPFR_RNDN);
        mpfr_div(r11106, r11102, r11105, MPFR_RNDN);
        return mpfr_get_d(r11106, MPFR_RNDN);
}

static mpfr_t r11107, r11108, r11109, 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(r11107);
        mpfr_init(r11108);
        mpfr_init(r11109);
        mpfr_init(r11110);
        mpfr_init(r11111);
        mpfr_init(r11112);
        mpfr_init(r11113);
        mpfr_init(r11114);
        mpfr_init(r11115);
        mpfr_init(r11116);
        mpfr_init_set_str(r11117, "-2.3363736251944115e+289", 10, MPFR_RNDN);
        mpfr_init(r11118);
        mpfr_init(r11119);
        mpfr_init(r11120);
        mpfr_init(r11121);
        mpfr_init_set_str(r11122, "-6.1980387051091e-318", 10, MPFR_RNDN);
        mpfr_init(r11123);
        mpfr_init(r11124);
        mpfr_init_set_str(r11125, "4.0826872913750024e-308", 10, MPFR_RNDN);
        mpfr_init(r11126);
        mpfr_init(r11127);
        mpfr_init(r11128);
        mpfr_init_set_str(r11129, "8.71237314266599e+300", 10, MPFR_RNDN);
        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(r11107, a1, MPFR_RNDN);
        mpfr_set_d(r11108, b1, MPFR_RNDN);
        mpfr_div(r11109, r11107, r11108, MPFR_RNDN);
        mpfr_set_d(r11110, a2, MPFR_RNDN);
        mpfr_set_d(r11111, b2, MPFR_RNDN);
        mpfr_div(r11112, r11110, r11111, MPFR_RNDN);
        mpfr_cbrt(r11113, r11112, MPFR_RNDN);
        mpfr_mul(r11114, r11113, r11113, MPFR_RNDN);
        mpfr_mul(r11115, r11109, r11114, MPFR_RNDN);
        mpfr_mul(r11116, r11115, r11113, MPFR_RNDN);
        ;
        mpfr_set_si(r11118, mpfr_cmp(r11116, r11117) <= 0, MPFR_RNDN);
        mpfr_mul(r11119, r11107, r11110, MPFR_RNDN);
        mpfr_mul(r11120, r11108, r11111, MPFR_RNDN);
        mpfr_div(r11121, r11119, r11120, MPFR_RNDN);
        ;
        mpfr_set_si(r11123, mpfr_cmp(r11116, r11122) <= 0, MPFR_RNDN);
        mpfr_mul(r11124, r11109, r11112, MPFR_RNDN);
        ;
        mpfr_set_si(r11126, mpfr_cmp(r11116, r11125) <= 0, MPFR_RNDN);
        mpfr_div(r11127, r11120, r11110, MPFR_RNDN);
        mpfr_div(r11128, r11107, r11127, MPFR_RNDN);
        ;
        mpfr_set_si(r11130, mpfr_cmp(r11116, r11129) <= 0, MPFR_RNDN);
        mpfr_div(r11131, r11119, r11108, MPFR_RNDN);
        mpfr_div(r11132, r11131, r11111, MPFR_RNDN);
        if (mpfr_get_si(r11130, MPFR_RNDN)) { mpfr_set(r11133, r11124, MPFR_RNDN); } else { mpfr_set(r11133, r11132, MPFR_RNDN); };
        if (mpfr_get_si(r11126, MPFR_RNDN)) { mpfr_set(r11134, r11128, MPFR_RNDN); } else { mpfr_set(r11134, r11133, MPFR_RNDN); };
        if (mpfr_get_si(r11123, MPFR_RNDN)) { mpfr_set(r11135, r11124, MPFR_RNDN); } else { mpfr_set(r11135, r11134, MPFR_RNDN); };
        if (mpfr_get_si(r11118, MPFR_RNDN)) { mpfr_set(r11136, r11121, 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, r11164, r11165, r11166;

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(r11142);
        mpfr_init(r11143);
        mpfr_init(r11144);
        mpfr_init(r11145);
        mpfr_init(r11146);
        mpfr_init_set_str(r11147, "-2.3363736251944115e+289", 10, MPFR_RNDN);
        mpfr_init(r11148);
        mpfr_init(r11149);
        mpfr_init(r11150);
        mpfr_init(r11151);
        mpfr_init_set_str(r11152, "-6.1980387051091e-318", 10, MPFR_RNDN);
        mpfr_init(r11153);
        mpfr_init(r11154);
        mpfr_init_set_str(r11155, "4.0826872913750024e-308", 10, MPFR_RNDN);
        mpfr_init(r11156);
        mpfr_init(r11157);
        mpfr_init(r11158);
        mpfr_init_set_str(r11159, "8.71237314266599e+300", 10, MPFR_RNDN);
        mpfr_init(r11160);
        mpfr_init(r11161);
        mpfr_init(r11162);
        mpfr_init(r11163);
        mpfr_init(r11164);
        mpfr_init(r11165);
        mpfr_init(r11166);
}

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_set_d(r11141, b2, MPFR_RNDN);
        mpfr_div(r11142, r11140, r11141, MPFR_RNDN);
        mpfr_cbrt(r11143, r11142, MPFR_RNDN);
        mpfr_mul(r11144, r11143, r11143, MPFR_RNDN);
        mpfr_mul(r11145, r11139, r11144, MPFR_RNDN);
        mpfr_mul(r11146, r11145, r11143, MPFR_RNDN);
        ;
        mpfr_set_si(r11148, mpfr_cmp(r11146, r11147) <= 0, MPFR_RNDN);
        mpfr_mul(r11149, r11137, r11140, MPFR_RNDN);
        mpfr_mul(r11150, r11138, r11141, MPFR_RNDN);
        mpfr_div(r11151, r11149, r11150, MPFR_RNDN);
        ;
        mpfr_set_si(r11153, mpfr_cmp(r11146, r11152) <= 0, MPFR_RNDN);
        mpfr_mul(r11154, r11139, r11142, MPFR_RNDN);
        ;
        mpfr_set_si(r11156, mpfr_cmp(r11146, r11155) <= 0, MPFR_RNDN);
        mpfr_div(r11157, r11150, r11140, MPFR_RNDN);
        mpfr_div(r11158, r11137, r11157, MPFR_RNDN);
        ;
        mpfr_set_si(r11160, mpfr_cmp(r11146, r11159) <= 0, MPFR_RNDN);
        mpfr_div(r11161, r11149, r11138, MPFR_RNDN);
        mpfr_div(r11162, r11161, r11141, MPFR_RNDN);
        if (mpfr_get_si(r11160, MPFR_RNDN)) { mpfr_set(r11163, r11154, MPFR_RNDN); } else { mpfr_set(r11163, r11162, MPFR_RNDN); };
        if (mpfr_get_si(r11156, MPFR_RNDN)) { mpfr_set(r11164, r11158, MPFR_RNDN); } else { mpfr_set(r11164, r11163, MPFR_RNDN); };
        if (mpfr_get_si(r11153, MPFR_RNDN)) { mpfr_set(r11165, r11154, MPFR_RNDN); } else { mpfr_set(r11165, r11164, MPFR_RNDN); };
        if (mpfr_get_si(r11148, MPFR_RNDN)) { mpfr_set(r11166, r11151, MPFR_RNDN); } else { mpfr_set(r11166, r11165, MPFR_RNDN); };
        return mpfr_get_d(r11166, MPFR_RNDN);
}

