#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 r41415 = a1;
        float r41416 = a2;
        float r41417 = r41415 * r41416;
        float r41418 = b1;
        float r41419 = b2;
        float r41420 = r41418 * r41419;
        float r41421 = r41417 / r41420;
        return r41421;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r41422 = a1;
        double r41423 = a2;
        double r41424 = r41422 * r41423;
        double r41425 = b1;
        double r41426 = b2;
        double r41427 = r41425 * r41426;
        double r41428 = r41424 / r41427;
        return r41428;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r41429 = a2;
        float r41430 = -1.3049912669920272e+267;
        bool r41431 = r41429 <= r41430;
        float r41432 = a1;
        float r41433 = b1;
        float r41434 = r41432 / r41433;
        float r41435 = b2;
        float r41436 = r41429 / r41435;
        float r41437 = r41434 * r41436;
        float r41438 = -5.204804899648365e+85;
        bool r41439 = r41429 <= r41438;
        float r41440 = r41432 * r41429;
        float r41441 = 1;
        float r41442 = r41433 * r41435;
        float r41443 = r41441 / r41442;
        float r41444 = r41440 * r41443;
        float r41445 = 1.9311573662551773e-107;
        bool r41446 = r41429 <= r41445;
        float r41447 = r41433 / r41429;
        float r41448 = r41432 / r41447;
        float r41449 = r41448 / r41435;
        float r41450 = 1.8210459333730642e+157;
        bool r41451 = r41429 <= r41450;
        float r41452 = 5.2905133291937936e+262;
        bool r41453 = r41429 <= r41452;
        float r41454 = r41442 / r41429;
        float r41455 = r41432 / r41454;
        float r41456 = r41435 / r41432;
        float r41457 = r41429 / r41456;
        float r41458 = r41457 / r41433;
        float r41459 = r41453 ? r41455 : r41458;
        float r41460 = r41451 ? r41437 : r41459;
        float r41461 = r41446 ? r41449 : r41460;
        float r41462 = r41439 ? r41444 : r41461;
        float r41463 = r41431 ? r41437 : r41462;
        return r41463;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r41464 = a2;
        double r41465 = -1.3049912669920272e+267;
        bool r41466 = r41464 <= r41465;
        double r41467 = a1;
        double r41468 = b1;
        double r41469 = r41467 / r41468;
        double r41470 = b2;
        double r41471 = r41464 / r41470;
        double r41472 = r41469 * r41471;
        double r41473 = -5.204804899648365e+85;
        bool r41474 = r41464 <= r41473;
        double r41475 = r41467 * r41464;
        double r41476 = 1;
        double r41477 = r41468 * r41470;
        double r41478 = r41476 / r41477;
        double r41479 = r41475 * r41478;
        double r41480 = 1.9311573662551773e-107;
        bool r41481 = r41464 <= r41480;
        double r41482 = r41468 / r41464;
        double r41483 = r41467 / r41482;
        double r41484 = r41483 / r41470;
        double r41485 = 1.8210459333730642e+157;
        bool r41486 = r41464 <= r41485;
        double r41487 = 5.2905133291937936e+262;
        bool r41488 = r41464 <= r41487;
        double r41489 = r41477 / r41464;
        double r41490 = r41467 / r41489;
        double r41491 = r41470 / r41467;
        double r41492 = r41464 / r41491;
        double r41493 = r41492 / r41468;
        double r41494 = r41488 ? r41490 : r41493;
        double r41495 = r41486 ? r41472 : r41494;
        double r41496 = r41481 ? r41484 : r41495;
        double r41497 = r41474 ? r41479 : r41496;
        double r41498 = r41466 ? r41472 : r41497;
        return r41498;
}

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 r41499, r41500, r41501, r41502, r41503, r41504, r41505;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41499);
        mpfr_init(r41500);
        mpfr_init(r41501);
        mpfr_init(r41502);
        mpfr_init(r41503);
        mpfr_init(r41504);
        mpfr_init(r41505);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r41499, a1, MPFR_RNDN);
        mpfr_set_d(r41500, a2, MPFR_RNDN);
        mpfr_mul(r41501, r41499, r41500, MPFR_RNDN);
        mpfr_set_d(r41502, b1, MPFR_RNDN);
        mpfr_set_d(r41503, b2, MPFR_RNDN);
        mpfr_mul(r41504, r41502, r41503, MPFR_RNDN);
        mpfr_div(r41505, r41501, r41504, MPFR_RNDN);
        return mpfr_get_d(r41505, MPFR_RNDN);
}

static mpfr_t r41506, r41507, r41508, r41509, r41510, r41511, r41512, r41513, r41514, r41515, r41516, r41517, r41518, r41519, r41520, r41521, r41522, r41523, r41524, r41525, r41526, r41527, r41528, r41529, r41530, r41531, r41532, r41533, r41534, r41535, r41536, r41537, r41538, r41539, r41540;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41506);
        mpfr_init_set_str(r41507, "-1.3049912669920272e+267", 10, MPFR_RNDN);
        mpfr_init(r41508);
        mpfr_init(r41509);
        mpfr_init(r41510);
        mpfr_init(r41511);
        mpfr_init(r41512);
        mpfr_init(r41513);
        mpfr_init(r41514);
        mpfr_init_set_str(r41515, "-5.204804899648365e+85", 10, MPFR_RNDN);
        mpfr_init(r41516);
        mpfr_init(r41517);
        mpfr_init_set_str(r41518, "1", 10, MPFR_RNDN);
        mpfr_init(r41519);
        mpfr_init(r41520);
        mpfr_init(r41521);
        mpfr_init_set_str(r41522, "1.9311573662551773e-107", 10, MPFR_RNDN);
        mpfr_init(r41523);
        mpfr_init(r41524);
        mpfr_init(r41525);
        mpfr_init(r41526);
        mpfr_init_set_str(r41527, "1.8210459333730642e+157", 10, MPFR_RNDN);
        mpfr_init(r41528);
        mpfr_init_set_str(r41529, "5.2905133291937936e+262", 10, MPFR_RNDN);
        mpfr_init(r41530);
        mpfr_init(r41531);
        mpfr_init(r41532);
        mpfr_init(r41533);
        mpfr_init(r41534);
        mpfr_init(r41535);
        mpfr_init(r41536);
        mpfr_init(r41537);
        mpfr_init(r41538);
        mpfr_init(r41539);
        mpfr_init(r41540);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r41506, a2, MPFR_RNDN);
        ;
        mpfr_set_si(r41508, mpfr_cmp(r41506, r41507) <= 0, MPFR_RNDN);
        mpfr_set_d(r41509, a1, MPFR_RNDN);
        mpfr_set_d(r41510, b1, MPFR_RNDN);
        mpfr_div(r41511, r41509, r41510, MPFR_RNDN);
        mpfr_set_d(r41512, b2, MPFR_RNDN);
        mpfr_div(r41513, r41506, r41512, MPFR_RNDN);
        mpfr_mul(r41514, r41511, r41513, MPFR_RNDN);
        ;
        mpfr_set_si(r41516, mpfr_cmp(r41506, r41515) <= 0, MPFR_RNDN);
        mpfr_mul(r41517, r41509, r41506, MPFR_RNDN);
        ;
        mpfr_mul(r41519, r41510, r41512, MPFR_RNDN);
        mpfr_div(r41520, r41518, r41519, MPFR_RNDN);
        mpfr_mul(r41521, r41517, r41520, MPFR_RNDN);
        ;
        mpfr_set_si(r41523, mpfr_cmp(r41506, r41522) <= 0, MPFR_RNDN);
        mpfr_div(r41524, r41510, r41506, MPFR_RNDN);
        mpfr_div(r41525, r41509, r41524, MPFR_RNDN);
        mpfr_div(r41526, r41525, r41512, MPFR_RNDN);
        ;
        mpfr_set_si(r41528, mpfr_cmp(r41506, r41527) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r41530, mpfr_cmp(r41506, r41529) <= 0, MPFR_RNDN);
        mpfr_div(r41531, r41519, r41506, MPFR_RNDN);
        mpfr_div(r41532, r41509, r41531, MPFR_RNDN);
        mpfr_div(r41533, r41512, r41509, MPFR_RNDN);
        mpfr_div(r41534, r41506, r41533, MPFR_RNDN);
        mpfr_div(r41535, r41534, r41510, MPFR_RNDN);
        if (mpfr_get_si(r41530, MPFR_RNDN)) { mpfr_set(r41536, r41532, MPFR_RNDN); } else { mpfr_set(r41536, r41535, MPFR_RNDN); };
        if (mpfr_get_si(r41528, MPFR_RNDN)) { mpfr_set(r41537, r41514, MPFR_RNDN); } else { mpfr_set(r41537, r41536, MPFR_RNDN); };
        if (mpfr_get_si(r41523, MPFR_RNDN)) { mpfr_set(r41538, r41526, MPFR_RNDN); } else { mpfr_set(r41538, r41537, MPFR_RNDN); };
        if (mpfr_get_si(r41516, MPFR_RNDN)) { mpfr_set(r41539, r41521, MPFR_RNDN); } else { mpfr_set(r41539, r41538, MPFR_RNDN); };
        if (mpfr_get_si(r41508, MPFR_RNDN)) { mpfr_set(r41540, r41514, MPFR_RNDN); } else { mpfr_set(r41540, r41539, MPFR_RNDN); };
        return mpfr_get_d(r41540, MPFR_RNDN);
}

static mpfr_t r41541, r41542, r41543, r41544, r41545, r41546, r41547, r41548, r41549, r41550, r41551, r41552, r41553, r41554, r41555, r41556, r41557, r41558, r41559, r41560, r41561, r41562, r41563, r41564, r41565, r41566, r41567, r41568, r41569, r41570, r41571, r41572, r41573, r41574, r41575;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41541);
        mpfr_init_set_str(r41542, "-1.3049912669920272e+267", 10, MPFR_RNDN);
        mpfr_init(r41543);
        mpfr_init(r41544);
        mpfr_init(r41545);
        mpfr_init(r41546);
        mpfr_init(r41547);
        mpfr_init(r41548);
        mpfr_init(r41549);
        mpfr_init_set_str(r41550, "-5.204804899648365e+85", 10, MPFR_RNDN);
        mpfr_init(r41551);
        mpfr_init(r41552);
        mpfr_init_set_str(r41553, "1", 10, MPFR_RNDN);
        mpfr_init(r41554);
        mpfr_init(r41555);
        mpfr_init(r41556);
        mpfr_init_set_str(r41557, "1.9311573662551773e-107", 10, MPFR_RNDN);
        mpfr_init(r41558);
        mpfr_init(r41559);
        mpfr_init(r41560);
        mpfr_init(r41561);
        mpfr_init_set_str(r41562, "1.8210459333730642e+157", 10, MPFR_RNDN);
        mpfr_init(r41563);
        mpfr_init_set_str(r41564, "5.2905133291937936e+262", 10, MPFR_RNDN);
        mpfr_init(r41565);
        mpfr_init(r41566);
        mpfr_init(r41567);
        mpfr_init(r41568);
        mpfr_init(r41569);
        mpfr_init(r41570);
        mpfr_init(r41571);
        mpfr_init(r41572);
        mpfr_init(r41573);
        mpfr_init(r41574);
        mpfr_init(r41575);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r41541, a2, MPFR_RNDN);
        ;
        mpfr_set_si(r41543, mpfr_cmp(r41541, r41542) <= 0, MPFR_RNDN);
        mpfr_set_d(r41544, a1, MPFR_RNDN);
        mpfr_set_d(r41545, b1, MPFR_RNDN);
        mpfr_div(r41546, r41544, r41545, MPFR_RNDN);
        mpfr_set_d(r41547, b2, MPFR_RNDN);
        mpfr_div(r41548, r41541, r41547, MPFR_RNDN);
        mpfr_mul(r41549, r41546, r41548, MPFR_RNDN);
        ;
        mpfr_set_si(r41551, mpfr_cmp(r41541, r41550) <= 0, MPFR_RNDN);
        mpfr_mul(r41552, r41544, r41541, MPFR_RNDN);
        ;
        mpfr_mul(r41554, r41545, r41547, MPFR_RNDN);
        mpfr_div(r41555, r41553, r41554, MPFR_RNDN);
        mpfr_mul(r41556, r41552, r41555, MPFR_RNDN);
        ;
        mpfr_set_si(r41558, mpfr_cmp(r41541, r41557) <= 0, MPFR_RNDN);
        mpfr_div(r41559, r41545, r41541, MPFR_RNDN);
        mpfr_div(r41560, r41544, r41559, MPFR_RNDN);
        mpfr_div(r41561, r41560, r41547, MPFR_RNDN);
        ;
        mpfr_set_si(r41563, mpfr_cmp(r41541, r41562) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r41565, mpfr_cmp(r41541, r41564) <= 0, MPFR_RNDN);
        mpfr_div(r41566, r41554, r41541, MPFR_RNDN);
        mpfr_div(r41567, r41544, r41566, MPFR_RNDN);
        mpfr_div(r41568, r41547, r41544, MPFR_RNDN);
        mpfr_div(r41569, r41541, r41568, MPFR_RNDN);
        mpfr_div(r41570, r41569, r41545, MPFR_RNDN);
        if (mpfr_get_si(r41565, MPFR_RNDN)) { mpfr_set(r41571, r41567, MPFR_RNDN); } else { mpfr_set(r41571, r41570, MPFR_RNDN); };
        if (mpfr_get_si(r41563, MPFR_RNDN)) { mpfr_set(r41572, r41549, MPFR_RNDN); } else { mpfr_set(r41572, r41571, MPFR_RNDN); };
        if (mpfr_get_si(r41558, MPFR_RNDN)) { mpfr_set(r41573, r41561, MPFR_RNDN); } else { mpfr_set(r41573, r41572, MPFR_RNDN); };
        if (mpfr_get_si(r41551, MPFR_RNDN)) { mpfr_set(r41574, r41556, MPFR_RNDN); } else { mpfr_set(r41574, r41573, MPFR_RNDN); };
        if (mpfr_get_si(r41543, MPFR_RNDN)) { mpfr_set(r41575, r41549, MPFR_RNDN); } else { mpfr_set(r41575, r41574, MPFR_RNDN); };
        return mpfr_get_d(r41575, MPFR_RNDN);
}

