#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 r19831 = 0.5f;
        float r19832 = 2.0f;
        float r19833 = re;
        float r19834 = r19833 * r19833;
        float r19835 = im;
        float r19836 = r19835 * r19835;
        float r19837 = r19834 + r19836;
        float r19838 = sqrt(r19837);
        float r19839 = r19838 + r19833;
        float r19840 = r19832 * r19839;
        float r19841 = sqrt(r19840);
        float r19842 = r19831 * r19841;
        return r19842;
}

double f_id(double re, double im) {
        double r19843 = 0.5;
        double r19844 = 2.0;
        double r19845 = re;
        double r19846 = r19845 * r19845;
        double r19847 = im;
        double r19848 = r19847 * r19847;
        double r19849 = r19846 + r19848;
        double r19850 = sqrt(r19849);
        double r19851 = r19850 + r19845;
        double r19852 = r19844 * r19851;
        double r19853 = sqrt(r19852);
        double r19854 = r19843 * r19853;
        return r19854;
}


double f_of(float re, float im) {
        float r19855 = re;
        float r19856 = r19855 * r19855;
        float r19857 = im;
        float r19858 = r19857 * r19857;
        float r19859 = r19856 + r19858;
        float r19860 = sqrt(r19859);
        float r19861 = r19860 + r19855;
        float r19862 = 5.221887405573911e-21f;
        bool r19863 = r19861 <= r19862;
        float r19864 = 2.0f;
        float r19865 = sqrt(r19864);
        float r19866 = 0.5f;
        float r19867 = r19866 * r19857;
        float r19868 = r19865 * r19867;
        float r19869 = r19858 + r19856;
        float r19870 = sqrt(r19869);
        float r19871 = r19870 - r19855;
        float r19872 = sqrt(r19871);
        float r19873 = r19868 / r19872;
        float r19874 = 6.057904008962087e+19f;
        bool r19875 = r19861 <= r19874;
        float r19876 = r19864 * r19861;
        float r19877 = sqrt(r19876);
        float r19878 = r19866 * r19877;
        float r19879 = r19857 + r19855;
        float r19880 = r19864 * r19879;
        float r19881 = sqrt(r19880);
        float r19882 = r19866 * r19881;
        float r19883 = r19875 ? r19878 : r19882;
        float r19884 = r19863 ? r19873 : r19883;
        return r19884;
}

double f_od(double re, double im) {
        double r19885 = re;
        double r19886 = r19885 * r19885;
        double r19887 = im;
        double r19888 = r19887 * r19887;
        double r19889 = r19886 + r19888;
        double r19890 = sqrt(r19889);
        double r19891 = r19890 + r19885;
        double r19892 = 5.221887405573911e-21;
        bool r19893 = r19891 <= r19892;
        double r19894 = 2.0;
        double r19895 = sqrt(r19894);
        double r19896 = 0.5;
        double r19897 = r19896 * r19887;
        double r19898 = r19895 * r19897;
        double r19899 = r19888 + r19886;
        double r19900 = sqrt(r19899);
        double r19901 = r19900 - r19885;
        double r19902 = sqrt(r19901);
        double r19903 = r19898 / r19902;
        double r19904 = 6.057904008962087e+19;
        bool r19905 = r19891 <= r19904;
        double r19906 = r19894 * r19891;
        double r19907 = sqrt(r19906);
        double r19908 = r19896 * r19907;
        double r19909 = r19887 + r19885;
        double r19910 = r19894 * r19909;
        double r19911 = sqrt(r19910);
        double r19912 = r19896 * r19911;
        double r19913 = r19905 ? r19908 : r19912;
        double r19914 = r19893 ? r19903 : r19913;
        return r19914;
}

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 r19915, r19916, r19917, r19918, r19919, r19920, r19921, r19922, r19923, r19924, r19925, r19926;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19915, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19916, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19917);
        mpfr_init(r19918);
        mpfr_init(r19919);
        mpfr_init(r19920);
        mpfr_init(r19921);
        mpfr_init(r19922);
        mpfr_init(r19923);
        mpfr_init(r19924);
        mpfr_init(r19925);
        mpfr_init(r19926);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19917, re, MPFR_RNDN);
        mpfr_mul(r19918, r19917, r19917, MPFR_RNDN);
        mpfr_set_d(r19919, im, MPFR_RNDN);
        mpfr_mul(r19920, r19919, r19919, MPFR_RNDN);
        mpfr_add(r19921, r19918, r19920, MPFR_RNDN);
        mpfr_sqrt(r19922, r19921, MPFR_RNDN);
        mpfr_add(r19923, r19922, r19917, MPFR_RNDN);
        mpfr_mul(r19924, r19916, r19923, MPFR_RNDN);
        mpfr_sqrt(r19925, r19924, MPFR_RNDN);
        mpfr_mul(r19926, r19915, r19925, MPFR_RNDN);
        return mpfr_get_d(r19926, MPFR_RNDN);
}

static mpfr_t 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, r19953, r19954, r19955, r19956;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19927);
        mpfr_init(r19928);
        mpfr_init(r19929);
        mpfr_init(r19930);
        mpfr_init(r19931);
        mpfr_init(r19932);
        mpfr_init(r19933);
        mpfr_init_set_str(r19934, "5.2218874f-21", 10, MPFR_RNDN);
        mpfr_init(r19935);
        mpfr_init_set_str(r19936, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19937);
        mpfr_init_set_str(r19938, "0.5", 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_set_str(r19946, "6.057904f+19", 10, MPFR_RNDN);
        mpfr_init(r19947);
        mpfr_init(r19948);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init(r19953);
        mpfr_init(r19954);
        mpfr_init(r19955);
        mpfr_init(r19956);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19927, re, MPFR_RNDN);
        mpfr_mul(r19928, r19927, r19927, MPFR_RNDN);
        mpfr_set_d(r19929, im, MPFR_RNDN);
        mpfr_mul(r19930, r19929, r19929, MPFR_RNDN);
        mpfr_add(r19931, r19928, r19930, MPFR_RNDN);
        mpfr_sqrt(r19932, r19931, MPFR_RNDN);
        mpfr_add(r19933, r19932, r19927, MPFR_RNDN);
        ;
        mpfr_set_si(r19935, mpfr_cmp(r19933, r19934) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r19937, r19936, MPFR_RNDN);
        ;
        mpfr_mul(r19939, r19938, r19929, MPFR_RNDN);
        mpfr_mul(r19940, r19937, r19939, MPFR_RNDN);
        mpfr_add(r19941, r19930, r19928, MPFR_RNDN);
        mpfr_sqrt(r19942, r19941, MPFR_RNDN);
        mpfr_sub(r19943, r19942, r19927, MPFR_RNDN);
        mpfr_sqrt(r19944, r19943, MPFR_RNDN);
        mpfr_div(r19945, r19940, r19944, MPFR_RNDN);
        ;
        mpfr_set_si(r19947, mpfr_cmp(r19933, r19946) <= 0, MPFR_RNDN);
        mpfr_mul(r19948, r19936, r19933, MPFR_RNDN);
        mpfr_sqrt(r19949, r19948, MPFR_RNDN);
        mpfr_mul(r19950, r19938, r19949, MPFR_RNDN);
        mpfr_add(r19951, r19929, r19927, MPFR_RNDN);
        mpfr_mul(r19952, r19936, r19951, MPFR_RNDN);
        mpfr_sqrt(r19953, r19952, MPFR_RNDN);
        mpfr_mul(r19954, r19938, r19953, MPFR_RNDN);
        if (mpfr_get_si(r19947, MPFR_RNDN)) { mpfr_set(r19955, r19950, MPFR_RNDN); } else { mpfr_set(r19955, r19954, MPFR_RNDN); };
        if (mpfr_get_si(r19935, MPFR_RNDN)) { mpfr_set(r19956, r19945, MPFR_RNDN); } else { mpfr_set(r19956, r19955, MPFR_RNDN); };
        return mpfr_get_d(r19956, MPFR_RNDN);
}

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

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19957);
        mpfr_init(r19958);
        mpfr_init(r19959);
        mpfr_init(r19960);
        mpfr_init(r19961);
        mpfr_init(r19962);
        mpfr_init(r19963);
        mpfr_init_set_str(r19964, "5.2218874f-21", 10, MPFR_RNDN);
        mpfr_init(r19965);
        mpfr_init_set_str(r19966, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19967);
        mpfr_init_set_str(r19968, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19969);
        mpfr_init(r19970);
        mpfr_init(r19971);
        mpfr_init(r19972);
        mpfr_init(r19973);
        mpfr_init(r19974);
        mpfr_init(r19975);
        mpfr_init_set_str(r19976, "6.057904f+19", 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);
}

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

