#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 r19537 = a1;
        float r19538 = a2;
        float r19539 = r19537 * r19538;
        float r19540 = b1;
        float r19541 = b2;
        float r19542 = r19540 * r19541;
        float r19543 = r19539 / r19542;
        return r19543;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r19544 = a1;
        double r19545 = a2;
        double r19546 = r19544 * r19545;
        double r19547 = b1;
        double r19548 = b2;
        double r19549 = r19547 * r19548;
        double r19550 = r19546 / r19549;
        return r19550;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r19551 = a2;
        float r19552 = -1.3325061181107773e+217f;
        bool r19553 = r19551 <= r19552;
        float r19554 = a1;
        float r19555 = b1;
        float r19556 = r19551 / r19555;
        float r19557 = b2;
        float r19558 = r19556 / r19557;
        float r19559 = r19554 * r19558;
        float r19560 = -4.969955314137239e-254f;
        bool r19561 = r19551 <= r19560;
        float r19562 = r19554 * r19551;
        float r19563 = r19555 * r19557;
        float r19564 = r19562 / r19563;
        float r19565 = 1.5686396626431321e-35f;
        bool r19566 = r19551 <= r19565;
        float r19567 = 1.975073998090622e+166f;
        bool r19568 = r19551 <= r19567;
        float r19569 = r19554 / r19555;
        float r19570 = r19569 * r19551;
        float r19571 = r19570 / r19557;
        float r19572 = r19551 / r19557;
        float r19573 = r19569 * r19572;
        float r19574 = r19568 ? r19571 : r19573;
        float r19575 = r19566 ? r19559 : r19574;
        float r19576 = r19561 ? r19564 : r19575;
        float r19577 = r19553 ? r19559 : r19576;
        return r19577;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r19578 = a2;
        double r19579 = -1.3325061181107773e+217;
        bool r19580 = r19578 <= r19579;
        double r19581 = a1;
        double r19582 = b1;
        double r19583 = r19578 / r19582;
        double r19584 = b2;
        double r19585 = r19583 / r19584;
        double r19586 = r19581 * r19585;
        double r19587 = -4.969955314137239e-254;
        bool r19588 = r19578 <= r19587;
        double r19589 = r19581 * r19578;
        double r19590 = r19582 * r19584;
        double r19591 = r19589 / r19590;
        double r19592 = 1.5686396626431321e-35;
        bool r19593 = r19578 <= r19592;
        double r19594 = 1.975073998090622e+166;
        bool r19595 = r19578 <= r19594;
        double r19596 = r19581 / r19582;
        double r19597 = r19596 * r19578;
        double r19598 = r19597 / r19584;
        double r19599 = r19578 / r19584;
        double r19600 = r19596 * r19599;
        double r19601 = r19595 ? r19598 : r19600;
        double r19602 = r19593 ? r19586 : r19601;
        double r19603 = r19588 ? r19591 : r19602;
        double r19604 = r19580 ? r19586 : r19603;
        return r19604;
}

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 r19605, r19606, r19607, r19608, r19609, r19610, r19611;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r19605);
        mpfr_init(r19606);
        mpfr_init(r19607);
        mpfr_init(r19608);
        mpfr_init(r19609);
        mpfr_init(r19610);
        mpfr_init(r19611);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r19605, a1, MPFR_RNDN);
        mpfr_set_d(r19606, a2, MPFR_RNDN);
        mpfr_mul(r19607, r19605, r19606, MPFR_RNDN);
        mpfr_set_d(r19608, b1, MPFR_RNDN);
        mpfr_set_d(r19609, b2, MPFR_RNDN);
        mpfr_mul(r19610, r19608, r19609, MPFR_RNDN);
        mpfr_div(r19611, r19607, r19610, MPFR_RNDN);
        return mpfr_get_d(r19611, MPFR_RNDN);
}

static mpfr_t r19612, r19613, r19614, r19615, r19616, r19617, r19618, r19619, r19620, r19621, r19622, r19623, r19624, r19625, r19626, r19627, r19628, r19629, r19630, r19631, r19632, r19633, r19634, r19635, r19636, r19637, r19638;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r19612);
        mpfr_init_set_str(r19613, "-1.3325061181107773e+217", 10, MPFR_RNDN);
        mpfr_init(r19614);
        mpfr_init(r19615);
        mpfr_init(r19616);
        mpfr_init(r19617);
        mpfr_init(r19618);
        mpfr_init(r19619);
        mpfr_init(r19620);
        mpfr_init_set_str(r19621, "-4.969955314137239e-254", 10, MPFR_RNDN);
        mpfr_init(r19622);
        mpfr_init(r19623);
        mpfr_init(r19624);
        mpfr_init(r19625);
        mpfr_init_set_str(r19626, "1.5686396626431321e-35", 10, MPFR_RNDN);
        mpfr_init(r19627);
        mpfr_init_set_str(r19628, "1.975073998090622e+166", 10, MPFR_RNDN);
        mpfr_init(r19629);
        mpfr_init(r19630);
        mpfr_init(r19631);
        mpfr_init(r19632);
        mpfr_init(r19633);
        mpfr_init(r19634);
        mpfr_init(r19635);
        mpfr_init(r19636);
        mpfr_init(r19637);
        mpfr_init(r19638);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r19612, a2, MPFR_RNDN);
        ;
        mpfr_set_si(r19614, mpfr_cmp(r19612, r19613) <= 0, MPFR_RNDN);
        mpfr_set_d(r19615, a1, MPFR_RNDN);
        mpfr_set_d(r19616, b1, MPFR_RNDN);
        mpfr_div(r19617, r19612, r19616, MPFR_RNDN);
        mpfr_set_d(r19618, b2, MPFR_RNDN);
        mpfr_div(r19619, r19617, r19618, MPFR_RNDN);
        mpfr_mul(r19620, r19615, r19619, MPFR_RNDN);
        ;
        mpfr_set_si(r19622, mpfr_cmp(r19612, r19621) <= 0, MPFR_RNDN);
        mpfr_mul(r19623, r19615, r19612, MPFR_RNDN);
        mpfr_mul(r19624, r19616, r19618, MPFR_RNDN);
        mpfr_div(r19625, r19623, r19624, MPFR_RNDN);
        ;
        mpfr_set_si(r19627, mpfr_cmp(r19612, r19626) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r19629, mpfr_cmp(r19612, r19628) <= 0, MPFR_RNDN);
        mpfr_div(r19630, r19615, r19616, MPFR_RNDN);
        mpfr_mul(r19631, r19630, r19612, MPFR_RNDN);
        mpfr_div(r19632, r19631, r19618, MPFR_RNDN);
        mpfr_div(r19633, r19612, r19618, MPFR_RNDN);
        mpfr_mul(r19634, r19630, r19633, MPFR_RNDN);
        if (mpfr_get_si(r19629, MPFR_RNDN)) { mpfr_set(r19635, r19632, MPFR_RNDN); } else { mpfr_set(r19635, r19634, MPFR_RNDN); };
        if (mpfr_get_si(r19627, MPFR_RNDN)) { mpfr_set(r19636, r19620, MPFR_RNDN); } else { mpfr_set(r19636, r19635, MPFR_RNDN); };
        if (mpfr_get_si(r19622, MPFR_RNDN)) { mpfr_set(r19637, r19625, MPFR_RNDN); } else { mpfr_set(r19637, r19636, MPFR_RNDN); };
        if (mpfr_get_si(r19614, MPFR_RNDN)) { mpfr_set(r19638, r19620, MPFR_RNDN); } else { mpfr_set(r19638, r19637, MPFR_RNDN); };
        return mpfr_get_d(r19638, MPFR_RNDN);
}

static mpfr_t r19639, r19640, r19641, r19642, r19643, r19644, r19645, r19646, r19647, r19648, r19649, r19650, r19651, r19652, r19653, r19654, r19655, r19656, r19657, r19658, r19659, r19660, r19661, r19662, r19663, r19664, r19665;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r19639);
        mpfr_init_set_str(r19640, "-1.3325061181107773e+217", 10, MPFR_RNDN);
        mpfr_init(r19641);
        mpfr_init(r19642);
        mpfr_init(r19643);
        mpfr_init(r19644);
        mpfr_init(r19645);
        mpfr_init(r19646);
        mpfr_init(r19647);
        mpfr_init_set_str(r19648, "-4.969955314137239e-254", 10, MPFR_RNDN);
        mpfr_init(r19649);
        mpfr_init(r19650);
        mpfr_init(r19651);
        mpfr_init(r19652);
        mpfr_init_set_str(r19653, "1.5686396626431321e-35", 10, MPFR_RNDN);
        mpfr_init(r19654);
        mpfr_init_set_str(r19655, "1.975073998090622e+166", 10, MPFR_RNDN);
        mpfr_init(r19656);
        mpfr_init(r19657);
        mpfr_init(r19658);
        mpfr_init(r19659);
        mpfr_init(r19660);
        mpfr_init(r19661);
        mpfr_init(r19662);
        mpfr_init(r19663);
        mpfr_init(r19664);
        mpfr_init(r19665);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r19639, a2, MPFR_RNDN);
        ;
        mpfr_set_si(r19641, mpfr_cmp(r19639, r19640) <= 0, MPFR_RNDN);
        mpfr_set_d(r19642, a1, MPFR_RNDN);
        mpfr_set_d(r19643, b1, MPFR_RNDN);
        mpfr_div(r19644, r19639, r19643, MPFR_RNDN);
        mpfr_set_d(r19645, b2, MPFR_RNDN);
        mpfr_div(r19646, r19644, r19645, MPFR_RNDN);
        mpfr_mul(r19647, r19642, r19646, MPFR_RNDN);
        ;
        mpfr_set_si(r19649, mpfr_cmp(r19639, r19648) <= 0, MPFR_RNDN);
        mpfr_mul(r19650, r19642, r19639, MPFR_RNDN);
        mpfr_mul(r19651, r19643, r19645, MPFR_RNDN);
        mpfr_div(r19652, r19650, r19651, MPFR_RNDN);
        ;
        mpfr_set_si(r19654, mpfr_cmp(r19639, r19653) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r19656, mpfr_cmp(r19639, r19655) <= 0, MPFR_RNDN);
        mpfr_div(r19657, r19642, r19643, MPFR_RNDN);
        mpfr_mul(r19658, r19657, r19639, MPFR_RNDN);
        mpfr_div(r19659, r19658, r19645, MPFR_RNDN);
        mpfr_div(r19660, r19639, r19645, MPFR_RNDN);
        mpfr_mul(r19661, r19657, r19660, MPFR_RNDN);
        if (mpfr_get_si(r19656, MPFR_RNDN)) { mpfr_set(r19662, r19659, MPFR_RNDN); } else { mpfr_set(r19662, r19661, MPFR_RNDN); };
        if (mpfr_get_si(r19654, MPFR_RNDN)) { mpfr_set(r19663, r19647, MPFR_RNDN); } else { mpfr_set(r19663, r19662, MPFR_RNDN); };
        if (mpfr_get_si(r19649, MPFR_RNDN)) { mpfr_set(r19664, r19652, MPFR_RNDN); } else { mpfr_set(r19664, r19663, MPFR_RNDN); };
        if (mpfr_get_si(r19641, MPFR_RNDN)) { mpfr_set(r19665, r19647, MPFR_RNDN); } else { mpfr_set(r19665, r19664, MPFR_RNDN); };
        return mpfr_get_d(r19665, MPFR_RNDN);
}

