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

char *name = "math.sqrt on complex, real part";

double f_if(float re, float im) {
        float r19803 = 0.5f;
        float r19804 = 2.0f;
        float r19805 = re;
        float r19806 = r19805 * r19805;
        float r19807 = im;
        float r19808 = r19807 * r19807;
        float r19809 = r19806 + r19808;
        float r19810 = sqrt(r19809);
        float r19811 = r19810 + r19805;
        float r19812 = r19804 * r19811;
        float r19813 = sqrt(r19812);
        float r19814 = r19803 * r19813;
        return r19814;
}

double f_id(double re, double im) {
        double r19815 = 0.5;
        double r19816 = 2.0;
        double r19817 = re;
        double r19818 = r19817 * r19817;
        double r19819 = im;
        double r19820 = r19819 * r19819;
        double r19821 = r19818 + r19820;
        double r19822 = sqrt(r19821);
        double r19823 = r19822 + r19817;
        double r19824 = r19816 * r19823;
        double r19825 = sqrt(r19824);
        double r19826 = r19815 * r19825;
        return r19826;
}


double f_of(float re, float im) {
        float r19827 = re;
        float r19828 = -1.0527568012471275e-305f;
        bool r19829 = r19827 <= r19828;
        float r19830 = 0.5f;
        float r19831 = 2.0f;
        float r19832 = im;
        float r19833 = r19831 * r19832;
        float r19834 = r19833 * r19832;
        float r19835 = sqrt(r19834);
        float r19836 = r19827 * r19827;
        float r19837 = r19832 * r19832;
        float r19838 = r19836 + r19837;
        float r19839 = sqrt(r19838);
        float r19840 = r19839 - r19827;
        float r19841 = sqrt(r19840);
        float r19842 = r19835 / r19841;
        float r19843 = r19830 * r19842;
        float r19844 = 2.743020608759423e-240f;
        bool r19845 = r19827 <= r19844;
        float r19846 = r19832 + r19827;
        float r19847 = r19831 * r19846;
        float r19848 = sqrt(r19847);
        float r19849 = r19830 * r19848;
        float r19850 = 7.720496126429738e+93f;
        bool r19851 = r19827 <= r19850;
        float r19852 = sqrt(r19839);
        float r19853 = r19852 * r19852;
        float r19854 = r19853 + r19827;
        float r19855 = r19831 * r19854;
        float r19856 = sqrt(r19855);
        float r19857 = r19830 * r19856;
        float r19858 = r19827 + r19827;
        float r19859 = r19831 * r19858;
        float r19860 = sqrt(r19859);
        float r19861 = r19830 * r19860;
        float r19862 = r19851 ? r19857 : r19861;
        float r19863 = r19845 ? r19849 : r19862;
        float r19864 = r19829 ? r19843 : r19863;
        return r19864;
}

double f_od(double re, double im) {
        double r19865 = re;
        double r19866 = -1.0527568012471275e-305;
        bool r19867 = r19865 <= r19866;
        double r19868 = 0.5;
        double r19869 = 2.0;
        double r19870 = im;
        double r19871 = r19869 * r19870;
        double r19872 = r19871 * r19870;
        double r19873 = sqrt(r19872);
        double r19874 = r19865 * r19865;
        double r19875 = r19870 * r19870;
        double r19876 = r19874 + r19875;
        double r19877 = sqrt(r19876);
        double r19878 = r19877 - r19865;
        double r19879 = sqrt(r19878);
        double r19880 = r19873 / r19879;
        double r19881 = r19868 * r19880;
        double r19882 = 2.743020608759423e-240;
        bool r19883 = r19865 <= r19882;
        double r19884 = r19870 + r19865;
        double r19885 = r19869 * r19884;
        double r19886 = sqrt(r19885);
        double r19887 = r19868 * r19886;
        double r19888 = 7.720496126429738e+93;
        bool r19889 = r19865 <= r19888;
        double r19890 = sqrt(r19877);
        double r19891 = r19890 * r19890;
        double r19892 = r19891 + r19865;
        double r19893 = r19869 * r19892;
        double r19894 = sqrt(r19893);
        double r19895 = r19868 * r19894;
        double r19896 = r19865 + r19865;
        double r19897 = r19869 * r19896;
        double r19898 = sqrt(r19897);
        double r19899 = r19868 * r19898;
        double r19900 = r19889 ? r19895 : r19899;
        double r19901 = r19883 ? r19887 : r19900;
        double r19902 = r19867 ? r19881 : r19901;
        return r19902;
}

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 r19903, r19904, r19905, r19906, r19907, r19908, r19909, r19910, r19911, r19912, r19913, r19914;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19903, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19904, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19905);
        mpfr_init(r19906);
        mpfr_init(r19907);
        mpfr_init(r19908);
        mpfr_init(r19909);
        mpfr_init(r19910);
        mpfr_init(r19911);
        mpfr_init(r19912);
        mpfr_init(r19913);
        mpfr_init(r19914);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19905, re, MPFR_RNDN);
        mpfr_mul(r19906, r19905, r19905, MPFR_RNDN);
        mpfr_set_d(r19907, im, MPFR_RNDN);
        mpfr_mul(r19908, r19907, r19907, MPFR_RNDN);
        mpfr_add(r19909, r19906, r19908, MPFR_RNDN);
        mpfr_sqrt(r19910, r19909, MPFR_RNDN);
        mpfr_add(r19911, r19910, r19905, MPFR_RNDN);
        mpfr_mul(r19912, r19904, r19911, MPFR_RNDN);
        mpfr_sqrt(r19913, r19912, MPFR_RNDN);
        mpfr_mul(r19914, r19903, r19913, MPFR_RNDN);
        return mpfr_get_d(r19914, MPFR_RNDN);
}

static mpfr_t r19915, r19916, r19917, r19918, r19919, r19920, r19921, r19922, r19923, r19924, r19925, r19926, r19927, r19928, r19929, r19930, r19931, r19932, r19933, r19934, r19935, r19936, r19937, r19938, r19939, r19940, r19941, r19942, r19943, r19944, r19945, r19946, r19947, r19948, r19949, r19950, r19951, r19952;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19915);
        mpfr_init_set_str(r19916, "-1.0527568012471275e-305", 10, MPFR_RNDN);
        mpfr_init(r19917);
        mpfr_init_set_str(r19918, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19919, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19920);
        mpfr_init(r19921);
        mpfr_init(r19922);
        mpfr_init(r19923);
        mpfr_init(r19924);
        mpfr_init(r19925);
        mpfr_init(r19926);
        mpfr_init(r19927);
        mpfr_init(r19928);
        mpfr_init(r19929);
        mpfr_init(r19930);
        mpfr_init(r19931);
        mpfr_init_set_str(r19932, "2.743020608759423e-240", 10, MPFR_RNDN);
        mpfr_init(r19933);
        mpfr_init(r19934);
        mpfr_init(r19935);
        mpfr_init(r19936);
        mpfr_init(r19937);
        mpfr_init_set_str(r19938, "7.720496126429738e+93", 10, MPFR_RNDN);
        mpfr_init(r19939);
        mpfr_init(r19940);
        mpfr_init(r19941);
        mpfr_init(r19942);
        mpfr_init(r19943);
        mpfr_init(r19944);
        mpfr_init(r19945);
        mpfr_init(r19946);
        mpfr_init(r19947);
        mpfr_init(r19948);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19915, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19917, mpfr_cmp(r19915, r19916) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19920, im, MPFR_RNDN);
        mpfr_mul(r19921, r19919, r19920, MPFR_RNDN);
        mpfr_mul(r19922, r19921, r19920, MPFR_RNDN);
        mpfr_sqrt(r19923, r19922, MPFR_RNDN);
        mpfr_sqr(r19924, r19915, MPFR_RNDN);
        mpfr_mul(r19925, r19920, r19920, MPFR_RNDN);
        mpfr_add(r19926, r19924, r19925, MPFR_RNDN);
        mpfr_sqrt(r19927, r19926, MPFR_RNDN);
        mpfr_sub(r19928, r19927, r19915, MPFR_RNDN);
        mpfr_sqrt(r19929, r19928, MPFR_RNDN);
        mpfr_div(r19930, r19923, r19929, MPFR_RNDN);
        mpfr_mul(r19931, r19918, r19930, MPFR_RNDN);
        ;
        mpfr_set_si(r19933, mpfr_cmp(r19915, r19932) <= 0, MPFR_RNDN);
        mpfr_add(r19934, r19920, r19915, MPFR_RNDN);
        mpfr_mul(r19935, r19919, r19934, MPFR_RNDN);
        mpfr_sqrt(r19936, r19935, MPFR_RNDN);
        mpfr_mul(r19937, r19918, r19936, MPFR_RNDN);
        ;
        mpfr_set_si(r19939, mpfr_cmp(r19915, r19938) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19940, r19927, MPFR_RNDN);
        mpfr_sqr(r19941, r19940, MPFR_RNDN);
        mpfr_add(r19942, r19941, r19915, MPFR_RNDN);
        mpfr_mul(r19943, r19919, r19942, MPFR_RNDN);
        mpfr_sqrt(r19944, r19943, MPFR_RNDN);
        mpfr_mul(r19945, r19918, r19944, MPFR_RNDN);
        mpfr_add(r19946, r19915, r19915, MPFR_RNDN);
        mpfr_mul(r19947, r19919, r19946, MPFR_RNDN);
        mpfr_sqrt(r19948, r19947, MPFR_RNDN);
        mpfr_mul(r19949, r19918, r19948, MPFR_RNDN);
        if (mpfr_get_si(r19939, MPFR_RNDN)) { mpfr_set(r19950, r19945, MPFR_RNDN); } else { mpfr_set(r19950, r19949, MPFR_RNDN); };
        if (mpfr_get_si(r19933, MPFR_RNDN)) { mpfr_set(r19951, r19937, MPFR_RNDN); } else { mpfr_set(r19951, r19950, MPFR_RNDN); };
        if (mpfr_get_si(r19917, MPFR_RNDN)) { mpfr_set(r19952, r19931, MPFR_RNDN); } else { mpfr_set(r19952, r19951, MPFR_RNDN); };
        return mpfr_get_d(r19952, MPFR_RNDN);
}

static mpfr_t r19953, r19954, r19955, r19956, r19957, r19958, r19959, r19960, r19961, r19962, r19963, r19964, r19965, r19966, r19967, r19968, r19969, r19970, r19971, r19972, r19973, r19974, r19975, r19976, r19977, r19978, r19979, r19980, r19981, r19982, r19983, r19984, r19985, r19986, r19987, r19988, r19989, r19990;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19953);
        mpfr_init_set_str(r19954, "-1.0527568012471275e-305", 10, MPFR_RNDN);
        mpfr_init(r19955);
        mpfr_init_set_str(r19956, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19957, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19958);
        mpfr_init(r19959);
        mpfr_init(r19960);
        mpfr_init(r19961);
        mpfr_init(r19962);
        mpfr_init(r19963);
        mpfr_init(r19964);
        mpfr_init(r19965);
        mpfr_init(r19966);
        mpfr_init(r19967);
        mpfr_init(r19968);
        mpfr_init(r19969);
        mpfr_init_set_str(r19970, "2.743020608759423e-240", 10, MPFR_RNDN);
        mpfr_init(r19971);
        mpfr_init(r19972);
        mpfr_init(r19973);
        mpfr_init(r19974);
        mpfr_init(r19975);
        mpfr_init_set_str(r19976, "7.720496126429738e+93", 10, MPFR_RNDN);
        mpfr_init(r19977);
        mpfr_init(r19978);
        mpfr_init(r19979);
        mpfr_init(r19980);
        mpfr_init(r19981);
        mpfr_init(r19982);
        mpfr_init(r19983);
        mpfr_init(r19984);
        mpfr_init(r19985);
        mpfr_init(r19986);
        mpfr_init(r19987);
        mpfr_init(r19988);
        mpfr_init(r19989);
        mpfr_init(r19990);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19953, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19955, mpfr_cmp(r19953, r19954) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19958, im, MPFR_RNDN);
        mpfr_mul(r19959, r19957, r19958, MPFR_RNDN);
        mpfr_mul(r19960, r19959, r19958, MPFR_RNDN);
        mpfr_sqrt(r19961, r19960, MPFR_RNDN);
        mpfr_sqr(r19962, r19953, MPFR_RNDN);
        mpfr_mul(r19963, r19958, r19958, MPFR_RNDN);
        mpfr_add(r19964, r19962, r19963, MPFR_RNDN);
        mpfr_sqrt(r19965, r19964, MPFR_RNDN);
        mpfr_sub(r19966, r19965, r19953, MPFR_RNDN);
        mpfr_sqrt(r19967, r19966, MPFR_RNDN);
        mpfr_div(r19968, r19961, r19967, MPFR_RNDN);
        mpfr_mul(r19969, r19956, r19968, MPFR_RNDN);
        ;
        mpfr_set_si(r19971, mpfr_cmp(r19953, r19970) <= 0, MPFR_RNDN);
        mpfr_add(r19972, r19958, r19953, MPFR_RNDN);
        mpfr_mul(r19973, r19957, r19972, MPFR_RNDN);
        mpfr_sqrt(r19974, r19973, MPFR_RNDN);
        mpfr_mul(r19975, r19956, r19974, MPFR_RNDN);
        ;
        mpfr_set_si(r19977, mpfr_cmp(r19953, r19976) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19978, r19965, MPFR_RNDN);
        mpfr_sqr(r19979, r19978, MPFR_RNDN);
        mpfr_add(r19980, r19979, r19953, MPFR_RNDN);
        mpfr_mul(r19981, r19957, r19980, MPFR_RNDN);
        mpfr_sqrt(r19982, r19981, MPFR_RNDN);
        mpfr_mul(r19983, r19956, r19982, MPFR_RNDN);
        mpfr_add(r19984, r19953, r19953, MPFR_RNDN);
        mpfr_mul(r19985, r19957, r19984, MPFR_RNDN);
        mpfr_sqrt(r19986, r19985, MPFR_RNDN);
        mpfr_mul(r19987, r19956, r19986, MPFR_RNDN);
        if (mpfr_get_si(r19977, MPFR_RNDN)) { mpfr_set(r19988, r19983, MPFR_RNDN); } else { mpfr_set(r19988, r19987, MPFR_RNDN); };
        if (mpfr_get_si(r19971, MPFR_RNDN)) { mpfr_set(r19989, r19975, MPFR_RNDN); } else { mpfr_set(r19989, r19988, MPFR_RNDN); };
        if (mpfr_get_si(r19955, MPFR_RNDN)) { mpfr_set(r19990, r19969, MPFR_RNDN); } else { mpfr_set(r19990, r19989, MPFR_RNDN); };
        return mpfr_get_d(r19990, MPFR_RNDN);
}

