#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 r41310 = a1;
        float r41311 = a2;
        float r41312 = r41310 * r41311;
        float r41313 = b1;
        float r41314 = b2;
        float r41315 = r41313 * r41314;
        float r41316 = r41312 / r41315;
        return r41316;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r41317 = a1;
        double r41318 = a2;
        double r41319 = r41317 * r41318;
        double r41320 = b1;
        double r41321 = b2;
        double r41322 = r41320 * r41321;
        double r41323 = r41319 / r41322;
        return r41323;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r41324 = a2;
        float r41325 = -1.6528172447439423e+267;
        bool r41326 = r41324 <= r41325;
        float r41327 = a1;
        float r41328 = b1;
        float r41329 = r41327 / r41328;
        float r41330 = b2;
        float r41331 = r41324 / r41330;
        float r41332 = r41329 * r41331;
        float r41333 = -4.79432672961767e+85;
        bool r41334 = r41324 <= r41333;
        float r41335 = r41327 * r41324;
        float r41336 = 1;
        float r41337 = r41328 * r41330;
        float r41338 = r41336 / r41337;
        float r41339 = r41335 * r41338;
        float r41340 = 2.1718258939700428e-107;
        bool r41341 = r41324 <= r41340;
        float r41342 = r41328 / r41324;
        float r41343 = r41327 / r41342;
        float r41344 = r41343 / r41330;
        float r41345 = 4.287825788642366e+156;
        bool r41346 = r41324 <= r41345;
        float r41347 = 2.6190697471215337e+206;
        bool r41348 = r41324 <= r41347;
        float r41349 = r41335 / r41328;
        float r41350 = r41330 / r41349;
        float r41351 = r41336 / r41350;
        float r41352 = r41348 ? r41351 : r41344;
        float r41353 = r41346 ? r41332 : r41352;
        float r41354 = r41341 ? r41344 : r41353;
        float r41355 = r41334 ? r41339 : r41354;
        float r41356 = r41326 ? r41332 : r41355;
        return r41356;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r41357 = a2;
        double r41358 = -1.6528172447439423e+267;
        bool r41359 = r41357 <= r41358;
        double r41360 = a1;
        double r41361 = b1;
        double r41362 = r41360 / r41361;
        double r41363 = b2;
        double r41364 = r41357 / r41363;
        double r41365 = r41362 * r41364;
        double r41366 = -4.79432672961767e+85;
        bool r41367 = r41357 <= r41366;
        double r41368 = r41360 * r41357;
        double r41369 = 1;
        double r41370 = r41361 * r41363;
        double r41371 = r41369 / r41370;
        double r41372 = r41368 * r41371;
        double r41373 = 2.1718258939700428e-107;
        bool r41374 = r41357 <= r41373;
        double r41375 = r41361 / r41357;
        double r41376 = r41360 / r41375;
        double r41377 = r41376 / r41363;
        double r41378 = 4.287825788642366e+156;
        bool r41379 = r41357 <= r41378;
        double r41380 = 2.6190697471215337e+206;
        bool r41381 = r41357 <= r41380;
        double r41382 = r41368 / r41361;
        double r41383 = r41363 / r41382;
        double r41384 = r41369 / r41383;
        double r41385 = r41381 ? r41384 : r41377;
        double r41386 = r41379 ? r41365 : r41385;
        double r41387 = r41374 ? r41377 : r41386;
        double r41388 = r41367 ? r41372 : r41387;
        double r41389 = r41359 ? r41365 : r41388;
        return r41389;
}

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 r41390, r41391, r41392, r41393, r41394, r41395, r41396;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41390);
        mpfr_init(r41391);
        mpfr_init(r41392);
        mpfr_init(r41393);
        mpfr_init(r41394);
        mpfr_init(r41395);
        mpfr_init(r41396);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r41390, a1, MPFR_RNDN);
        mpfr_set_d(r41391, a2, MPFR_RNDN);
        mpfr_mul(r41392, r41390, r41391, MPFR_RNDN);
        mpfr_set_d(r41393, b1, MPFR_RNDN);
        mpfr_set_d(r41394, b2, MPFR_RNDN);
        mpfr_mul(r41395, r41393, r41394, MPFR_RNDN);
        mpfr_div(r41396, r41392, r41395, MPFR_RNDN);
        return mpfr_get_d(r41396, MPFR_RNDN);
}

static mpfr_t r41397, r41398, r41399, r41400, r41401, r41402, r41403, r41404, r41405, r41406, r41407, r41408, r41409, r41410, r41411, r41412, r41413, r41414, r41415, r41416, r41417, r41418, r41419, r41420, r41421, r41422, r41423, r41424, r41425, r41426, r41427, r41428, r41429;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41397);
        mpfr_init_set_str(r41398, "-1.6528172447439423e+267", 10, MPFR_RNDN);
        mpfr_init(r41399);
        mpfr_init(r41400);
        mpfr_init(r41401);
        mpfr_init(r41402);
        mpfr_init(r41403);
        mpfr_init(r41404);
        mpfr_init(r41405);
        mpfr_init_set_str(r41406, "-4.79432672961767e+85", 10, MPFR_RNDN);
        mpfr_init(r41407);
        mpfr_init(r41408);
        mpfr_init_set_str(r41409, "1", 10, MPFR_RNDN);
        mpfr_init(r41410);
        mpfr_init(r41411);
        mpfr_init(r41412);
        mpfr_init_set_str(r41413, "2.1718258939700428e-107", 10, MPFR_RNDN);
        mpfr_init(r41414);
        mpfr_init(r41415);
        mpfr_init(r41416);
        mpfr_init(r41417);
        mpfr_init_set_str(r41418, "4.287825788642366e+156", 10, MPFR_RNDN);
        mpfr_init(r41419);
        mpfr_init_set_str(r41420, "2.6190697471215337e+206", 10, MPFR_RNDN);
        mpfr_init(r41421);
        mpfr_init(r41422);
        mpfr_init(r41423);
        mpfr_init(r41424);
        mpfr_init(r41425);
        mpfr_init(r41426);
        mpfr_init(r41427);
        mpfr_init(r41428);
        mpfr_init(r41429);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r41397, a2, MPFR_RNDN);
        ;
        mpfr_set_si(r41399, mpfr_cmp(r41397, r41398) <= 0, MPFR_RNDN);
        mpfr_set_d(r41400, a1, MPFR_RNDN);
        mpfr_set_d(r41401, b1, MPFR_RNDN);
        mpfr_div(r41402, r41400, r41401, MPFR_RNDN);
        mpfr_set_d(r41403, b2, MPFR_RNDN);
        mpfr_div(r41404, r41397, r41403, MPFR_RNDN);
        mpfr_mul(r41405, r41402, r41404, MPFR_RNDN);
        ;
        mpfr_set_si(r41407, mpfr_cmp(r41397, r41406) <= 0, MPFR_RNDN);
        mpfr_mul(r41408, r41400, r41397, MPFR_RNDN);
        ;
        mpfr_mul(r41410, r41401, r41403, MPFR_RNDN);
        mpfr_div(r41411, r41409, r41410, MPFR_RNDN);
        mpfr_mul(r41412, r41408, r41411, MPFR_RNDN);
        ;
        mpfr_set_si(r41414, mpfr_cmp(r41397, r41413) <= 0, MPFR_RNDN);
        mpfr_div(r41415, r41401, r41397, MPFR_RNDN);
        mpfr_div(r41416, r41400, r41415, MPFR_RNDN);
        mpfr_div(r41417, r41416, r41403, MPFR_RNDN);
        ;
        mpfr_set_si(r41419, mpfr_cmp(r41397, r41418) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r41421, mpfr_cmp(r41397, r41420) <= 0, MPFR_RNDN);
        mpfr_div(r41422, r41408, r41401, MPFR_RNDN);
        mpfr_div(r41423, r41403, r41422, MPFR_RNDN);
        mpfr_div(r41424, r41409, r41423, MPFR_RNDN);
        if (mpfr_get_si(r41421, MPFR_RNDN)) { mpfr_set(r41425, r41424, MPFR_RNDN); } else { mpfr_set(r41425, r41417, MPFR_RNDN); };
        if (mpfr_get_si(r41419, MPFR_RNDN)) { mpfr_set(r41426, r41405, MPFR_RNDN); } else { mpfr_set(r41426, r41425, MPFR_RNDN); };
        if (mpfr_get_si(r41414, MPFR_RNDN)) { mpfr_set(r41427, r41417, MPFR_RNDN); } else { mpfr_set(r41427, r41426, MPFR_RNDN); };
        if (mpfr_get_si(r41407, MPFR_RNDN)) { mpfr_set(r41428, r41412, MPFR_RNDN); } else { mpfr_set(r41428, r41427, MPFR_RNDN); };
        if (mpfr_get_si(r41399, MPFR_RNDN)) { mpfr_set(r41429, r41405, MPFR_RNDN); } else { mpfr_set(r41429, r41428, MPFR_RNDN); };
        return mpfr_get_d(r41429, MPFR_RNDN);
}

static mpfr_t r41430, r41431, r41432, r41433, r41434, r41435, r41436, r41437, r41438, r41439, r41440, r41441, r41442, r41443, r41444, r41445, r41446, r41447, r41448, r41449, r41450, r41451, r41452, r41453, r41454, r41455, r41456, r41457, r41458, r41459, r41460, r41461, r41462;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41430);
        mpfr_init_set_str(r41431, "-1.6528172447439423e+267", 10, MPFR_RNDN);
        mpfr_init(r41432);
        mpfr_init(r41433);
        mpfr_init(r41434);
        mpfr_init(r41435);
        mpfr_init(r41436);
        mpfr_init(r41437);
        mpfr_init(r41438);
        mpfr_init_set_str(r41439, "-4.79432672961767e+85", 10, MPFR_RNDN);
        mpfr_init(r41440);
        mpfr_init(r41441);
        mpfr_init_set_str(r41442, "1", 10, MPFR_RNDN);
        mpfr_init(r41443);
        mpfr_init(r41444);
        mpfr_init(r41445);
        mpfr_init_set_str(r41446, "2.1718258939700428e-107", 10, MPFR_RNDN);
        mpfr_init(r41447);
        mpfr_init(r41448);
        mpfr_init(r41449);
        mpfr_init(r41450);
        mpfr_init_set_str(r41451, "4.287825788642366e+156", 10, MPFR_RNDN);
        mpfr_init(r41452);
        mpfr_init_set_str(r41453, "2.6190697471215337e+206", 10, MPFR_RNDN);
        mpfr_init(r41454);
        mpfr_init(r41455);
        mpfr_init(r41456);
        mpfr_init(r41457);
        mpfr_init(r41458);
        mpfr_init(r41459);
        mpfr_init(r41460);
        mpfr_init(r41461);
        mpfr_init(r41462);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r41430, a2, MPFR_RNDN);
        ;
        mpfr_set_si(r41432, mpfr_cmp(r41430, r41431) <= 0, MPFR_RNDN);
        mpfr_set_d(r41433, a1, MPFR_RNDN);
        mpfr_set_d(r41434, b1, MPFR_RNDN);
        mpfr_div(r41435, r41433, r41434, MPFR_RNDN);
        mpfr_set_d(r41436, b2, MPFR_RNDN);
        mpfr_div(r41437, r41430, r41436, MPFR_RNDN);
        mpfr_mul(r41438, r41435, r41437, MPFR_RNDN);
        ;
        mpfr_set_si(r41440, mpfr_cmp(r41430, r41439) <= 0, MPFR_RNDN);
        mpfr_mul(r41441, r41433, r41430, MPFR_RNDN);
        ;
        mpfr_mul(r41443, r41434, r41436, MPFR_RNDN);
        mpfr_div(r41444, r41442, r41443, MPFR_RNDN);
        mpfr_mul(r41445, r41441, r41444, MPFR_RNDN);
        ;
        mpfr_set_si(r41447, mpfr_cmp(r41430, r41446) <= 0, MPFR_RNDN);
        mpfr_div(r41448, r41434, r41430, MPFR_RNDN);
        mpfr_div(r41449, r41433, r41448, MPFR_RNDN);
        mpfr_div(r41450, r41449, r41436, MPFR_RNDN);
        ;
        mpfr_set_si(r41452, mpfr_cmp(r41430, r41451) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r41454, mpfr_cmp(r41430, r41453) <= 0, MPFR_RNDN);
        mpfr_div(r41455, r41441, r41434, MPFR_RNDN);
        mpfr_div(r41456, r41436, r41455, MPFR_RNDN);
        mpfr_div(r41457, r41442, r41456, MPFR_RNDN);
        if (mpfr_get_si(r41454, MPFR_RNDN)) { mpfr_set(r41458, r41457, MPFR_RNDN); } else { mpfr_set(r41458, r41450, MPFR_RNDN); };
        if (mpfr_get_si(r41452, MPFR_RNDN)) { mpfr_set(r41459, r41438, MPFR_RNDN); } else { mpfr_set(r41459, r41458, MPFR_RNDN); };
        if (mpfr_get_si(r41447, MPFR_RNDN)) { mpfr_set(r41460, r41450, MPFR_RNDN); } else { mpfr_set(r41460, r41459, MPFR_RNDN); };
        if (mpfr_get_si(r41440, MPFR_RNDN)) { mpfr_set(r41461, r41445, MPFR_RNDN); } else { mpfr_set(r41461, r41460, MPFR_RNDN); };
        if (mpfr_get_si(r41432, MPFR_RNDN)) { mpfr_set(r41462, r41438, MPFR_RNDN); } else { mpfr_set(r41462, r41461, MPFR_RNDN); };
        return mpfr_get_d(r41462, MPFR_RNDN);
}

