#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 r27130 = a1;
        float r27131 = a2;
        float r27132 = r27130 * r27131;
        float r27133 = b1;
        float r27134 = b2;
        float r27135 = r27133 * r27134;
        float r27136 = r27132 / r27135;
        return r27136;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r27137 = a1;
        double r27138 = a2;
        double r27139 = r27137 * r27138;
        double r27140 = b1;
        double r27141 = b2;
        double r27142 = r27140 * r27141;
        double r27143 = r27139 / r27142;
        return r27143;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r27144 = a1;
        float r27145 = a2;
        float r27146 = r27144 * r27145;
        float r27147 = b1;
        float r27148 = r27146 / r27147;
        float r27149 = -1.551139534245733e+241;
        bool r27150 = r27148 <= r27149;
        float r27151 = b2;
        float r27152 = r27151 / r27144;
        float r27153 = r27152 * r27147;
        float r27154 = r27145 / r27153;
        float r27155 = -4.459984812668878e-144;
        bool r27156 = r27148 <= r27155;
        float r27157 = 1;
        float r27158 = r27151 / r27148;
        float r27159 = r27157 / r27158;
        float r27160 = 5.0394695875807e-322;
        bool r27161 = r27148 <= r27160;
        float r27162 = 1.0141203643459555e+306;
        bool r27163 = r27148 <= r27162;
        float r27164 = r27163 ? r27159 : r27154;
        float r27165 = r27161 ? r27154 : r27164;
        float r27166 = r27156 ? r27159 : r27165;
        float r27167 = r27150 ? r27154 : r27166;
        return r27167;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r27168 = a1;
        double r27169 = a2;
        double r27170 = r27168 * r27169;
        double r27171 = b1;
        double r27172 = r27170 / r27171;
        double r27173 = -1.551139534245733e+241;
        bool r27174 = r27172 <= r27173;
        double r27175 = b2;
        double r27176 = r27175 / r27168;
        double r27177 = r27176 * r27171;
        double r27178 = r27169 / r27177;
        double r27179 = -4.459984812668878e-144;
        bool r27180 = r27172 <= r27179;
        double r27181 = 1;
        double r27182 = r27175 / r27172;
        double r27183 = r27181 / r27182;
        double r27184 = 5.0394695875807e-322;
        bool r27185 = r27172 <= r27184;
        double r27186 = 1.0141203643459555e+306;
        bool r27187 = r27172 <= r27186;
        double r27188 = r27187 ? r27183 : r27178;
        double r27189 = r27185 ? r27178 : r27188;
        double r27190 = r27180 ? r27183 : r27189;
        double r27191 = r27174 ? r27178 : r27190;
        return r27191;
}

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 r27192, r27193, r27194, r27195, r27196, r27197, r27198;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27192);
        mpfr_init(r27193);
        mpfr_init(r27194);
        mpfr_init(r27195);
        mpfr_init(r27196);
        mpfr_init(r27197);
        mpfr_init(r27198);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27192, a1, MPFR_RNDN);
        mpfr_set_d(r27193, a2, MPFR_RNDN);
        mpfr_mul(r27194, r27192, r27193, MPFR_RNDN);
        mpfr_set_d(r27195, b1, MPFR_RNDN);
        mpfr_set_d(r27196, b2, MPFR_RNDN);
        mpfr_mul(r27197, r27195, r27196, MPFR_RNDN);
        mpfr_div(r27198, r27194, r27197, MPFR_RNDN);
        return mpfr_get_d(r27198, MPFR_RNDN);
}

static mpfr_t r27199, r27200, r27201, r27202, r27203, r27204, r27205, r27206, r27207, r27208, r27209, r27210, r27211, r27212, r27213, r27214, r27215, r27216, r27217, r27218, r27219, r27220, r27221, r27222;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27199);
        mpfr_init(r27200);
        mpfr_init(r27201);
        mpfr_init(r27202);
        mpfr_init(r27203);
        mpfr_init_set_str(r27204, "-1.551139534245733e+241", 10, MPFR_RNDN);
        mpfr_init(r27205);
        mpfr_init(r27206);
        mpfr_init(r27207);
        mpfr_init(r27208);
        mpfr_init(r27209);
        mpfr_init_set_str(r27210, "-4.459984812668878e-144", 10, MPFR_RNDN);
        mpfr_init(r27211);
        mpfr_init_set_str(r27212, "1", 10, MPFR_RNDN);
        mpfr_init(r27213);
        mpfr_init(r27214);
        mpfr_init_set_str(r27215, "5.0394695875807e-322", 10, MPFR_RNDN);
        mpfr_init(r27216);
        mpfr_init_set_str(r27217, "1.0141203643459555e+306", 10, MPFR_RNDN);
        mpfr_init(r27218);
        mpfr_init(r27219);
        mpfr_init(r27220);
        mpfr_init(r27221);
        mpfr_init(r27222);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27199, a1, MPFR_RNDN);
        mpfr_set_d(r27200, a2, MPFR_RNDN);
        mpfr_mul(r27201, r27199, r27200, MPFR_RNDN);
        mpfr_set_d(r27202, b1, MPFR_RNDN);
        mpfr_div(r27203, r27201, r27202, MPFR_RNDN);
        ;
        mpfr_set_si(r27205, mpfr_cmp(r27203, r27204) <= 0, MPFR_RNDN);
        mpfr_set_d(r27206, b2, MPFR_RNDN);
        mpfr_div(r27207, r27206, r27199, MPFR_RNDN);
        mpfr_mul(r27208, r27207, r27202, MPFR_RNDN);
        mpfr_div(r27209, r27200, r27208, MPFR_RNDN);
        ;
        mpfr_set_si(r27211, mpfr_cmp(r27203, r27210) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27213, r27206, r27203, MPFR_RNDN);
        mpfr_div(r27214, r27212, r27213, MPFR_RNDN);
        ;
        mpfr_set_si(r27216, mpfr_cmp(r27203, r27215) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27218, mpfr_cmp(r27203, r27217) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27218, MPFR_RNDN)) { mpfr_set(r27219, r27214, MPFR_RNDN); } else { mpfr_set(r27219, r27209, MPFR_RNDN); };
        if (mpfr_get_si(r27216, MPFR_RNDN)) { mpfr_set(r27220, r27209, MPFR_RNDN); } else { mpfr_set(r27220, r27219, MPFR_RNDN); };
        if (mpfr_get_si(r27211, MPFR_RNDN)) { mpfr_set(r27221, r27214, MPFR_RNDN); } else { mpfr_set(r27221, r27220, MPFR_RNDN); };
        if (mpfr_get_si(r27205, MPFR_RNDN)) { mpfr_set(r27222, r27209, MPFR_RNDN); } else { mpfr_set(r27222, r27221, MPFR_RNDN); };
        return mpfr_get_d(r27222, MPFR_RNDN);
}

static mpfr_t r27223, r27224, r27225, r27226, r27227, r27228, r27229, r27230, r27231, r27232, r27233, r27234, r27235, r27236, r27237, r27238, r27239, r27240, r27241, r27242, r27243, r27244, r27245, r27246;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27223);
        mpfr_init(r27224);
        mpfr_init(r27225);
        mpfr_init(r27226);
        mpfr_init(r27227);
        mpfr_init_set_str(r27228, "-1.551139534245733e+241", 10, MPFR_RNDN);
        mpfr_init(r27229);
        mpfr_init(r27230);
        mpfr_init(r27231);
        mpfr_init(r27232);
        mpfr_init(r27233);
        mpfr_init_set_str(r27234, "-4.459984812668878e-144", 10, MPFR_RNDN);
        mpfr_init(r27235);
        mpfr_init_set_str(r27236, "1", 10, MPFR_RNDN);
        mpfr_init(r27237);
        mpfr_init(r27238);
        mpfr_init_set_str(r27239, "5.0394695875807e-322", 10, MPFR_RNDN);
        mpfr_init(r27240);
        mpfr_init_set_str(r27241, "1.0141203643459555e+306", 10, MPFR_RNDN);
        mpfr_init(r27242);
        mpfr_init(r27243);
        mpfr_init(r27244);
        mpfr_init(r27245);
        mpfr_init(r27246);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27223, a1, MPFR_RNDN);
        mpfr_set_d(r27224, a2, MPFR_RNDN);
        mpfr_mul(r27225, r27223, r27224, MPFR_RNDN);
        mpfr_set_d(r27226, b1, MPFR_RNDN);
        mpfr_div(r27227, r27225, r27226, MPFR_RNDN);
        ;
        mpfr_set_si(r27229, mpfr_cmp(r27227, r27228) <= 0, MPFR_RNDN);
        mpfr_set_d(r27230, b2, MPFR_RNDN);
        mpfr_div(r27231, r27230, r27223, MPFR_RNDN);
        mpfr_mul(r27232, r27231, r27226, MPFR_RNDN);
        mpfr_div(r27233, r27224, r27232, MPFR_RNDN);
        ;
        mpfr_set_si(r27235, mpfr_cmp(r27227, r27234) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27237, r27230, r27227, MPFR_RNDN);
        mpfr_div(r27238, r27236, r27237, MPFR_RNDN);
        ;
        mpfr_set_si(r27240, mpfr_cmp(r27227, r27239) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27242, mpfr_cmp(r27227, r27241) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27242, MPFR_RNDN)) { mpfr_set(r27243, r27238, MPFR_RNDN); } else { mpfr_set(r27243, r27233, MPFR_RNDN); };
        if (mpfr_get_si(r27240, MPFR_RNDN)) { mpfr_set(r27244, r27233, MPFR_RNDN); } else { mpfr_set(r27244, r27243, MPFR_RNDN); };
        if (mpfr_get_si(r27235, MPFR_RNDN)) { mpfr_set(r27245, r27238, MPFR_RNDN); } else { mpfr_set(r27245, r27244, MPFR_RNDN); };
        if (mpfr_get_si(r27229, MPFR_RNDN)) { mpfr_set(r27246, r27233, MPFR_RNDN); } else { mpfr_set(r27246, r27245, MPFR_RNDN); };
        return mpfr_get_d(r27246, MPFR_RNDN);
}

