#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 r10861 = a1;
        float r10862 = a2;
        float r10863 = r10861 * r10862;
        float r10864 = b1;
        float r10865 = b2;
        float r10866 = r10864 * r10865;
        float r10867 = r10863 / r10866;
        return r10867;
}

double f_id(double a1, double a2, double b1, double b2) {
        double r10868 = a1;
        double r10869 = a2;
        double r10870 = r10868 * r10869;
        double r10871 = b1;
        double r10872 = b2;
        double r10873 = r10871 * r10872;
        double r10874 = r10870 / r10873;
        return r10874;
}


double f_of(float a1, float a2, float b1, float b2) {
        float r10875 = a2;
        float r10876 = b1;
        float r10877 = r10875 / r10876;
        float r10878 = a1;
        float r10879 = r10877 * r10878;
        float r10880 = -1.7643916642203566e+269f;
        bool r10881 = r10879 <= r10880;
        float r10882 = b2;
        float r10883 = r10878 / r10882;
        float r10884 = r10883 * r10875;
        float r10885 = r10884 / r10876;
        float r10886 = -1.0217538782175125e-230f;
        bool r10887 = r10879 <= r10886;
        float r10888 = r10879 / r10882;
        float r10889 = 3.7054397350458017e-308f;
        bool r10890 = r10879 <= r10889;
        float r10891 = 1.0f;
        float r10892 = r10891 / r10882;
        float r10893 = r10892 * r10875;
        float r10894 = r10878 * r10893;
        float r10895 = r10894 / r10876;
        float r10896 = 6.479072608023693e+301f;
        bool r10897 = r10879 <= r10896;
        float r10898 = r10878 * r10875;
        float r10899 = r10882 * r10876;
        float r10900 = r10898 / r10899;
        float r10901 = r10897 ? r10888 : r10900;
        float r10902 = r10890 ? r10895 : r10901;
        float r10903 = r10887 ? r10888 : r10902;
        float r10904 = r10881 ? r10885 : r10903;
        return r10904;
}

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

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 r10935, r10936, r10937, r10938, r10939, r10940, r10941;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10935);
        mpfr_init(r10936);
        mpfr_init(r10937);
        mpfr_init(r10938);
        mpfr_init(r10939);
        mpfr_init(r10940);
        mpfr_init(r10941);
}

double f_im(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r10935, a1, MPFR_RNDN);
        mpfr_set_d(r10936, a2, MPFR_RNDN);
        mpfr_mul(r10937, r10935, r10936, MPFR_RNDN);
        mpfr_set_d(r10938, b1, MPFR_RNDN);
        mpfr_set_d(r10939, b2, MPFR_RNDN);
        mpfr_mul(r10940, r10938, r10939, MPFR_RNDN);
        mpfr_div(r10941, r10937, r10940, MPFR_RNDN);
        return mpfr_get_d(r10941, MPFR_RNDN);
}

static mpfr_t r10942, r10943, r10944, r10945, r10946, r10947, r10948, r10949, r10950, r10951, r10952, r10953, r10954, r10955, r10956, r10957, r10958, r10959, r10960, r10961, r10962, r10963, r10964, r10965, r10966, r10967, r10968, r10969, r10970, r10971;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10942);
        mpfr_init(r10943);
        mpfr_init(r10944);
        mpfr_init(r10945);
        mpfr_init(r10946);
        mpfr_init_set_str(r10947, "-1.7643916642203566e+269", 10, MPFR_RNDN);
        mpfr_init(r10948);
        mpfr_init(r10949);
        mpfr_init(r10950);
        mpfr_init(r10951);
        mpfr_init(r10952);
        mpfr_init_set_str(r10953, "-1.0217538782175125e-230", 10, MPFR_RNDN);
        mpfr_init(r10954);
        mpfr_init(r10955);
        mpfr_init_set_str(r10956, "3.7054397350458017e-308", 10, MPFR_RNDN);
        mpfr_init(r10957);
        mpfr_init_set_str(r10958, "1", 10, MPFR_RNDN);
        mpfr_init(r10959);
        mpfr_init(r10960);
        mpfr_init(r10961);
        mpfr_init(r10962);
        mpfr_init_set_str(r10963, "6.479072608023693e+301", 10, MPFR_RNDN);
        mpfr_init(r10964);
        mpfr_init(r10965);
        mpfr_init(r10966);
        mpfr_init(r10967);
        mpfr_init(r10968);
        mpfr_init(r10969);
        mpfr_init(r10970);
        mpfr_init(r10971);
}

double f_fm(double a1, double a2, double b1, double b2) {
        mpfr_set_d(r10942, a2, MPFR_RNDN);
        mpfr_set_d(r10943, b1, MPFR_RNDN);
        mpfr_div(r10944, r10942, r10943, MPFR_RNDN);
        mpfr_set_d(r10945, a1, MPFR_RNDN);
        mpfr_mul(r10946, r10944, r10945, MPFR_RNDN);
        ;
        mpfr_set_si(r10948, mpfr_cmp(r10946, r10947) <= 0, MPFR_RNDN);
        mpfr_set_d(r10949, b2, MPFR_RNDN);
        mpfr_div(r10950, r10945, r10949, MPFR_RNDN);
        mpfr_mul(r10951, r10950, r10942, MPFR_RNDN);
        mpfr_div(r10952, r10951, r10943, MPFR_RNDN);
        ;
        mpfr_set_si(r10954, mpfr_cmp(r10946, r10953) <= 0, MPFR_RNDN);
        mpfr_div(r10955, r10946, r10949, MPFR_RNDN);
        ;
        mpfr_set_si(r10957, mpfr_cmp(r10946, r10956) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r10959, r10958, r10949, MPFR_RNDN);
        mpfr_mul(r10960, r10959, r10942, MPFR_RNDN);
        mpfr_mul(r10961, r10945, r10960, MPFR_RNDN);
        mpfr_div(r10962, r10961, r10943, MPFR_RNDN);
        ;
        mpfr_set_si(r10964, mpfr_cmp(r10946, r10963) <= 0, MPFR_RNDN);
        mpfr_mul(r10965, r10945, r10942, MPFR_RNDN);
        mpfr_mul(r10966, r10949, r10943, MPFR_RNDN);
        mpfr_div(r10967, r10965, r10966, MPFR_RNDN);
        if (mpfr_get_si(r10964, MPFR_RNDN)) { mpfr_set(r10968, r10955, MPFR_RNDN); } else { mpfr_set(r10968, r10967, MPFR_RNDN); };
        if (mpfr_get_si(r10957, MPFR_RNDN)) { mpfr_set(r10969, r10962, MPFR_RNDN); } else { mpfr_set(r10969, r10968, MPFR_RNDN); };
        if (mpfr_get_si(r10954, MPFR_RNDN)) { mpfr_set(r10970, r10955, MPFR_RNDN); } else { mpfr_set(r10970, r10969, MPFR_RNDN); };
        if (mpfr_get_si(r10948, MPFR_RNDN)) { mpfr_set(r10971, r10952, MPFR_RNDN); } else { mpfr_set(r10971, r10970, MPFR_RNDN); };
        return mpfr_get_d(r10971, MPFR_RNDN);
}

static mpfr_t r10972, 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;

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

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

