#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 r10756 = a1;
        float r10757 = a2;
        float r10758 = r10756 * r10757;
        float r10759 = b1;
        float r10760 = b2;
        float r10761 = r10759 * r10760;
        float r10762 = r10758 / r10761;
        return r10762;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r10763 = a1;
        double r10764 = a2;
        double r10765 = r10763 * r10764;
        double r10766 = b1;
        double r10767 = b2;
        double r10768 = r10766 * r10767;
        double r10769 = r10765 / r10768;
        return r10769;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r10770 = a1;
        float r10771 = b2;
        float r10772 = r10770 / r10771;
        float r10773 = a2;
        float r10774 = r10772 * r10773;
        float r10775 = b1;
        float r10776 = r10774 / r10775;
        float r10777 = -2.615710032324173e+291f;
        bool r10778 = r10776 <= r10777;
        float r10779 = 1.0f;
        float r10780 = r10779 / r10771;
        float r10781 = r10773 / r10775;
        float r10782 = r10780 * r10781;
        float r10783 = r10782 * r10770;
        float r10784 = -6.41222932898153e-261f;
        bool r10785 = r10776 <= r10784;
        float r10786 = 1.3452419404965e-319f;
        bool r10787 = r10776 <= r10786;
        float r10788 = r10773 * r10770;
        float r10789 = r10775 * r10771;
        float r10790 = r10788 / r10789;
        float r10791 = 2.27836726326273e+261f;
        bool r10792 = r10776 <= r10791;
        float r10793 = r10780 * r10773;
        float r10794 = r10775 / r10793;
        float r10795 = r10770 / r10794;
        float r10796 = r10792 ? r10776 : r10795;
        float r10797 = r10787 ? r10790 : r10796;
        float r10798 = r10785 ? r10776 : r10797;
        float r10799 = r10778 ? r10783 : r10798;
        return r10799;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r10800 = a1;
        double r10801 = b2;
        double r10802 = r10800 / r10801;
        double r10803 = a2;
        double r10804 = r10802 * r10803;
        double r10805 = b1;
        double r10806 = r10804 / r10805;
        double r10807 = -2.615710032324173e+291;
        bool r10808 = r10806 <= r10807;
        double r10809 = 1.0;
        double r10810 = r10809 / r10801;
        double r10811 = r10803 / r10805;
        double r10812 = r10810 * r10811;
        double r10813 = r10812 * r10800;
        double r10814 = -6.41222932898153e-261;
        bool r10815 = r10806 <= r10814;
        double r10816 = 1.3452419404965e-319;
        bool r10817 = r10806 <= r10816;
        double r10818 = r10803 * r10800;
        double r10819 = r10805 * r10801;
        double r10820 = r10818 / r10819;
        double r10821 = 2.27836726326273e+261;
        bool r10822 = r10806 <= r10821;
        double r10823 = r10810 * r10803;
        double r10824 = r10805 / r10823;
        double r10825 = r10800 / r10824;
        double r10826 = r10822 ? r10806 : r10825;
        double r10827 = r10817 ? r10820 : r10826;
        double r10828 = r10815 ? r10806 : r10827;
        double r10829 = r10808 ? r10813 : r10828;
        return r10829;
}

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 r10830, r10831, r10832, r10833, r10834, r10835, r10836;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10830);
        mpfr_init(r10831);
        mpfr_init(r10832);
        mpfr_init(r10833);
        mpfr_init(r10834);
        mpfr_init(r10835);
        mpfr_init(r10836);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r10830, a1, MPFR_RNDN);
        mpfr_set_d(r10831, a2, MPFR_RNDN);
        mpfr_mul(r10832, r10830, r10831, MPFR_RNDN);
        mpfr_set_d(r10833, b1, MPFR_RNDN);
        mpfr_set_d(r10834, b2, MPFR_RNDN);
        mpfr_mul(r10835, r10833, r10834, MPFR_RNDN);
        mpfr_div(r10836, r10832, r10835, MPFR_RNDN);
        return mpfr_get_d(r10836, MPFR_RNDN);
}

static mpfr_t r10837, r10838, r10839, r10840, r10841, r10842, r10843, r10844, r10845, r10846, r10847, r10848, r10849, r10850, r10851, r10852, r10853, r10854, r10855, r10856, r10857, r10858, r10859, r10860, r10861, r10862, r10863, r10864, r10865, r10866;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10837);
        mpfr_init(r10838);
        mpfr_init(r10839);
        mpfr_init(r10840);
        mpfr_init(r10841);
        mpfr_init(r10842);
        mpfr_init(r10843);
        mpfr_init_set_str(r10844, "-2.615710032324173e+291", 10, MPFR_RNDN);
        mpfr_init(r10845);
        mpfr_init_set_str(r10846, "1", 10, MPFR_RNDN);
        mpfr_init(r10847);
        mpfr_init(r10848);
        mpfr_init(r10849);
        mpfr_init(r10850);
        mpfr_init_set_str(r10851, "-6.41222932898153e-261", 10, MPFR_RNDN);
        mpfr_init(r10852);
        mpfr_init_set_str(r10853, "1.3452419404965e-319", 10, MPFR_RNDN);
        mpfr_init(r10854);
        mpfr_init(r10855);
        mpfr_init(r10856);
        mpfr_init(r10857);
        mpfr_init_set_str(r10858, "2.27836726326273e+261", 10, MPFR_RNDN);
        mpfr_init(r10859);
        mpfr_init(r10860);
        mpfr_init(r10861);
        mpfr_init(r10862);
        mpfr_init(r10863);
        mpfr_init(r10864);
        mpfr_init(r10865);
        mpfr_init(r10866);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r10837, a1, MPFR_RNDN);
        mpfr_set_d(r10838, b2, MPFR_RNDN);
        mpfr_div(r10839, r10837, r10838, MPFR_RNDN);
        mpfr_set_d(r10840, a2, MPFR_RNDN);
        mpfr_mul(r10841, r10839, r10840, MPFR_RNDN);
        mpfr_set_d(r10842, b1, MPFR_RNDN);
        mpfr_div(r10843, r10841, r10842, MPFR_RNDN);
        ;
        mpfr_set_si(r10845, mpfr_cmp(r10843, r10844) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r10847, r10846, r10838, MPFR_RNDN);
        mpfr_div(r10848, r10840, r10842, MPFR_RNDN);
        mpfr_mul(r10849, r10847, r10848, MPFR_RNDN);
        mpfr_mul(r10850, r10849, r10837, MPFR_RNDN);
        ;
        mpfr_set_si(r10852, mpfr_cmp(r10843, r10851) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10854, mpfr_cmp(r10843, r10853) <= 0, MPFR_RNDN);
        mpfr_mul(r10855, r10840, r10837, MPFR_RNDN);
        mpfr_mul(r10856, r10842, r10838, MPFR_RNDN);
        mpfr_div(r10857, r10855, r10856, MPFR_RNDN);
        ;
        mpfr_set_si(r10859, mpfr_cmp(r10843, r10858) <= 0, MPFR_RNDN);
        mpfr_mul(r10860, r10847, r10840, MPFR_RNDN);
        mpfr_div(r10861, r10842, r10860, MPFR_RNDN);
        mpfr_div(r10862, r10837, r10861, MPFR_RNDN);
        if (mpfr_get_si(r10859, MPFR_RNDN)) { mpfr_set(r10863, r10843, MPFR_RNDN); } else { mpfr_set(r10863, r10862, MPFR_RNDN); };
        if (mpfr_get_si(r10854, MPFR_RNDN)) { mpfr_set(r10864, r10857, MPFR_RNDN); } else { mpfr_set(r10864, r10863, MPFR_RNDN); };
        if (mpfr_get_si(r10852, MPFR_RNDN)) { mpfr_set(r10865, r10843, MPFR_RNDN); } else { mpfr_set(r10865, r10864, MPFR_RNDN); };
        if (mpfr_get_si(r10845, MPFR_RNDN)) { mpfr_set(r10866, r10850, MPFR_RNDN); } else { mpfr_set(r10866, r10865, MPFR_RNDN); };
        return mpfr_get_d(r10866, MPFR_RNDN);
}

static mpfr_t 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, r10892, r10893, r10894, r10895, r10896;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10867);
        mpfr_init(r10868);
        mpfr_init(r10869);
        mpfr_init(r10870);
        mpfr_init(r10871);
        mpfr_init(r10872);
        mpfr_init(r10873);
        mpfr_init_set_str(r10874, "-2.615710032324173e+291", 10, MPFR_RNDN);
        mpfr_init(r10875);
        mpfr_init_set_str(r10876, "1", 10, MPFR_RNDN);
        mpfr_init(r10877);
        mpfr_init(r10878);
        mpfr_init(r10879);
        mpfr_init(r10880);
        mpfr_init_set_str(r10881, "-6.41222932898153e-261", 10, MPFR_RNDN);
        mpfr_init(r10882);
        mpfr_init_set_str(r10883, "1.3452419404965e-319", 10, MPFR_RNDN);
        mpfr_init(r10884);
        mpfr_init(r10885);
        mpfr_init(r10886);
        mpfr_init(r10887);
        mpfr_init_set_str(r10888, "2.27836726326273e+261", 10, MPFR_RNDN);
        mpfr_init(r10889);
        mpfr_init(r10890);
        mpfr_init(r10891);
        mpfr_init(r10892);
        mpfr_init(r10893);
        mpfr_init(r10894);
        mpfr_init(r10895);
        mpfr_init(r10896);
}

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

