#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 r11077 = a1;
        float r11078 = a2;
        float r11079 = r11077 * r11078;
        float r11080 = b1;
        float r11081 = b2;
        float r11082 = r11080 * r11081;
        float r11083 = r11079 / r11082;
        return r11083;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r11084 = a1;
        double r11085 = a2;
        double r11086 = r11084 * r11085;
        double r11087 = b1;
        double r11088 = b2;
        double r11089 = r11087 * r11088;
        double r11090 = r11086 / r11089;
        return r11090;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r11091 = a1;
        float r11092 = b1;
        float r11093 = r11091 / r11092;
        float r11094 = a2;
        float r11095 = b2;
        float r11096 = r11094 / r11095;
        float r11097 = r11093 * r11096;
        float r11098 = cbrt(r11097);
        float r11099 = r11098 * r11098;
        float r11100 = cbrt(r11093);
        float r11101 = r11100 * r11100;
        float r11102 = r11100 * r11096;
        float r11103 = r11101 * r11102;
        float r11104 = cbrt(r11103);
        float r11105 = r11099 * r11104;
        float r11106 = -1.0704377314425847e+304;
        bool r11107 = r11105 <= r11106;
        float r11108 = r11091 * r11094;
        float r11109 = r11092 * r11095;
        float r11110 = r11108 / r11109;
        float r11111 = -6.1980387051091e-318;
        bool r11112 = r11105 <= r11111;
        float r11113 = 2.5475085141972532e-297;
        bool r11114 = r11105 <= r11113;
        float r11115 = r11109 / r11094;
        float r11116 = r11091 / r11115;
        float r11117 = 4.0521763659347775e+294;
        bool r11118 = r11105 <= r11117;
        float r11119 = r11108 / r11092;
        float r11120 = r11119 / r11095;
        float r11121 = r11118 ? r11097 : r11120;
        float r11122 = r11114 ? r11116 : r11121;
        float r11123 = r11112 ? r11097 : r11122;
        float r11124 = r11107 ? r11110 : r11123;
        return r11124;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r11125 = a1;
        double r11126 = b1;
        double r11127 = r11125 / r11126;
        double r11128 = a2;
        double r11129 = b2;
        double r11130 = r11128 / r11129;
        double r11131 = r11127 * r11130;
        double r11132 = cbrt(r11131);
        double r11133 = r11132 * r11132;
        double r11134 = cbrt(r11127);
        double r11135 = r11134 * r11134;
        double r11136 = r11134 * r11130;
        double r11137 = r11135 * r11136;
        double r11138 = cbrt(r11137);
        double r11139 = r11133 * r11138;
        double r11140 = -1.0704377314425847e+304;
        bool r11141 = r11139 <= r11140;
        double r11142 = r11125 * r11128;
        double r11143 = r11126 * r11129;
        double r11144 = r11142 / r11143;
        double r11145 = -6.1980387051091e-318;
        bool r11146 = r11139 <= r11145;
        double r11147 = 2.5475085141972532e-297;
        bool r11148 = r11139 <= r11147;
        double r11149 = r11143 / r11128;
        double r11150 = r11125 / r11149;
        double r11151 = 4.0521763659347775e+294;
        bool r11152 = r11139 <= r11151;
        double r11153 = r11142 / r11126;
        double r11154 = r11153 / r11129;
        double r11155 = r11152 ? r11131 : r11154;
        double r11156 = r11148 ? r11150 : r11155;
        double r11157 = r11146 ? r11131 : r11156;
        double r11158 = r11141 ? r11144 : r11157;
        return r11158;
}

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 r11159, r11160, r11161, r11162, r11163, r11164, r11165;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r11159);
        mpfr_init(r11160);
        mpfr_init(r11161);
        mpfr_init(r11162);
        mpfr_init(r11163);
        mpfr_init(r11164);
        mpfr_init(r11165);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11159, a1, MPFR_RNDN);
        mpfr_set_d(r11160, a2, MPFR_RNDN);
        mpfr_mul(r11161, r11159, r11160, MPFR_RNDN);
        mpfr_set_d(r11162, b1, MPFR_RNDN);
        mpfr_set_d(r11163, b2, MPFR_RNDN);
        mpfr_mul(r11164, r11162, r11163, MPFR_RNDN);
        mpfr_div(r11165, r11161, r11164, MPFR_RNDN);
        return mpfr_get_d(r11165, MPFR_RNDN);
}

static mpfr_t r11166, r11167, r11168, r11169, r11170, r11171, r11172, r11173, r11174, r11175, r11176, r11177, r11178, r11179, r11180, r11181, r11182, r11183, r11184, r11185, r11186, r11187, r11188, r11189, r11190, r11191, r11192, r11193, r11194, r11195, r11196, r11197, r11198, r11199;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11166);
        mpfr_init(r11167);
        mpfr_init(r11168);
        mpfr_init(r11169);
        mpfr_init(r11170);
        mpfr_init(r11171);
        mpfr_init(r11172);
        mpfr_init(r11173);
        mpfr_init(r11174);
        mpfr_init(r11175);
        mpfr_init(r11176);
        mpfr_init(r11177);
        mpfr_init(r11178);
        mpfr_init(r11179);
        mpfr_init(r11180);
        mpfr_init_set_str(r11181, "-1.0704377314425847e+304", 10, MPFR_RNDN);
        mpfr_init(r11182);
        mpfr_init(r11183);
        mpfr_init(r11184);
        mpfr_init(r11185);
        mpfr_init_set_str(r11186, "-6.1980387051091e-318", 10, MPFR_RNDN);
        mpfr_init(r11187);
        mpfr_init_set_str(r11188, "2.5475085141972532e-297", 10, MPFR_RNDN);
        mpfr_init(r11189);
        mpfr_init(r11190);
        mpfr_init(r11191);
        mpfr_init_set_str(r11192, "4.0521763659347775e+294", 10, MPFR_RNDN);
        mpfr_init(r11193);
        mpfr_init(r11194);
        mpfr_init(r11195);
        mpfr_init(r11196);
        mpfr_init(r11197);
        mpfr_init(r11198);
        mpfr_init(r11199);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11166, a1, MPFR_RNDN);
        mpfr_set_d(r11167, b1, MPFR_RNDN);
        mpfr_div(r11168, r11166, r11167, MPFR_RNDN);
        mpfr_set_d(r11169, a2, MPFR_RNDN);
        mpfr_set_d(r11170, b2, MPFR_RNDN);
        mpfr_div(r11171, r11169, r11170, MPFR_RNDN);
        mpfr_mul(r11172, r11168, r11171, MPFR_RNDN);
        mpfr_cbrt(r11173, r11172, MPFR_RNDN);
        mpfr_mul(r11174, r11173, r11173, MPFR_RNDN);
        mpfr_cbrt(r11175, r11168, MPFR_RNDN);
        mpfr_mul(r11176, r11175, r11175, MPFR_RNDN);
        mpfr_mul(r11177, r11175, r11171, MPFR_RNDN);
        mpfr_mul(r11178, r11176, r11177, MPFR_RNDN);
        mpfr_cbrt(r11179, r11178, MPFR_RNDN);
        mpfr_mul(r11180, r11174, r11179, MPFR_RNDN);
        ;
        mpfr_set_si(r11182, mpfr_cmp(r11180, r11181) <= 0, MPFR_RNDN);
        mpfr_mul(r11183, r11166, r11169, MPFR_RNDN);
        mpfr_mul(r11184, r11167, r11170, MPFR_RNDN);
        mpfr_div(r11185, r11183, r11184, MPFR_RNDN);
        ;
        mpfr_set_si(r11187, mpfr_cmp(r11180, r11186) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11189, mpfr_cmp(r11180, r11188) <= 0, MPFR_RNDN);
        mpfr_div(r11190, r11184, r11169, MPFR_RNDN);
        mpfr_div(r11191, r11166, r11190, MPFR_RNDN);
        ;
        mpfr_set_si(r11193, mpfr_cmp(r11180, r11192) <= 0, MPFR_RNDN);
        mpfr_div(r11194, r11183, r11167, MPFR_RNDN);
        mpfr_div(r11195, r11194, r11170, MPFR_RNDN);
        if (mpfr_get_si(r11193, MPFR_RNDN)) { mpfr_set(r11196, r11172, MPFR_RNDN); } else { mpfr_set(r11196, r11195, MPFR_RNDN); };
        if (mpfr_get_si(r11189, MPFR_RNDN)) { mpfr_set(r11197, r11191, MPFR_RNDN); } else { mpfr_set(r11197, r11196, MPFR_RNDN); };
        if (mpfr_get_si(r11187, MPFR_RNDN)) { mpfr_set(r11198, r11172, MPFR_RNDN); } else { mpfr_set(r11198, r11197, MPFR_RNDN); };
        if (mpfr_get_si(r11182, MPFR_RNDN)) { mpfr_set(r11199, r11185, MPFR_RNDN); } else { mpfr_set(r11199, r11198, MPFR_RNDN); };
        return mpfr_get_d(r11199, MPFR_RNDN);
}

static mpfr_t r11200, r11201, r11202, r11203, r11204, r11205, r11206, r11207, r11208, r11209, r11210, r11211, r11212, r11213, r11214, r11215, r11216, r11217, r11218, r11219, r11220, r11221, r11222, r11223, r11224, r11225, r11226, r11227, r11228, r11229, r11230, r11231, r11232, r11233;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11200);
        mpfr_init(r11201);
        mpfr_init(r11202);
        mpfr_init(r11203);
        mpfr_init(r11204);
        mpfr_init(r11205);
        mpfr_init(r11206);
        mpfr_init(r11207);
        mpfr_init(r11208);
        mpfr_init(r11209);
        mpfr_init(r11210);
        mpfr_init(r11211);
        mpfr_init(r11212);
        mpfr_init(r11213);
        mpfr_init(r11214);
        mpfr_init_set_str(r11215, "-1.0704377314425847e+304", 10, MPFR_RNDN);
        mpfr_init(r11216);
        mpfr_init(r11217);
        mpfr_init(r11218);
        mpfr_init(r11219);
        mpfr_init_set_str(r11220, "-6.1980387051091e-318", 10, MPFR_RNDN);
        mpfr_init(r11221);
        mpfr_init_set_str(r11222, "2.5475085141972532e-297", 10, MPFR_RNDN);
        mpfr_init(r11223);
        mpfr_init(r11224);
        mpfr_init(r11225);
        mpfr_init_set_str(r11226, "4.0521763659347775e+294", 10, MPFR_RNDN);
        mpfr_init(r11227);
        mpfr_init(r11228);
        mpfr_init(r11229);
        mpfr_init(r11230);
        mpfr_init(r11231);
        mpfr_init(r11232);
        mpfr_init(r11233);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11200, a1, MPFR_RNDN);
        mpfr_set_d(r11201, b1, MPFR_RNDN);
        mpfr_div(r11202, r11200, r11201, MPFR_RNDN);
        mpfr_set_d(r11203, a2, MPFR_RNDN);
        mpfr_set_d(r11204, b2, MPFR_RNDN);
        mpfr_div(r11205, r11203, r11204, MPFR_RNDN);
        mpfr_mul(r11206, r11202, r11205, MPFR_RNDN);
        mpfr_cbrt(r11207, r11206, MPFR_RNDN);
        mpfr_mul(r11208, r11207, r11207, MPFR_RNDN);
        mpfr_cbrt(r11209, r11202, MPFR_RNDN);
        mpfr_mul(r11210, r11209, r11209, MPFR_RNDN);
        mpfr_mul(r11211, r11209, r11205, MPFR_RNDN);
        mpfr_mul(r11212, r11210, r11211, MPFR_RNDN);
        mpfr_cbrt(r11213, r11212, MPFR_RNDN);
        mpfr_mul(r11214, r11208, r11213, MPFR_RNDN);
        ;
        mpfr_set_si(r11216, mpfr_cmp(r11214, r11215) <= 0, MPFR_RNDN);
        mpfr_mul(r11217, r11200, r11203, MPFR_RNDN);
        mpfr_mul(r11218, r11201, r11204, MPFR_RNDN);
        mpfr_div(r11219, r11217, r11218, MPFR_RNDN);
        ;
        mpfr_set_si(r11221, mpfr_cmp(r11214, r11220) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r11223, mpfr_cmp(r11214, r11222) <= 0, MPFR_RNDN);
        mpfr_div(r11224, r11218, r11203, MPFR_RNDN);
        mpfr_div(r11225, r11200, r11224, MPFR_RNDN);
        ;
        mpfr_set_si(r11227, mpfr_cmp(r11214, r11226) <= 0, MPFR_RNDN);
        mpfr_div(r11228, r11217, r11201, MPFR_RNDN);
        mpfr_div(r11229, r11228, r11204, MPFR_RNDN);
        if (mpfr_get_si(r11227, MPFR_RNDN)) { mpfr_set(r11230, r11206, MPFR_RNDN); } else { mpfr_set(r11230, r11229, MPFR_RNDN); };
        if (mpfr_get_si(r11223, MPFR_RNDN)) { mpfr_set(r11231, r11225, MPFR_RNDN); } else { mpfr_set(r11231, r11230, MPFR_RNDN); };
        if (mpfr_get_si(r11221, MPFR_RNDN)) { mpfr_set(r11232, r11206, MPFR_RNDN); } else { mpfr_set(r11232, r11231, MPFR_RNDN); };
        if (mpfr_get_si(r11216, MPFR_RNDN)) { mpfr_set(r11233, r11219, MPFR_RNDN); } else { mpfr_set(r11233, r11232, MPFR_RNDN); };
        return mpfr_get_d(r11233, MPFR_RNDN);
}

