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

char *name = "Complex division, imag part";

double f_if(float a, float b, float c, float d) {
        float r9807 = b;
        float r9808 = c;
        float r9809 = r9807 * r9808;
        float r9810 = a;
        float r9811 = d;
        float r9812 = r9810 * r9811;
        float r9813 = r9809 - r9812;
        float r9814 = r9808 * r9808;
        float r9815 = r9811 * r9811;
        float r9816 = r9814 + r9815;
        float r9817 = r9813 / r9816;
        return r9817;
}

double f_id(double a, double b, double c, double d) {
        double r9818 = b;
        double r9819 = c;
        double r9820 = r9818 * r9819;
        double r9821 = a;
        double r9822 = d;
        double r9823 = r9821 * r9822;
        double r9824 = r9820 - r9823;
        double r9825 = r9819 * r9819;
        double r9826 = r9822 * r9822;
        double r9827 = r9825 + r9826;
        double r9828 = r9824 / r9827;
        return r9828;
}


double f_of(float a, float b, float c, float d) {
        float r9829 = c;
        float r9830 = -4.096634773283418e+142f;
        bool r9831 = r9829 <= r9830;
        float r9832 = b;
        float r9833 = -r9832;
        float r9834 = d;
        float r9835 = hypot(r9829, r9834);
        float r9836 = r9833 / r9835;
        float r9837 = 3.2262988396523094e+184f;
        bool r9838 = r9829 <= r9837;
        float r9839 = r9832 * r9829;
        float r9840 = a;
        float r9841 = r9834 * r9840;
        float r9842 = r9839 - r9841;
        float r9843 = r9842 / r9835;
        float r9844 = r9843 / r9835;
        float r9845 = r9832 / r9835;
        float r9846 = r9838 ? r9844 : r9845;
        float r9847 = r9831 ? r9836 : r9846;
        return r9847;
}

double f_od(double a, double b, double c, double d) {
        double r9848 = c;
        double r9849 = -4.096634773283418e+142;
        bool r9850 = r9848 <= r9849;
        double r9851 = b;
        double r9852 = -r9851;
        double r9853 = d;
        double r9854 = hypot(r9848, r9853);
        double r9855 = r9852 / r9854;
        double r9856 = 3.2262988396523094e+184;
        bool r9857 = r9848 <= r9856;
        double r9858 = r9851 * r9848;
        double r9859 = a;
        double r9860 = r9853 * r9859;
        double r9861 = r9858 - r9860;
        double r9862 = r9861 / r9854;
        double r9863 = r9862 / r9854;
        double r9864 = r9851 / r9854;
        double r9865 = r9857 ? r9863 : r9864;
        double r9866 = r9850 ? r9855 : r9865;
        return r9866;
}

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 r9867, r9868, r9869, r9870, r9871, r9872, r9873, r9874, r9875, r9876, r9877;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9867);
        mpfr_init(r9868);
        mpfr_init(r9869);
        mpfr_init(r9870);
        mpfr_init(r9871);
        mpfr_init(r9872);
        mpfr_init(r9873);
        mpfr_init(r9874);
        mpfr_init(r9875);
        mpfr_init(r9876);
        mpfr_init(r9877);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r9867, b, MPFR_RNDN);
        mpfr_set_d(r9868, c, MPFR_RNDN);
        mpfr_mul(r9869, r9867, r9868, MPFR_RNDN);
        mpfr_set_d(r9870, a, MPFR_RNDN);
        mpfr_set_d(r9871, d, MPFR_RNDN);
        mpfr_mul(r9872, r9870, r9871, MPFR_RNDN);
        mpfr_sub(r9873, r9869, r9872, MPFR_RNDN);
        mpfr_mul(r9874, r9868, r9868, MPFR_RNDN);
        mpfr_mul(r9875, r9871, r9871, MPFR_RNDN);
        mpfr_add(r9876, r9874, r9875, MPFR_RNDN);
        mpfr_div(r9877, r9873, r9876, MPFR_RNDN);
        return mpfr_get_d(r9877, MPFR_RNDN);
}

static mpfr_t r9878, r9879, r9880, r9881, r9882, r9883, r9884, r9885, r9886, r9887, r9888, r9889, r9890, r9891, r9892, r9893, r9894, r9895, r9896;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9878);
        mpfr_init_set_str(r9879, "-4.096634773283418e+142", 10, MPFR_RNDN);
        mpfr_init(r9880);
        mpfr_init(r9881);
        mpfr_init(r9882);
        mpfr_init(r9883);
        mpfr_init(r9884);
        mpfr_init(r9885);
        mpfr_init_set_str(r9886, "3.2262988396523094e+184", 10, MPFR_RNDN);
        mpfr_init(r9887);
        mpfr_init(r9888);
        mpfr_init(r9889);
        mpfr_init(r9890);
        mpfr_init(r9891);
        mpfr_init(r9892);
        mpfr_init(r9893);
        mpfr_init(r9894);
        mpfr_init(r9895);
        mpfr_init(r9896);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r9878, c, MPFR_RNDN);
        ;
        mpfr_set_si(r9880, mpfr_cmp(r9878, r9879) <= 0, MPFR_RNDN);
        mpfr_set_d(r9881, b, MPFR_RNDN);
        mpfr_neg(r9882, r9881, MPFR_RNDN);
        mpfr_set_d(r9883, d, MPFR_RNDN);
        mpfr_hypot(r9884, r9878, r9883, MPFR_RNDN);
        mpfr_div(r9885, r9882, r9884, MPFR_RNDN);
        ;
        mpfr_set_si(r9887, mpfr_cmp(r9878, r9886) <= 0, MPFR_RNDN);
        mpfr_mul(r9888, r9881, r9878, MPFR_RNDN);
        mpfr_set_d(r9889, a, MPFR_RNDN);
        mpfr_mul(r9890, r9883, r9889, MPFR_RNDN);
        mpfr_sub(r9891, r9888, r9890, MPFR_RNDN);
        mpfr_div(r9892, r9891, r9884, MPFR_RNDN);
        mpfr_div(r9893, r9892, r9884, MPFR_RNDN);
        mpfr_div(r9894, r9881, r9884, MPFR_RNDN);
        if (mpfr_get_si(r9887, MPFR_RNDN)) { mpfr_set(r9895, r9893, MPFR_RNDN); } else { mpfr_set(r9895, r9894, MPFR_RNDN); };
        if (mpfr_get_si(r9880, MPFR_RNDN)) { mpfr_set(r9896, r9885, MPFR_RNDN); } else { mpfr_set(r9896, r9895, MPFR_RNDN); };
        return mpfr_get_d(r9896, MPFR_RNDN);
}

static mpfr_t r9897, r9898, r9899, r9900, r9901, r9902, r9903, r9904, r9905, r9906, r9907, r9908, r9909, r9910, r9911, r9912, r9913, r9914, r9915;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9897);
        mpfr_init_set_str(r9898, "-4.096634773283418e+142", 10, MPFR_RNDN);
        mpfr_init(r9899);
        mpfr_init(r9900);
        mpfr_init(r9901);
        mpfr_init(r9902);
        mpfr_init(r9903);
        mpfr_init(r9904);
        mpfr_init_set_str(r9905, "3.2262988396523094e+184", 10, MPFR_RNDN);
        mpfr_init(r9906);
        mpfr_init(r9907);
        mpfr_init(r9908);
        mpfr_init(r9909);
        mpfr_init(r9910);
        mpfr_init(r9911);
        mpfr_init(r9912);
        mpfr_init(r9913);
        mpfr_init(r9914);
        mpfr_init(r9915);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r9897, c, MPFR_RNDN);
        ;
        mpfr_set_si(r9899, mpfr_cmp(r9897, r9898) <= 0, MPFR_RNDN);
        mpfr_set_d(r9900, b, MPFR_RNDN);
        mpfr_neg(r9901, r9900, MPFR_RNDN);
        mpfr_set_d(r9902, d, MPFR_RNDN);
        mpfr_hypot(r9903, r9897, r9902, MPFR_RNDN);
        mpfr_div(r9904, r9901, r9903, MPFR_RNDN);
        ;
        mpfr_set_si(r9906, mpfr_cmp(r9897, r9905) <= 0, MPFR_RNDN);
        mpfr_mul(r9907, r9900, r9897, MPFR_RNDN);
        mpfr_set_d(r9908, a, MPFR_RNDN);
        mpfr_mul(r9909, r9902, r9908, MPFR_RNDN);
        mpfr_sub(r9910, r9907, r9909, MPFR_RNDN);
        mpfr_div(r9911, r9910, r9903, MPFR_RNDN);
        mpfr_div(r9912, r9911, r9903, MPFR_RNDN);
        mpfr_div(r9913, r9900, r9903, MPFR_RNDN);
        if (mpfr_get_si(r9906, MPFR_RNDN)) { mpfr_set(r9914, r9912, MPFR_RNDN); } else { mpfr_set(r9914, r9913, MPFR_RNDN); };
        if (mpfr_get_si(r9899, MPFR_RNDN)) { mpfr_set(r9915, r9904, MPFR_RNDN); } else { mpfr_set(r9915, r9914, MPFR_RNDN); };
        return mpfr_get_d(r9915, MPFR_RNDN);
}

