#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 r10781 = a1;
        float r10782 = a2;
        float r10783 = r10781 * r10782;
        float r10784 = b1;
        float r10785 = b2;
        float r10786 = r10784 * r10785;
        float r10787 = r10783 / r10786;
        return r10787;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r10788 = a1;
        double r10789 = a2;
        double r10790 = r10788 * r10789;
        double r10791 = b1;
        double r10792 = b2;
        double r10793 = r10791 * r10792;
        double r10794 = r10790 / r10793;
        return r10794;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r10795 = a2;
        float r10796 = b1;
        float r10797 = r10795 / r10796;
        float r10798 = a1;
        float r10799 = r10797 * r10798;
        float r10800 = -1.7643916642203566e+269f;
        bool r10801 = r10799 <= r10800;
        float r10802 = b2;
        float r10803 = r10798 / r10802;
        float r10804 = r10803 * r10795;
        float r10805 = r10804 / r10796;
        float r10806 = -1.0217538782175125e-230f;
        bool r10807 = r10799 <= r10806;
        float r10808 = r10799 / r10802;
        float r10809 = 3.7054397350458017e-308f;
        bool r10810 = r10799 <= r10809;
        float r10811 = 1.0f;
        float r10812 = r10811 / r10802;
        float r10813 = r10812 * r10795;
        float r10814 = r10798 * r10813;
        float r10815 = r10814 / r10796;
        float r10816 = 6.479072608023693e+301f;
        bool r10817 = r10799 <= r10816;
        float r10818 = r10798 * r10795;
        float r10819 = r10802 * r10796;
        float r10820 = r10818 / r10819;
        float r10821 = r10817 ? r10808 : r10820;
        float r10822 = r10810 ? r10815 : r10821;
        float r10823 = r10807 ? r10808 : r10822;
        float r10824 = r10801 ? r10805 : r10823;
        return r10824;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r10825 = a2;
        double r10826 = b1;
        double r10827 = r10825 / r10826;
        double r10828 = a1;
        double r10829 = r10827 * r10828;
        double r10830 = -1.7643916642203566e+269;
        bool r10831 = r10829 <= r10830;
        double r10832 = b2;
        double r10833 = r10828 / r10832;
        double r10834 = r10833 * r10825;
        double r10835 = r10834 / r10826;
        double r10836 = -1.0217538782175125e-230;
        bool r10837 = r10829 <= r10836;
        double r10838 = r10829 / r10832;
        double r10839 = 3.7054397350458017e-308;
        bool r10840 = r10829 <= r10839;
        double r10841 = 1.0;
        double r10842 = r10841 / r10832;
        double r10843 = r10842 * r10825;
        double r10844 = r10828 * r10843;
        double r10845 = r10844 / r10826;
        double r10846 = 6.479072608023693e+301;
        bool r10847 = r10829 <= r10846;
        double r10848 = r10828 * r10825;
        double r10849 = r10832 * r10826;
        double r10850 = r10848 / r10849;
        double r10851 = r10847 ? r10838 : r10850;
        double r10852 = r10840 ? r10845 : r10851;
        double r10853 = r10837 ? r10838 : r10852;
        double r10854 = r10831 ? r10835 : r10853;
        return r10854;
}

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 r10855, r10856, r10857, r10858, r10859, r10860, r10861;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10855);
        mpfr_init(r10856);
        mpfr_init(r10857);
        mpfr_init(r10858);
        mpfr_init(r10859);
        mpfr_init(r10860);
        mpfr_init(r10861);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r10855, a1, MPFR_RNDN);
        mpfr_set_d(r10856, a2, MPFR_RNDN);
        mpfr_mul(r10857, r10855, r10856, MPFR_RNDN);
        mpfr_set_d(r10858, b1, MPFR_RNDN);
        mpfr_set_d(r10859, b2, MPFR_RNDN);
        mpfr_mul(r10860, r10858, r10859, MPFR_RNDN);
        mpfr_div(r10861, r10857, r10860, MPFR_RNDN);
        return mpfr_get_d(r10861, MPFR_RNDN);
}

static mpfr_t r10862, r10863, r10864, r10865, r10866, r10867, r10868, r10869, r10870, r10871, r10872, r10873, r10874, r10875, r10876, r10877, r10878, r10879, r10880, r10881, r10882, r10883, r10884, r10885, r10886, r10887, r10888, r10889, r10890, r10891;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10862);
        mpfr_init(r10863);
        mpfr_init(r10864);
        mpfr_init(r10865);
        mpfr_init(r10866);
        mpfr_init_set_str(r10867, "-1.7643916642203566e+269", 10, MPFR_RNDN);
        mpfr_init(r10868);
        mpfr_init(r10869);
        mpfr_init(r10870);
        mpfr_init(r10871);
        mpfr_init(r10872);
        mpfr_init_set_str(r10873, "-1.0217538782175125e-230", 10, MPFR_RNDN);
        mpfr_init(r10874);
        mpfr_init(r10875);
        mpfr_init_set_str(r10876, "3.7054397350458017e-308", 10, MPFR_RNDN);
        mpfr_init(r10877);
        mpfr_init_set_str(r10878, "1", 10, MPFR_RNDN);
        mpfr_init(r10879);
        mpfr_init(r10880);
        mpfr_init(r10881);
        mpfr_init(r10882);
        mpfr_init_set_str(r10883, "6.479072608023693e+301", 10, MPFR_RNDN);
        mpfr_init(r10884);
        mpfr_init(r10885);
        mpfr_init(r10886);
        mpfr_init(r10887);
        mpfr_init(r10888);
        mpfr_init(r10889);
        mpfr_init(r10890);
        mpfr_init(r10891);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r10862, a2, MPFR_RNDN);
        mpfr_set_d(r10863, b1, MPFR_RNDN);
        mpfr_div(r10864, r10862, r10863, MPFR_RNDN);
        mpfr_set_d(r10865, a1, MPFR_RNDN);
        mpfr_mul(r10866, r10864, r10865, MPFR_RNDN);
        ;
        mpfr_set_si(r10868, mpfr_cmp(r10866, r10867) <= 0, MPFR_RNDN);
        mpfr_set_d(r10869, b2, MPFR_RNDN);
        mpfr_div(r10870, r10865, r10869, MPFR_RNDN);
        mpfr_mul(r10871, r10870, r10862, MPFR_RNDN);
        mpfr_div(r10872, r10871, r10863, MPFR_RNDN);
        ;
        mpfr_set_si(r10874, mpfr_cmp(r10866, r10873) <= 0, MPFR_RNDN);
        mpfr_div(r10875, r10866, r10869, MPFR_RNDN);
        ;
        mpfr_set_si(r10877, mpfr_cmp(r10866, r10876) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r10879, r10878, r10869, MPFR_RNDN);
        mpfr_mul(r10880, r10879, r10862, MPFR_RNDN);
        mpfr_mul(r10881, r10865, r10880, MPFR_RNDN);
        mpfr_div(r10882, r10881, r10863, MPFR_RNDN);
        ;
        mpfr_set_si(r10884, mpfr_cmp(r10866, r10883) <= 0, MPFR_RNDN);
        mpfr_mul(r10885, r10865, r10862, MPFR_RNDN);
        mpfr_mul(r10886, r10869, r10863, MPFR_RNDN);
        mpfr_div(r10887, r10885, r10886, MPFR_RNDN);
        if (mpfr_get_si(r10884, MPFR_RNDN)) { mpfr_set(r10888, r10875, MPFR_RNDN); } else { mpfr_set(r10888, r10887, MPFR_RNDN); };
        if (mpfr_get_si(r10877, MPFR_RNDN)) { mpfr_set(r10889, r10882, MPFR_RNDN); } else { mpfr_set(r10889, r10888, MPFR_RNDN); };
        if (mpfr_get_si(r10874, MPFR_RNDN)) { mpfr_set(r10890, r10875, MPFR_RNDN); } else { mpfr_set(r10890, r10889, MPFR_RNDN); };
        if (mpfr_get_si(r10868, MPFR_RNDN)) { mpfr_set(r10891, r10872, MPFR_RNDN); } else { mpfr_set(r10891, r10890, MPFR_RNDN); };
        return mpfr_get_d(r10891, MPFR_RNDN);
}

static mpfr_t r10892, r10893, r10894, r10895, r10896, r10897, r10898, r10899, r10900, r10901, r10902, r10903, r10904, r10905, r10906, r10907, r10908, r10909, r10910, r10911, r10912, r10913, r10914, r10915, r10916, r10917, r10918, r10919, r10920, r10921;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10892);
        mpfr_init(r10893);
        mpfr_init(r10894);
        mpfr_init(r10895);
        mpfr_init(r10896);
        mpfr_init_set_str(r10897, "-1.7643916642203566e+269", 10, MPFR_RNDN);
        mpfr_init(r10898);
        mpfr_init(r10899);
        mpfr_init(r10900);
        mpfr_init(r10901);
        mpfr_init(r10902);
        mpfr_init_set_str(r10903, "-1.0217538782175125e-230", 10, MPFR_RNDN);
        mpfr_init(r10904);
        mpfr_init(r10905);
        mpfr_init_set_str(r10906, "3.7054397350458017e-308", 10, MPFR_RNDN);
        mpfr_init(r10907);
        mpfr_init_set_str(r10908, "1", 10, MPFR_RNDN);
        mpfr_init(r10909);
        mpfr_init(r10910);
        mpfr_init(r10911);
        mpfr_init(r10912);
        mpfr_init_set_str(r10913, "6.479072608023693e+301", 10, MPFR_RNDN);
        mpfr_init(r10914);
        mpfr_init(r10915);
        mpfr_init(r10916);
        mpfr_init(r10917);
        mpfr_init(r10918);
        mpfr_init(r10919);
        mpfr_init(r10920);
        mpfr_init(r10921);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r10892, a2, MPFR_RNDN);
        mpfr_set_d(r10893, b1, MPFR_RNDN);
        mpfr_div(r10894, r10892, r10893, MPFR_RNDN);
        mpfr_set_d(r10895, a1, MPFR_RNDN);
        mpfr_mul(r10896, r10894, r10895, MPFR_RNDN);
        ;
        mpfr_set_si(r10898, mpfr_cmp(r10896, r10897) <= 0, MPFR_RNDN);
        mpfr_set_d(r10899, b2, MPFR_RNDN);
        mpfr_div(r10900, r10895, r10899, MPFR_RNDN);
        mpfr_mul(r10901, r10900, r10892, MPFR_RNDN);
        mpfr_div(r10902, r10901, r10893, MPFR_RNDN);
        ;
        mpfr_set_si(r10904, mpfr_cmp(r10896, r10903) <= 0, MPFR_RNDN);
        mpfr_div(r10905, r10896, r10899, MPFR_RNDN);
        ;
        mpfr_set_si(r10907, mpfr_cmp(r10896, r10906) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r10909, r10908, r10899, MPFR_RNDN);
        mpfr_mul(r10910, r10909, r10892, MPFR_RNDN);
        mpfr_mul(r10911, r10895, r10910, MPFR_RNDN);
        mpfr_div(r10912, r10911, r10893, MPFR_RNDN);
        ;
        mpfr_set_si(r10914, mpfr_cmp(r10896, r10913) <= 0, MPFR_RNDN);
        mpfr_mul(r10915, r10895, r10892, MPFR_RNDN);
        mpfr_mul(r10916, r10899, r10893, MPFR_RNDN);
        mpfr_div(r10917, r10915, r10916, MPFR_RNDN);
        if (mpfr_get_si(r10914, MPFR_RNDN)) { mpfr_set(r10918, r10905, MPFR_RNDN); } else { mpfr_set(r10918, r10917, MPFR_RNDN); };
        if (mpfr_get_si(r10907, MPFR_RNDN)) { mpfr_set(r10919, r10912, MPFR_RNDN); } else { mpfr_set(r10919, r10918, MPFR_RNDN); };
        if (mpfr_get_si(r10904, MPFR_RNDN)) { mpfr_set(r10920, r10905, MPFR_RNDN); } else { mpfr_set(r10920, r10919, MPFR_RNDN); };
        if (mpfr_get_si(r10898, MPFR_RNDN)) { mpfr_set(r10921, r10902, MPFR_RNDN); } else { mpfr_set(r10921, r10920, MPFR_RNDN); };
        return mpfr_get_d(r10921, MPFR_RNDN);
}

