#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 r27366 = a1;
        float r27367 = a2;
        float r27368 = r27366 * r27367;
        float r27369 = b1;
        float r27370 = b2;
        float r27371 = r27369 * r27370;
        float r27372 = r27368 / r27371;
        return r27372;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r27373 = a1;
        double r27374 = a2;
        double r27375 = r27373 * r27374;
        double r27376 = b1;
        double r27377 = b2;
        double r27378 = r27376 * r27377;
        double r27379 = r27375 / r27378;
        return r27379;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r27380 = a1;
        float r27381 = a2;
        float r27382 = b1;
        float r27383 = r27381 / r27382;
        float r27384 = r27380 * r27383;
        float r27385 = b2;
        float r27386 = r27384 / r27385;
        float r27387 = -5.487922603099143e+279;
        bool r27388 = r27386 <= r27387;
        float r27389 = 1;
        float r27390 = r27382 * r27385;
        float r27391 = r27380 * r27381;
        float r27392 = r27390 / r27391;
        float r27393 = r27389 / r27392;
        float r27394 = -1.3325174439157501e-185;
        bool r27395 = r27386 <= r27394;
        float r27396 = 2.6709418480889694e-304;
        bool r27397 = r27386 <= r27396;
        float r27398 = r27390 / r27381;
        float r27399 = r27380 / r27398;
        float r27400 = 6.80566945722905e+304;
        bool r27401 = r27386 <= r27400;
        float r27402 = r27382 / r27381;
        float r27403 = r27380 / r27402;
        float r27404 = r27385 / r27403;
        float r27405 = r27389 / r27404;
        float r27406 = r27401 ? r27405 : r27399;
        float r27407 = r27397 ? r27399 : r27406;
        float r27408 = r27395 ? r27386 : r27407;
        float r27409 = r27388 ? r27393 : r27408;
        return r27409;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r27410 = a1;
        double r27411 = a2;
        double r27412 = b1;
        double r27413 = r27411 / r27412;
        double r27414 = r27410 * r27413;
        double r27415 = b2;
        double r27416 = r27414 / r27415;
        double r27417 = -5.487922603099143e+279;
        bool r27418 = r27416 <= r27417;
        double r27419 = 1;
        double r27420 = r27412 * r27415;
        double r27421 = r27410 * r27411;
        double r27422 = r27420 / r27421;
        double r27423 = r27419 / r27422;
        double r27424 = -1.3325174439157501e-185;
        bool r27425 = r27416 <= r27424;
        double r27426 = 2.6709418480889694e-304;
        bool r27427 = r27416 <= r27426;
        double r27428 = r27420 / r27411;
        double r27429 = r27410 / r27428;
        double r27430 = 6.80566945722905e+304;
        bool r27431 = r27416 <= r27430;
        double r27432 = r27412 / r27411;
        double r27433 = r27410 / r27432;
        double r27434 = r27415 / r27433;
        double r27435 = r27419 / r27434;
        double r27436 = r27431 ? r27435 : r27429;
        double r27437 = r27427 ? r27429 : r27436;
        double r27438 = r27425 ? r27416 : r27437;
        double r27439 = r27418 ? r27423 : r27438;
        return r27439;
}

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 r27440, r27441, r27442, r27443, r27444, r27445, r27446;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27440);
        mpfr_init(r27441);
        mpfr_init(r27442);
        mpfr_init(r27443);
        mpfr_init(r27444);
        mpfr_init(r27445);
        mpfr_init(r27446);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27440, a1, MPFR_RNDN);
        mpfr_set_d(r27441, a2, MPFR_RNDN);
        mpfr_mul(r27442, r27440, r27441, MPFR_RNDN);
        mpfr_set_d(r27443, b1, MPFR_RNDN);
        mpfr_set_d(r27444, b2, MPFR_RNDN);
        mpfr_mul(r27445, r27443, r27444, MPFR_RNDN);
        mpfr_div(r27446, r27442, r27445, MPFR_RNDN);
        return mpfr_get_d(r27446, MPFR_RNDN);
}

static mpfr_t r27447, r27448, r27449, r27450, r27451, r27452, r27453, r27454, r27455, r27456, r27457, r27458, r27459, r27460, r27461, r27462, r27463, r27464, r27465, r27466, r27467, r27468, r27469, r27470, r27471, r27472, r27473, r27474, r27475, r27476;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27447);
        mpfr_init(r27448);
        mpfr_init(r27449);
        mpfr_init(r27450);
        mpfr_init(r27451);
        mpfr_init(r27452);
        mpfr_init(r27453);
        mpfr_init_set_str(r27454, "-5.487922603099143e+279", 10, MPFR_RNDN);
        mpfr_init(r27455);
        mpfr_init_set_str(r27456, "1", 10, MPFR_RNDN);
        mpfr_init(r27457);
        mpfr_init(r27458);
        mpfr_init(r27459);
        mpfr_init(r27460);
        mpfr_init_set_str(r27461, "-1.3325174439157501e-185", 10, MPFR_RNDN);
        mpfr_init(r27462);
        mpfr_init_set_str(r27463, "2.6709418480889694e-304", 10, MPFR_RNDN);
        mpfr_init(r27464);
        mpfr_init(r27465);
        mpfr_init(r27466);
        mpfr_init_set_str(r27467, "6.80566945722905e+304", 10, MPFR_RNDN);
        mpfr_init(r27468);
        mpfr_init(r27469);
        mpfr_init(r27470);
        mpfr_init(r27471);
        mpfr_init(r27472);
        mpfr_init(r27473);
        mpfr_init(r27474);
        mpfr_init(r27475);
        mpfr_init(r27476);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27447, a1, MPFR_RNDN);
        mpfr_set_d(r27448, a2, MPFR_RNDN);
        mpfr_set_d(r27449, b1, MPFR_RNDN);
        mpfr_div(r27450, r27448, r27449, MPFR_RNDN);
        mpfr_mul(r27451, r27447, r27450, MPFR_RNDN);
        mpfr_set_d(r27452, b2, MPFR_RNDN);
        mpfr_div(r27453, r27451, r27452, MPFR_RNDN);
        ;
        mpfr_set_si(r27455, mpfr_cmp(r27453, r27454) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27457, r27449, r27452, MPFR_RNDN);
        mpfr_mul(r27458, r27447, r27448, MPFR_RNDN);
        mpfr_div(r27459, r27457, r27458, MPFR_RNDN);
        mpfr_div(r27460, r27456, r27459, MPFR_RNDN);
        ;
        mpfr_set_si(r27462, mpfr_cmp(r27453, r27461) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27464, mpfr_cmp(r27453, r27463) <= 0, MPFR_RNDN);
        mpfr_div(r27465, r27457, r27448, MPFR_RNDN);
        mpfr_div(r27466, r27447, r27465, MPFR_RNDN);
        ;
        mpfr_set_si(r27468, mpfr_cmp(r27453, r27467) <= 0, MPFR_RNDN);
        mpfr_div(r27469, r27449, r27448, MPFR_RNDN);
        mpfr_div(r27470, r27447, r27469, MPFR_RNDN);
        mpfr_div(r27471, r27452, r27470, MPFR_RNDN);
        mpfr_div(r27472, r27456, r27471, MPFR_RNDN);
        if (mpfr_get_si(r27468, MPFR_RNDN)) { mpfr_set(r27473, r27472, MPFR_RNDN); } else { mpfr_set(r27473, r27466, MPFR_RNDN); };
        if (mpfr_get_si(r27464, MPFR_RNDN)) { mpfr_set(r27474, r27466, MPFR_RNDN); } else { mpfr_set(r27474, r27473, MPFR_RNDN); };
        if (mpfr_get_si(r27462, MPFR_RNDN)) { mpfr_set(r27475, r27453, MPFR_RNDN); } else { mpfr_set(r27475, r27474, MPFR_RNDN); };
        if (mpfr_get_si(r27455, MPFR_RNDN)) { mpfr_set(r27476, r27460, MPFR_RNDN); } else { mpfr_set(r27476, r27475, MPFR_RNDN); };
        return mpfr_get_d(r27476, MPFR_RNDN);
}

static mpfr_t r27477, r27478, r27479, r27480, r27481, r27482, r27483, r27484, r27485, r27486, r27487, r27488, r27489, r27490, r27491, r27492, r27493, r27494, r27495, r27496, r27497, r27498, r27499, r27500, r27501, r27502, r27503, r27504, r27505, r27506;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27477);
        mpfr_init(r27478);
        mpfr_init(r27479);
        mpfr_init(r27480);
        mpfr_init(r27481);
        mpfr_init(r27482);
        mpfr_init(r27483);
        mpfr_init_set_str(r27484, "-5.487922603099143e+279", 10, MPFR_RNDN);
        mpfr_init(r27485);
        mpfr_init_set_str(r27486, "1", 10, MPFR_RNDN);
        mpfr_init(r27487);
        mpfr_init(r27488);
        mpfr_init(r27489);
        mpfr_init(r27490);
        mpfr_init_set_str(r27491, "-1.3325174439157501e-185", 10, MPFR_RNDN);
        mpfr_init(r27492);
        mpfr_init_set_str(r27493, "2.6709418480889694e-304", 10, MPFR_RNDN);
        mpfr_init(r27494);
        mpfr_init(r27495);
        mpfr_init(r27496);
        mpfr_init_set_str(r27497, "6.80566945722905e+304", 10, MPFR_RNDN);
        mpfr_init(r27498);
        mpfr_init(r27499);
        mpfr_init(r27500);
        mpfr_init(r27501);
        mpfr_init(r27502);
        mpfr_init(r27503);
        mpfr_init(r27504);
        mpfr_init(r27505);
        mpfr_init(r27506);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r27477, a1, MPFR_RNDN);
        mpfr_set_d(r27478, a2, MPFR_RNDN);
        mpfr_set_d(r27479, b1, MPFR_RNDN);
        mpfr_div(r27480, r27478, r27479, MPFR_RNDN);
        mpfr_mul(r27481, r27477, r27480, MPFR_RNDN);
        mpfr_set_d(r27482, b2, MPFR_RNDN);
        mpfr_div(r27483, r27481, r27482, MPFR_RNDN);
        ;
        mpfr_set_si(r27485, mpfr_cmp(r27483, r27484) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27487, r27479, r27482, MPFR_RNDN);
        mpfr_mul(r27488, r27477, r27478, MPFR_RNDN);
        mpfr_div(r27489, r27487, r27488, MPFR_RNDN);
        mpfr_div(r27490, r27486, r27489, MPFR_RNDN);
        ;
        mpfr_set_si(r27492, mpfr_cmp(r27483, r27491) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27494, mpfr_cmp(r27483, r27493) <= 0, MPFR_RNDN);
        mpfr_div(r27495, r27487, r27478, MPFR_RNDN);
        mpfr_div(r27496, r27477, r27495, MPFR_RNDN);
        ;
        mpfr_set_si(r27498, mpfr_cmp(r27483, r27497) <= 0, MPFR_RNDN);
        mpfr_div(r27499, r27479, r27478, MPFR_RNDN);
        mpfr_div(r27500, r27477, r27499, MPFR_RNDN);
        mpfr_div(r27501, r27482, r27500, MPFR_RNDN);
        mpfr_div(r27502, r27486, r27501, MPFR_RNDN);
        if (mpfr_get_si(r27498, MPFR_RNDN)) { mpfr_set(r27503, r27502, MPFR_RNDN); } else { mpfr_set(r27503, r27496, MPFR_RNDN); };
        if (mpfr_get_si(r27494, MPFR_RNDN)) { mpfr_set(r27504, r27496, MPFR_RNDN); } else { mpfr_set(r27504, r27503, MPFR_RNDN); };
        if (mpfr_get_si(r27492, MPFR_RNDN)) { mpfr_set(r27505, r27483, MPFR_RNDN); } else { mpfr_set(r27505, r27504, MPFR_RNDN); };
        if (mpfr_get_si(r27485, MPFR_RNDN)) { mpfr_set(r27506, r27490, MPFR_RNDN); } else { mpfr_set(r27506, r27505, MPFR_RNDN); };
        return mpfr_get_d(r27506, MPFR_RNDN);
}

