#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 r27106 = a1;
        float r27107 = a2;
        float r27108 = r27106 * r27107;
        float r27109 = b1;
        float r27110 = b2;
        float r27111 = r27109 * r27110;
        float r27112 = r27108 / r27111;
        return r27112;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r27113 = a1;
        double r27114 = a2;
        double r27115 = r27113 * r27114;
        double r27116 = b1;
        double r27117 = b2;
        double r27118 = r27116 * r27117;
        double r27119 = r27115 / r27118;
        return r27119;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r27120 = b1;
        float r27121 = b2;
        float r27122 = r27120 * r27121;
        float r27123 = a1;
        float r27124 = r27122 / r27123;
        float r27125 = a2;
        float r27126 = r27124 / r27125;
        float r27127 = -1.6951281669341966e+302;
        bool r27128 = r27126 <= r27127;
        float r27129 = r27120 / r27125;
        float r27130 = r27123 / r27129;
        float r27131 = r27130 / r27121;
        float r27132 = -5.324150171986738e-256;
        bool r27133 = r27126 <= r27132;
        float r27134 = 1;
        float r27135 = r27134 / r27126;
        float r27136 = 1.4509427417667148e-298;
        bool r27137 = r27126 <= r27136;
        float r27138 = 4.406970769445578e+306;
        bool r27139 = r27126 <= r27138;
        float r27140 = r27123 * r27125;
        float r27141 = r27140 / r27120;
        float r27142 = r27141 / r27121;
        float r27143 = sqrt(r27142);
        float r27144 = r27143 * r27143;
        float r27145 = r27139 ? r27135 : r27144;
        float r27146 = r27137 ? r27131 : r27145;
        float r27147 = r27133 ? r27135 : r27146;
        float r27148 = r27128 ? r27131 : r27147;
        return r27148;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r27149 = b1;
        double r27150 = b2;
        double r27151 = r27149 * r27150;
        double r27152 = a1;
        double r27153 = r27151 / r27152;
        double r27154 = a2;
        double r27155 = r27153 / r27154;
        double r27156 = -1.6951281669341966e+302;
        bool r27157 = r27155 <= r27156;
        double r27158 = r27149 / r27154;
        double r27159 = r27152 / r27158;
        double r27160 = r27159 / r27150;
        double r27161 = -5.324150171986738e-256;
        bool r27162 = r27155 <= r27161;
        double r27163 = 1;
        double r27164 = r27163 / r27155;
        double r27165 = 1.4509427417667148e-298;
        bool r27166 = r27155 <= r27165;
        double r27167 = 4.406970769445578e+306;
        bool r27168 = r27155 <= r27167;
        double r27169 = r27152 * r27154;
        double r27170 = r27169 / r27149;
        double r27171 = r27170 / r27150;
        double r27172 = sqrt(r27171);
        double r27173 = r27172 * r27172;
        double r27174 = r27168 ? r27164 : r27173;
        double r27175 = r27166 ? r27160 : r27174;
        double r27176 = r27162 ? r27164 : r27175;
        double r27177 = r27157 ? r27160 : r27176;
        return r27177;
}

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 r27178, r27179, r27180, r27181, r27182, r27183, r27184;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27178);
        mpfr_init(r27179);
        mpfr_init(r27180);
        mpfr_init(r27181);
        mpfr_init(r27182);
        mpfr_init(r27183);
        mpfr_init(r27184);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27178, a1, MPFR_RNDN);
        mpfr_set_d(r27179, a2, MPFR_RNDN);
        mpfr_mul(r27180, r27178, r27179, MPFR_RNDN);
        mpfr_set_d(r27181, b1, MPFR_RNDN);
        mpfr_set_d(r27182, b2, MPFR_RNDN);
        mpfr_mul(r27183, r27181, r27182, MPFR_RNDN);
        mpfr_div(r27184, r27180, r27183, MPFR_RNDN);
        return mpfr_get_d(r27184, MPFR_RNDN);
}

static mpfr_t r27185, r27186, r27187, r27188, r27189, r27190, r27191, r27192, r27193, r27194, r27195, r27196, r27197, r27198, r27199, r27200, r27201, r27202, r27203, r27204, r27205, r27206, r27207, r27208, r27209, r27210, r27211, r27212, r27213;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27185);
        mpfr_init(r27186);
        mpfr_init(r27187);
        mpfr_init(r27188);
        mpfr_init(r27189);
        mpfr_init(r27190);
        mpfr_init(r27191);
        mpfr_init_set_str(r27192, "-1.6951281669341966e+302", 10, MPFR_RNDN);
        mpfr_init(r27193);
        mpfr_init(r27194);
        mpfr_init(r27195);
        mpfr_init(r27196);
        mpfr_init_set_str(r27197, "-5.324150171986738e-256", 10, MPFR_RNDN);
        mpfr_init(r27198);
        mpfr_init_set_str(r27199, "1", 10, MPFR_RNDN);
        mpfr_init(r27200);
        mpfr_init_set_str(r27201, "1.4509427417667148e-298", 10, MPFR_RNDN);
        mpfr_init(r27202);
        mpfr_init_set_str(r27203, "4.406970769445578e+306", 10, MPFR_RNDN);
        mpfr_init(r27204);
        mpfr_init(r27205);
        mpfr_init(r27206);
        mpfr_init(r27207);
        mpfr_init(r27208);
        mpfr_init(r27209);
        mpfr_init(r27210);
        mpfr_init(r27211);
        mpfr_init(r27212);
        mpfr_init(r27213);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27185, b1, MPFR_RNDN);
        mpfr_set_d(r27186, b2, MPFR_RNDN);
        mpfr_mul(r27187, r27185, r27186, MPFR_RNDN);
        mpfr_set_d(r27188, a1, MPFR_RNDN);
        mpfr_div(r27189, r27187, r27188, MPFR_RNDN);
        mpfr_set_d(r27190, a2, MPFR_RNDN);
        mpfr_div(r27191, r27189, r27190, MPFR_RNDN);
        ;
        mpfr_set_si(r27193, mpfr_cmp(r27191, r27192) <= 0, MPFR_RNDN);
        mpfr_div(r27194, r27185, r27190, MPFR_RNDN);
        mpfr_div(r27195, r27188, r27194, MPFR_RNDN);
        mpfr_div(r27196, r27195, r27186, MPFR_RNDN);
        ;
        mpfr_set_si(r27198, mpfr_cmp(r27191, r27197) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27200, r27199, r27191, MPFR_RNDN);
        ;
        mpfr_set_si(r27202, mpfr_cmp(r27191, r27201) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27204, mpfr_cmp(r27191, r27203) <= 0, MPFR_RNDN);
        mpfr_mul(r27205, r27188, r27190, MPFR_RNDN);
        mpfr_div(r27206, r27205, r27185, MPFR_RNDN);
        mpfr_div(r27207, r27206, r27186, MPFR_RNDN);
        mpfr_sqrt(r27208, r27207, MPFR_RNDN);
        mpfr_mul(r27209, r27208, r27208, MPFR_RNDN);
        if (mpfr_get_si(r27204, MPFR_RNDN)) { mpfr_set(r27210, r27200, MPFR_RNDN); } else { mpfr_set(r27210, r27209, MPFR_RNDN); };
        if (mpfr_get_si(r27202, MPFR_RNDN)) { mpfr_set(r27211, r27196, MPFR_RNDN); } else { mpfr_set(r27211, r27210, MPFR_RNDN); };
        if (mpfr_get_si(r27198, MPFR_RNDN)) { mpfr_set(r27212, r27200, MPFR_RNDN); } else { mpfr_set(r27212, r27211, MPFR_RNDN); };
        if (mpfr_get_si(r27193, MPFR_RNDN)) { mpfr_set(r27213, r27196, MPFR_RNDN); } else { mpfr_set(r27213, r27212, MPFR_RNDN); };
        return mpfr_get_d(r27213, MPFR_RNDN);
}

static mpfr_t r27214, r27215, r27216, r27217, r27218, r27219, r27220, r27221, r27222, r27223, r27224, r27225, r27226, r27227, r27228, r27229, r27230, r27231, r27232, r27233, r27234, r27235, r27236, r27237, r27238, r27239, r27240, r27241, r27242;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27214);
        mpfr_init(r27215);
        mpfr_init(r27216);
        mpfr_init(r27217);
        mpfr_init(r27218);
        mpfr_init(r27219);
        mpfr_init(r27220);
        mpfr_init_set_str(r27221, "-1.6951281669341966e+302", 10, MPFR_RNDN);
        mpfr_init(r27222);
        mpfr_init(r27223);
        mpfr_init(r27224);
        mpfr_init(r27225);
        mpfr_init_set_str(r27226, "-5.324150171986738e-256", 10, MPFR_RNDN);
        mpfr_init(r27227);
        mpfr_init_set_str(r27228, "1", 10, MPFR_RNDN);
        mpfr_init(r27229);
        mpfr_init_set_str(r27230, "1.4509427417667148e-298", 10, MPFR_RNDN);
        mpfr_init(r27231);
        mpfr_init_set_str(r27232, "4.406970769445578e+306", 10, MPFR_RNDN);
        mpfr_init(r27233);
        mpfr_init(r27234);
        mpfr_init(r27235);
        mpfr_init(r27236);
        mpfr_init(r27237);
        mpfr_init(r27238);
        mpfr_init(r27239);
        mpfr_init(r27240);
        mpfr_init(r27241);
        mpfr_init(r27242);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27214, b1, MPFR_RNDN);
        mpfr_set_d(r27215, b2, MPFR_RNDN);
        mpfr_mul(r27216, r27214, r27215, MPFR_RNDN);
        mpfr_set_d(r27217, a1, MPFR_RNDN);
        mpfr_div(r27218, r27216, r27217, MPFR_RNDN);
        mpfr_set_d(r27219, a2, MPFR_RNDN);
        mpfr_div(r27220, r27218, r27219, MPFR_RNDN);
        ;
        mpfr_set_si(r27222, mpfr_cmp(r27220, r27221) <= 0, MPFR_RNDN);
        mpfr_div(r27223, r27214, r27219, MPFR_RNDN);
        mpfr_div(r27224, r27217, r27223, MPFR_RNDN);
        mpfr_div(r27225, r27224, r27215, MPFR_RNDN);
        ;
        mpfr_set_si(r27227, mpfr_cmp(r27220, r27226) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27229, r27228, r27220, MPFR_RNDN);
        ;
        mpfr_set_si(r27231, mpfr_cmp(r27220, r27230) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27233, mpfr_cmp(r27220, r27232) <= 0, MPFR_RNDN);
        mpfr_mul(r27234, r27217, r27219, MPFR_RNDN);
        mpfr_div(r27235, r27234, r27214, MPFR_RNDN);
        mpfr_div(r27236, r27235, r27215, MPFR_RNDN);
        mpfr_sqrt(r27237, r27236, MPFR_RNDN);
        mpfr_mul(r27238, r27237, r27237, MPFR_RNDN);
        if (mpfr_get_si(r27233, MPFR_RNDN)) { mpfr_set(r27239, r27229, MPFR_RNDN); } else { mpfr_set(r27239, r27238, MPFR_RNDN); };
        if (mpfr_get_si(r27231, MPFR_RNDN)) { mpfr_set(r27240, r27225, MPFR_RNDN); } else { mpfr_set(r27240, r27239, MPFR_RNDN); };
        if (mpfr_get_si(r27227, MPFR_RNDN)) { mpfr_set(r27241, r27229, MPFR_RNDN); } else { mpfr_set(r27241, r27240, MPFR_RNDN); };
        if (mpfr_get_si(r27222, MPFR_RNDN)) { mpfr_set(r27242, r27225, MPFR_RNDN); } else { mpfr_set(r27242, r27241, MPFR_RNDN); };
        return mpfr_get_d(r27242, MPFR_RNDN);
}

