#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 r10892 = a1;
        float r10893 = a2;
        float r10894 = r10892 * r10893;
        float r10895 = b1;
        float r10896 = b2;
        float r10897 = r10895 * r10896;
        float r10898 = r10894 / r10897;
        return r10898;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r10899 = a1;
        double r10900 = a2;
        double r10901 = r10899 * r10900;
        double r10902 = b1;
        double r10903 = b2;
        double r10904 = r10902 * r10903;
        double r10905 = r10901 / r10904;
        return r10905;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r10906 = a2;
        float r10907 = b1;
        float r10908 = r10906 / r10907;
        float r10909 = a1;
        float r10910 = r10908 * r10909;
        float r10911 = -1.7643916642203566e+269f;
        bool r10912 = r10910 <= r10911;
        float r10913 = b2;
        float r10914 = r10909 / r10913;
        float r10915 = r10914 * r10906;
        float r10916 = r10915 / r10907;
        float r10917 = -1.0217538782175125e-230f;
        bool r10918 = r10910 <= r10917;
        float r10919 = r10910 / r10913;
        float r10920 = 3.7054397350458017e-308f;
        bool r10921 = r10910 <= r10920;
        float r10922 = 1.0f;
        float r10923 = r10922 / r10913;
        float r10924 = r10923 * r10906;
        float r10925 = r10909 * r10924;
        float r10926 = r10925 / r10907;
        float r10927 = 6.479072608023693e+301f;
        bool r10928 = r10910 <= r10927;
        float r10929 = r10909 * r10906;
        float r10930 = r10913 * r10907;
        float r10931 = r10929 / r10930;
        float r10932 = r10928 ? r10919 : r10931;
        float r10933 = r10921 ? r10926 : r10932;
        float r10934 = r10918 ? r10919 : r10933;
        float r10935 = r10912 ? r10916 : r10934;
        return r10935;
}

double f_od(double a1, double a2, double b1, double b2) {
        double r10936 = a2;
        double r10937 = b1;
        double r10938 = r10936 / r10937;
        double r10939 = a1;
        double r10940 = r10938 * r10939;
        double r10941 = -1.7643916642203566e+269;
        bool r10942 = r10940 <= r10941;
        double r10943 = b2;
        double r10944 = r10939 / r10943;
        double r10945 = r10944 * r10936;
        double r10946 = r10945 / r10937;
        double r10947 = -1.0217538782175125e-230;
        bool r10948 = r10940 <= r10947;
        double r10949 = r10940 / r10943;
        double r10950 = 3.7054397350458017e-308;
        bool r10951 = r10940 <= r10950;
        double r10952 = 1.0;
        double r10953 = r10952 / r10943;
        double r10954 = r10953 * r10936;
        double r10955 = r10939 * r10954;
        double r10956 = r10955 / r10937;
        double r10957 = 6.479072608023693e+301;
        bool r10958 = r10940 <= r10957;
        double r10959 = r10939 * r10936;
        double r10960 = r10943 * r10937;
        double r10961 = r10959 / r10960;
        double r10962 = r10958 ? r10949 : r10961;
        double r10963 = r10951 ? r10956 : r10962;
        double r10964 = r10948 ? r10949 : r10963;
        double r10965 = r10942 ? r10946 : r10964;
        return r10965;
}

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 r10966, r10967, r10968, r10969, r10970, r10971, r10972;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10966);
        mpfr_init(r10967);
        mpfr_init(r10968);
        mpfr_init(r10969);
        mpfr_init(r10970);
        mpfr_init(r10971);
        mpfr_init(r10972);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r10966, a1, MPFR_RNDN);
        mpfr_set_d(r10967, a2, MPFR_RNDN);
        mpfr_mul(r10968, r10966, r10967, MPFR_RNDN);
        mpfr_set_d(r10969, b1, MPFR_RNDN);
        mpfr_set_d(r10970, b2, MPFR_RNDN);
        mpfr_mul(r10971, r10969, r10970, MPFR_RNDN);
        mpfr_div(r10972, r10968, r10971, MPFR_RNDN);
        return mpfr_get_d(r10972, MPFR_RNDN);
}

static mpfr_t r10973, r10974, r10975, r10976, r10977, r10978, r10979, r10980, r10981, r10982, r10983, r10984, r10985, r10986, r10987, r10988, r10989, r10990, r10991, r10992, r10993, r10994, r10995, r10996, r10997, r10998, r10999, r11000, r11001, r11002;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10973);
        mpfr_init(r10974);
        mpfr_init(r10975);
        mpfr_init(r10976);
        mpfr_init(r10977);
        mpfr_init_set_str(r10978, "-1.7643916642203566e+269", 10, MPFR_RNDN);
        mpfr_init(r10979);
        mpfr_init(r10980);
        mpfr_init(r10981);
        mpfr_init(r10982);
        mpfr_init(r10983);
        mpfr_init_set_str(r10984, "-1.0217538782175125e-230", 10, MPFR_RNDN);
        mpfr_init(r10985);
        mpfr_init(r10986);
        mpfr_init_set_str(r10987, "3.7054397350458017e-308", 10, MPFR_RNDN);
        mpfr_init(r10988);
        mpfr_init_set_str(r10989, "1", 10, MPFR_RNDN);
        mpfr_init(r10990);
        mpfr_init(r10991);
        mpfr_init(r10992);
        mpfr_init(r10993);
        mpfr_init_set_str(r10994, "6.479072608023693e+301", 10, MPFR_RNDN);
        mpfr_init(r10995);
        mpfr_init(r10996);
        mpfr_init(r10997);
        mpfr_init(r10998);
        mpfr_init(r10999);
        mpfr_init(r11000);
        mpfr_init(r11001);
        mpfr_init(r11002);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r10973, a2, MPFR_RNDN);
        mpfr_set_d(r10974, b1, MPFR_RNDN);
        mpfr_div(r10975, r10973, r10974, MPFR_RNDN);
        mpfr_set_d(r10976, a1, MPFR_RNDN);
        mpfr_mul(r10977, r10975, r10976, MPFR_RNDN);
        ;
        mpfr_set_si(r10979, mpfr_cmp(r10977, r10978) <= 0, MPFR_RNDN);
        mpfr_set_d(r10980, b2, MPFR_RNDN);
        mpfr_div(r10981, r10976, r10980, MPFR_RNDN);
        mpfr_mul(r10982, r10981, r10973, MPFR_RNDN);
        mpfr_div(r10983, r10982, r10974, MPFR_RNDN);
        ;
        mpfr_set_si(r10985, mpfr_cmp(r10977, r10984) <= 0, MPFR_RNDN);
        mpfr_div(r10986, r10977, r10980, MPFR_RNDN);
        ;
        mpfr_set_si(r10988, mpfr_cmp(r10977, r10987) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r10990, r10989, r10980, MPFR_RNDN);
        mpfr_mul(r10991, r10990, r10973, MPFR_RNDN);
        mpfr_mul(r10992, r10976, r10991, MPFR_RNDN);
        mpfr_div(r10993, r10992, r10974, MPFR_RNDN);
        ;
        mpfr_set_si(r10995, mpfr_cmp(r10977, r10994) <= 0, MPFR_RNDN);
        mpfr_mul(r10996, r10976, r10973, MPFR_RNDN);
        mpfr_mul(r10997, r10980, r10974, MPFR_RNDN);
        mpfr_div(r10998, r10996, r10997, MPFR_RNDN);
        if (mpfr_get_si(r10995, MPFR_RNDN)) { mpfr_set(r10999, r10986, MPFR_RNDN); } else { mpfr_set(r10999, r10998, MPFR_RNDN); };
        if (mpfr_get_si(r10988, MPFR_RNDN)) { mpfr_set(r11000, r10993, MPFR_RNDN); } else { mpfr_set(r11000, r10999, MPFR_RNDN); };
        if (mpfr_get_si(r10985, MPFR_RNDN)) { mpfr_set(r11001, r10986, MPFR_RNDN); } else { mpfr_set(r11001, r11000, MPFR_RNDN); };
        if (mpfr_get_si(r10979, MPFR_RNDN)) { mpfr_set(r11002, r10983, MPFR_RNDN); } else { mpfr_set(r11002, r11001, MPFR_RNDN); };
        return mpfr_get_d(r11002, MPFR_RNDN);
}

static mpfr_t r11003, r11004, r11005, r11006, r11007, r11008, r11009, r11010, r11011, r11012, r11013, r11014, r11015, r11016, r11017, r11018, r11019, r11020, r11021, r11022, r11023, r11024, r11025, r11026, r11027, r11028, r11029, r11030, r11031, r11032;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11003);
        mpfr_init(r11004);
        mpfr_init(r11005);
        mpfr_init(r11006);
        mpfr_init(r11007);
        mpfr_init_set_str(r11008, "-1.7643916642203566e+269", 10, MPFR_RNDN);
        mpfr_init(r11009);
        mpfr_init(r11010);
        mpfr_init(r11011);
        mpfr_init(r11012);
        mpfr_init(r11013);
        mpfr_init_set_str(r11014, "-1.0217538782175125e-230", 10, MPFR_RNDN);
        mpfr_init(r11015);
        mpfr_init(r11016);
        mpfr_init_set_str(r11017, "3.7054397350458017e-308", 10, MPFR_RNDN);
        mpfr_init(r11018);
        mpfr_init_set_str(r11019, "1", 10, MPFR_RNDN);
        mpfr_init(r11020);
        mpfr_init(r11021);
        mpfr_init(r11022);
        mpfr_init(r11023);
        mpfr_init_set_str(r11024, "6.479072608023693e+301", 10, MPFR_RNDN);
        mpfr_init(r11025);
        mpfr_init(r11026);
        mpfr_init(r11027);
        mpfr_init(r11028);
        mpfr_init(r11029);
        mpfr_init(r11030);
        mpfr_init(r11031);
        mpfr_init(r11032);
}

double f_dm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r11003, a2, MPFR_RNDN);
        mpfr_set_d(r11004, b1, MPFR_RNDN);
        mpfr_div(r11005, r11003, r11004, MPFR_RNDN);
        mpfr_set_d(r11006, a1, MPFR_RNDN);
        mpfr_mul(r11007, r11005, r11006, MPFR_RNDN);
        ;
        mpfr_set_si(r11009, mpfr_cmp(r11007, r11008) <= 0, MPFR_RNDN);
        mpfr_set_d(r11010, b2, MPFR_RNDN);
        mpfr_div(r11011, r11006, r11010, MPFR_RNDN);
        mpfr_mul(r11012, r11011, r11003, MPFR_RNDN);
        mpfr_div(r11013, r11012, r11004, MPFR_RNDN);
        ;
        mpfr_set_si(r11015, mpfr_cmp(r11007, r11014) <= 0, MPFR_RNDN);
        mpfr_div(r11016, r11007, r11010, MPFR_RNDN);
        ;
        mpfr_set_si(r11018, mpfr_cmp(r11007, r11017) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11020, r11019, r11010, MPFR_RNDN);
        mpfr_mul(r11021, r11020, r11003, MPFR_RNDN);
        mpfr_mul(r11022, r11006, r11021, MPFR_RNDN);
        mpfr_div(r11023, r11022, r11004, MPFR_RNDN);
        ;
        mpfr_set_si(r11025, mpfr_cmp(r11007, r11024) <= 0, MPFR_RNDN);
        mpfr_mul(r11026, r11006, r11003, MPFR_RNDN);
        mpfr_mul(r11027, r11010, r11004, MPFR_RNDN);
        mpfr_div(r11028, r11026, r11027, MPFR_RNDN);
        if (mpfr_get_si(r11025, MPFR_RNDN)) { mpfr_set(r11029, r11016, MPFR_RNDN); } else { mpfr_set(r11029, r11028, MPFR_RNDN); };
        if (mpfr_get_si(r11018, MPFR_RNDN)) { mpfr_set(r11030, r11023, MPFR_RNDN); } else { mpfr_set(r11030, r11029, MPFR_RNDN); };
        if (mpfr_get_si(r11015, MPFR_RNDN)) { mpfr_set(r11031, r11016, MPFR_RNDN); } else { mpfr_set(r11031, r11030, MPFR_RNDN); };
        if (mpfr_get_si(r11009, MPFR_RNDN)) { mpfr_set(r11032, r11013, MPFR_RNDN); } else { mpfr_set(r11032, r11031, MPFR_RNDN); };
        return mpfr_get_d(r11032, MPFR_RNDN);
}

