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

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

double f_if(float a, float b, float c, float d) {
        float r22837 = a;
        float r22838 = c;
        float r22839 = r22837 * r22838;
        float r22840 = b;
        float r22841 = d;
        float r22842 = r22840 * r22841;
        float r22843 = r22839 + r22842;
        float r22844 = r22838 * r22838;
        float r22845 = r22841 * r22841;
        float r22846 = r22844 + r22845;
        float r22847 = r22843 / r22846;
        return r22847;
}

double f_id(double a, double b, double c, double d) {
        double r22848 = a;
        double r22849 = c;
        double r22850 = r22848 * r22849;
        double r22851 = b;
        double r22852 = d;
        double r22853 = r22851 * r22852;
        double r22854 = r22850 + r22853;
        double r22855 = r22849 * r22849;
        double r22856 = r22852 * r22852;
        double r22857 = r22855 + r22856;
        double r22858 = r22854 / r22857;
        return r22858;
}


double f_of(float a, float b, float c, float d) {
        float r22859 = d;
        float r22860 = -6.688971833544892e+197;
        bool r22861 = r22859 <= r22860;
        float r22862 = b;
        float r22863 = -r22862;
        float r22864 = c;
        float r22865 = hypot(r22864, r22859);
        float r22866 = r22863 / r22865;
        float r22867 = 8.556308424750498e+182;
        bool r22868 = r22859 <= r22867;
        float r22869 = a;
        float r22870 = r22869 * r22864;
        float r22871 = fma(r22862, r22859, r22870);
        float r22872 = 1;
        float r22873 = r22872 / r22865;
        float r22874 = r22871 * r22873;
        float r22875 = r22874 / r22865;
        float r22876 = r22862 / r22865;
        float r22877 = r22868 ? r22875 : r22876;
        float r22878 = r22861 ? r22866 : r22877;
        return r22878;
}

double f_od(double a, double b, double c, double d) {
        double r22879 = d;
        double r22880 = -6.688971833544892e+197;
        bool r22881 = r22879 <= r22880;
        double r22882 = b;
        double r22883 = -r22882;
        double r22884 = c;
        double r22885 = hypot(r22884, r22879);
        double r22886 = r22883 / r22885;
        double r22887 = 8.556308424750498e+182;
        bool r22888 = r22879 <= r22887;
        double r22889 = a;
        double r22890 = r22889 * r22884;
        double r22891 = fma(r22882, r22879, r22890);
        double r22892 = 1;
        double r22893 = r22892 / r22885;
        double r22894 = r22891 * r22893;
        double r22895 = r22894 / r22885;
        double r22896 = r22882 / r22885;
        double r22897 = r22888 ? r22895 : r22896;
        double r22898 = r22881 ? r22886 : r22897;
        return r22898;
}

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 r22899, r22900, r22901, r22902, r22903, r22904, r22905, r22906, r22907, r22908, r22909;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r22899);
        mpfr_init(r22900);
        mpfr_init(r22901);
        mpfr_init(r22902);
        mpfr_init(r22903);
        mpfr_init(r22904);
        mpfr_init(r22905);
        mpfr_init(r22906);
        mpfr_init(r22907);
        mpfr_init(r22908);
        mpfr_init(r22909);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r22899, a, MPFR_RNDN);
        mpfr_set_d(r22900, c, MPFR_RNDN);
        mpfr_mul(r22901, r22899, r22900, MPFR_RNDN);
        mpfr_set_d(r22902, b, MPFR_RNDN);
        mpfr_set_d(r22903, d, MPFR_RNDN);
        mpfr_mul(r22904, r22902, r22903, MPFR_RNDN);
        mpfr_add(r22905, r22901, r22904, MPFR_RNDN);
        mpfr_mul(r22906, r22900, r22900, MPFR_RNDN);
        mpfr_mul(r22907, r22903, r22903, MPFR_RNDN);
        mpfr_add(r22908, r22906, r22907, MPFR_RNDN);
        mpfr_div(r22909, r22905, r22908, MPFR_RNDN);
        return mpfr_get_d(r22909, MPFR_RNDN);
}

static mpfr_t r22910, r22911, r22912, r22913, r22914, r22915, r22916, r22917, r22918, r22919, r22920, r22921, r22922, r22923, r22924, r22925, r22926, r22927, r22928, r22929;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22910);
        mpfr_init_set_str(r22911, "-6.688971833544892e+197", 10, MPFR_RNDN);
        mpfr_init(r22912);
        mpfr_init(r22913);
        mpfr_init(r22914);
        mpfr_init(r22915);
        mpfr_init(r22916);
        mpfr_init(r22917);
        mpfr_init_set_str(r22918, "8.556308424750498e+182", 10, MPFR_RNDN);
        mpfr_init(r22919);
        mpfr_init(r22920);
        mpfr_init(r22921);
        mpfr_init(r22922);
        mpfr_init_set_str(r22923, "1", 10, MPFR_RNDN);
        mpfr_init(r22924);
        mpfr_init(r22925);
        mpfr_init(r22926);
        mpfr_init(r22927);
        mpfr_init(r22928);
        mpfr_init(r22929);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r22910, d, MPFR_RNDN);
        ;
        mpfr_set_si(r22912, mpfr_cmp(r22910, r22911) <= 0, MPFR_RNDN);
        mpfr_set_d(r22913, b, MPFR_RNDN);
        mpfr_neg(r22914, r22913, MPFR_RNDN);
        mpfr_set_d(r22915, c, MPFR_RNDN);
        mpfr_hypot(r22916, r22915, r22910, MPFR_RNDN);
        mpfr_div(r22917, r22914, r22916, MPFR_RNDN);
        ;
        mpfr_set_si(r22919, mpfr_cmp(r22910, r22918) <= 0, MPFR_RNDN);
        mpfr_set_d(r22920, a, MPFR_RNDN);
        mpfr_mul(r22921, r22920, r22915, MPFR_RNDN);
        mpfr_fma(r22922, r22913, r22910, r22921, MPFR_RNDN);
        ;
        mpfr_div(r22924, r22923, r22916, MPFR_RNDN);
        mpfr_mul(r22925, r22922, r22924, MPFR_RNDN);
        mpfr_div(r22926, r22925, r22916, MPFR_RNDN);
        mpfr_div(r22927, r22913, r22916, MPFR_RNDN);
        if (mpfr_get_si(r22919, MPFR_RNDN)) { mpfr_set(r22928, r22926, MPFR_RNDN); } else { mpfr_set(r22928, r22927, MPFR_RNDN); };
        if (mpfr_get_si(r22912, MPFR_RNDN)) { mpfr_set(r22929, r22917, MPFR_RNDN); } else { mpfr_set(r22929, r22928, MPFR_RNDN); };
        return mpfr_get_d(r22929, MPFR_RNDN);
}

static mpfr_t r22930, r22931, r22932, r22933, r22934, r22935, r22936, r22937, r22938, r22939, r22940, r22941, r22942, r22943, r22944, r22945, r22946, r22947, r22948, r22949;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22930);
        mpfr_init_set_str(r22931, "-6.688971833544892e+197", 10, MPFR_RNDN);
        mpfr_init(r22932);
        mpfr_init(r22933);
        mpfr_init(r22934);
        mpfr_init(r22935);
        mpfr_init(r22936);
        mpfr_init(r22937);
        mpfr_init_set_str(r22938, "8.556308424750498e+182", 10, MPFR_RNDN);
        mpfr_init(r22939);
        mpfr_init(r22940);
        mpfr_init(r22941);
        mpfr_init(r22942);
        mpfr_init_set_str(r22943, "1", 10, MPFR_RNDN);
        mpfr_init(r22944);
        mpfr_init(r22945);
        mpfr_init(r22946);
        mpfr_init(r22947);
        mpfr_init(r22948);
        mpfr_init(r22949);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r22930, d, MPFR_RNDN);
        ;
        mpfr_set_si(r22932, mpfr_cmp(r22930, r22931) <= 0, MPFR_RNDN);
        mpfr_set_d(r22933, b, MPFR_RNDN);
        mpfr_neg(r22934, r22933, MPFR_RNDN);
        mpfr_set_d(r22935, c, MPFR_RNDN);
        mpfr_hypot(r22936, r22935, r22930, MPFR_RNDN);
        mpfr_div(r22937, r22934, r22936, MPFR_RNDN);
        ;
        mpfr_set_si(r22939, mpfr_cmp(r22930, r22938) <= 0, MPFR_RNDN);
        mpfr_set_d(r22940, a, MPFR_RNDN);
        mpfr_mul(r22941, r22940, r22935, MPFR_RNDN);
        mpfr_fma(r22942, r22933, r22930, r22941, MPFR_RNDN);
        ;
        mpfr_div(r22944, r22943, r22936, MPFR_RNDN);
        mpfr_mul(r22945, r22942, r22944, MPFR_RNDN);
        mpfr_div(r22946, r22945, r22936, MPFR_RNDN);
        mpfr_div(r22947, r22933, r22936, MPFR_RNDN);
        if (mpfr_get_si(r22939, MPFR_RNDN)) { mpfr_set(r22948, r22946, MPFR_RNDN); } else { mpfr_set(r22948, r22947, MPFR_RNDN); };
        if (mpfr_get_si(r22932, MPFR_RNDN)) { mpfr_set(r22949, r22937, MPFR_RNDN); } else { mpfr_set(r22949, r22948, MPFR_RNDN); };
        return mpfr_get_d(r22949, MPFR_RNDN);
}

