#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "_divideComplex, imaginary part";

double f_if(float x_re, float x_im, float y_re, float y_im) {
        float r9859 = x_im;
        float r9860 = y_re;
        float r9861 = r9859 * r9860;
        float r9862 = x_re;
        float r9863 = y_im;
        float r9864 = r9862 * r9863;
        float r9865 = r9861 - r9864;
        float r9866 = r9860 * r9860;
        float r9867 = r9863 * r9863;
        float r9868 = r9866 + r9867;
        float r9869 = r9865 / r9868;
        return r9869;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r9870 = x_im;
        double r9871 = y_re;
        double r9872 = r9870 * r9871;
        double r9873 = x_re;
        double r9874 = y_im;
        double r9875 = r9873 * r9874;
        double r9876 = r9872 - r9875;
        double r9877 = r9871 * r9871;
        double r9878 = r9874 * r9874;
        double r9879 = r9877 + r9878;
        double r9880 = r9876 / r9879;
        return r9880;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r9881 = y_im;
        float r9882 = -1.376753448750176e+191;
        bool r9883 = r9881 <= r9882;
        float r9884 = x_re;
        float r9885 = y_re;
        float r9886 = hypot(r9885, r9881);
        float r9887 = r9884 / r9886;
        float r9888 = 0.1841955643280176;
        bool r9889 = r9881 <= r9888;
        float r9890 = 1;
        float r9891 = r9890 / r9886;
        float r9892 = x_im;
        float r9893 = r9885 * r9892;
        float r9894 = r9881 * r9884;
        float r9895 = r9893 - r9894;
        float r9896 = r9886 / r9895;
        float r9897 = r9890 / r9896;
        float r9898 = r9891 * r9897;
        float r9899 = r9885 / r9881;
        float r9900 = -r9884;
        float r9901 = fma(r9892, r9899, r9900);
        float r9902 = r9901 / r9886;
        float r9903 = r9889 ? r9898 : r9902;
        float r9904 = r9883 ? r9887 : r9903;
        return r9904;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r9905 = y_im;
        double r9906 = -1.376753448750176e+191;
        bool r9907 = r9905 <= r9906;
        double r9908 = x_re;
        double r9909 = y_re;
        double r9910 = hypot(r9909, r9905);
        double r9911 = r9908 / r9910;
        double r9912 = 0.1841955643280176;
        bool r9913 = r9905 <= r9912;
        double r9914 = 1;
        double r9915 = r9914 / r9910;
        double r9916 = x_im;
        double r9917 = r9909 * r9916;
        double r9918 = r9905 * r9908;
        double r9919 = r9917 - r9918;
        double r9920 = r9910 / r9919;
        double r9921 = r9914 / r9920;
        double r9922 = r9915 * r9921;
        double r9923 = r9909 / r9905;
        double r9924 = -r9908;
        double r9925 = fma(r9916, r9923, r9924);
        double r9926 = r9925 / r9910;
        double r9927 = r9913 ? r9922 : r9926;
        double r9928 = r9907 ? r9911 : r9927;
        return r9928;
}

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 r9929, r9930, r9931, r9932, r9933, r9934, r9935, r9936, r9937, r9938, r9939;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9929);
        mpfr_init(r9930);
        mpfr_init(r9931);
        mpfr_init(r9932);
        mpfr_init(r9933);
        mpfr_init(r9934);
        mpfr_init(r9935);
        mpfr_init(r9936);
        mpfr_init(r9937);
        mpfr_init(r9938);
        mpfr_init(r9939);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9929, x_im, MPFR_RNDN);
        mpfr_set_d(r9930, y_re, MPFR_RNDN);
        mpfr_mul(r9931, r9929, r9930, MPFR_RNDN);
        mpfr_set_d(r9932, x_re, MPFR_RNDN);
        mpfr_set_d(r9933, y_im, MPFR_RNDN);
        mpfr_mul(r9934, r9932, r9933, MPFR_RNDN);
        mpfr_sub(r9935, r9931, r9934, MPFR_RNDN);
        mpfr_mul(r9936, r9930, r9930, MPFR_RNDN);
        mpfr_mul(r9937, r9933, r9933, MPFR_RNDN);
        mpfr_add(r9938, r9936, r9937, MPFR_RNDN);
        mpfr_div(r9939, r9935, r9938, MPFR_RNDN);
        return mpfr_get_d(r9939, MPFR_RNDN);
}

static mpfr_t r9940, r9941, r9942, r9943, r9944, r9945, r9946, r9947, r9948, r9949, r9950, r9951, r9952, r9953, r9954, r9955, r9956, r9957, r9958, r9959, r9960, r9961, r9962, r9963;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9940);
        mpfr_init_set_str(r9941, "-1.376753448750176e+191", 10, MPFR_RNDN);
        mpfr_init(r9942);
        mpfr_init(r9943);
        mpfr_init(r9944);
        mpfr_init(r9945);
        mpfr_init(r9946);
        mpfr_init_set_str(r9947, "0.1841955643280176", 10, MPFR_RNDN);
        mpfr_init(r9948);
        mpfr_init_set_str(r9949, "1", 10, MPFR_RNDN);
        mpfr_init(r9950);
        mpfr_init(r9951);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init(r9955);
        mpfr_init(r9956);
        mpfr_init(r9957);
        mpfr_init(r9958);
        mpfr_init(r9959);
        mpfr_init(r9960);
        mpfr_init(r9961);
        mpfr_init(r9962);
        mpfr_init(r9963);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9940, y_im, MPFR_RNDN);
        ;
        mpfr_set_si(r9942, mpfr_cmp(r9940, r9941) <= 0, MPFR_RNDN);
        mpfr_set_d(r9943, x_re, MPFR_RNDN);
        mpfr_set_d(r9944, y_re, MPFR_RNDN);
        mpfr_hypot(r9945, r9944, r9940, MPFR_RNDN);
        mpfr_div(r9946, r9943, r9945, MPFR_RNDN);
        ;
        mpfr_set_si(r9948, mpfr_cmp(r9940, r9947) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9950, r9949, r9945, MPFR_RNDN);
        mpfr_set_d(r9951, x_im, MPFR_RNDN);
        mpfr_mul(r9952, r9944, r9951, MPFR_RNDN);
        mpfr_mul(r9953, r9940, r9943, MPFR_RNDN);
        mpfr_sub(r9954, r9952, r9953, MPFR_RNDN);
        mpfr_div(r9955, r9945, r9954, MPFR_RNDN);
        mpfr_div(r9956, r9949, r9955, MPFR_RNDN);
        mpfr_mul(r9957, r9950, r9956, MPFR_RNDN);
        mpfr_div(r9958, r9944, r9940, MPFR_RNDN);
        mpfr_neg(r9959, r9943, MPFR_RNDN);
        mpfr_fma(r9960, r9951, r9958, r9959, MPFR_RNDN);
        mpfr_div(r9961, r9960, r9945, MPFR_RNDN);
        if (mpfr_get_si(r9948, MPFR_RNDN)) { mpfr_set(r9962, r9957, MPFR_RNDN); } else { mpfr_set(r9962, r9961, MPFR_RNDN); };
        if (mpfr_get_si(r9942, MPFR_RNDN)) { mpfr_set(r9963, r9946, MPFR_RNDN); } else { mpfr_set(r9963, r9962, MPFR_RNDN); };
        return mpfr_get_d(r9963, MPFR_RNDN);
}

static mpfr_t r9964, r9965, r9966, r9967, r9968, r9969, r9970, r9971, r9972, r9973, r9974, r9975, r9976, r9977, r9978, r9979, r9980, r9981, r9982, r9983, r9984, r9985, r9986, r9987;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9964);
        mpfr_init_set_str(r9965, "-1.376753448750176e+191", 10, MPFR_RNDN);
        mpfr_init(r9966);
        mpfr_init(r9967);
        mpfr_init(r9968);
        mpfr_init(r9969);
        mpfr_init(r9970);
        mpfr_init_set_str(r9971, "0.1841955643280176", 10, MPFR_RNDN);
        mpfr_init(r9972);
        mpfr_init_set_str(r9973, "1", 10, MPFR_RNDN);
        mpfr_init(r9974);
        mpfr_init(r9975);
        mpfr_init(r9976);
        mpfr_init(r9977);
        mpfr_init(r9978);
        mpfr_init(r9979);
        mpfr_init(r9980);
        mpfr_init(r9981);
        mpfr_init(r9982);
        mpfr_init(r9983);
        mpfr_init(r9984);
        mpfr_init(r9985);
        mpfr_init(r9986);
        mpfr_init(r9987);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r9964, y_im, MPFR_RNDN);
        ;
        mpfr_set_si(r9966, mpfr_cmp(r9964, r9965) <= 0, MPFR_RNDN);
        mpfr_set_d(r9967, x_re, MPFR_RNDN);
        mpfr_set_d(r9968, y_re, MPFR_RNDN);
        mpfr_hypot(r9969, r9968, r9964, MPFR_RNDN);
        mpfr_div(r9970, r9967, r9969, MPFR_RNDN);
        ;
        mpfr_set_si(r9972, mpfr_cmp(r9964, r9971) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9974, r9973, r9969, MPFR_RNDN);
        mpfr_set_d(r9975, x_im, MPFR_RNDN);
        mpfr_mul(r9976, r9968, r9975, MPFR_RNDN);
        mpfr_mul(r9977, r9964, r9967, MPFR_RNDN);
        mpfr_sub(r9978, r9976, r9977, MPFR_RNDN);
        mpfr_div(r9979, r9969, r9978, MPFR_RNDN);
        mpfr_div(r9980, r9973, r9979, MPFR_RNDN);
        mpfr_mul(r9981, r9974, r9980, MPFR_RNDN);
        mpfr_div(r9982, r9968, r9964, MPFR_RNDN);
        mpfr_neg(r9983, r9967, MPFR_RNDN);
        mpfr_fma(r9984, r9975, r9982, r9983, MPFR_RNDN);
        mpfr_div(r9985, r9984, r9969, MPFR_RNDN);
        if (mpfr_get_si(r9972, MPFR_RNDN)) { mpfr_set(r9986, r9981, MPFR_RNDN); } else { mpfr_set(r9986, r9985, MPFR_RNDN); };
        if (mpfr_get_si(r9966, MPFR_RNDN)) { mpfr_set(r9987, r9970, MPFR_RNDN); } else { mpfr_set(r9987, r9986, MPFR_RNDN); };
        return mpfr_get_d(r9987, MPFR_RNDN);
}

