#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 r11869 = 0.5;
        float r11870 = 2.0;
        float r11871 = re;
        float r11872 = r11871 * r11871;
        float r11873 = im;
        float r11874 = r11873 * r11873;
        float r11875 = r11872 + r11874;
        float r11876 = sqrt(r11875);
        float r11877 = r11876 + r11871;
        float r11878 = r11870 * r11877;
        float r11879 = sqrt(r11878);
        float r11880 = r11869 * r11879;
        return r11880;
}

double f_id(double re, double im) {
        double r11881 = 0.5;
        double r11882 = 2.0;
        double r11883 = re;
        double r11884 = r11883 * r11883;
        double r11885 = im;
        double r11886 = r11885 * r11885;
        double r11887 = r11884 + r11886;
        double r11888 = sqrt(r11887);
        double r11889 = r11888 + r11883;
        double r11890 = r11882 * r11889;
        double r11891 = sqrt(r11890);
        double r11892 = r11881 * r11891;
        return r11892;
}


double f_of(float re, float im) {
        float r11893 = 0.5;
        float r11894 = re;
        float r11895 = im;
        float r11896 = hypot(r11894, r11895);
        float r11897 = 2.0;
        float r11898 = r11894 * r11897;
        float r11899 = fma(r11896, r11897, r11898);
        float r11900 = sqrt(r11899);
        float r11901 = r11893 * r11900;
        float r11902 = 3.2894543710956777e-137;
        bool r11903 = r11901 <= r11902;
        float r11904 = r11895 * r11895;
        float r11905 = r11897 * r11904;
        float r11906 = sqrt(r11905);
        float r11907 = r11896 - r11894;
        float r11908 = sqrt(r11907);
        float r11909 = r11906 / r11908;
        float r11910 = r11893 * r11909;
        float r11911 = r11903 ? r11910 : r11901;
        return r11911;
}

double f_od(double re, double im) {
        double r11912 = 0.5;
        double r11913 = re;
        double r11914 = im;
        double r11915 = hypot(r11913, r11914);
        double r11916 = 2.0;
        double r11917 = r11913 * r11916;
        double r11918 = fma(r11915, r11916, r11917);
        double r11919 = sqrt(r11918);
        double r11920 = r11912 * r11919;
        double r11921 = 3.2894543710956777e-137;
        bool r11922 = r11920 <= r11921;
        double r11923 = r11914 * r11914;
        double r11924 = r11916 * r11923;
        double r11925 = sqrt(r11924);
        double r11926 = r11915 - r11913;
        double r11927 = sqrt(r11926);
        double r11928 = r11925 / r11927;
        double r11929 = r11912 * r11928;
        double r11930 = r11922 ? r11929 : r11920;
        return r11930;
}

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 r11931, r11932, r11933, r11934, r11935, r11936, r11937, r11938, r11939, r11940, r11941, r11942;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r11931, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r11932, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11933);
        mpfr_init(r11934);
        mpfr_init(r11935);
        mpfr_init(r11936);
        mpfr_init(r11937);
        mpfr_init(r11938);
        mpfr_init(r11939);
        mpfr_init(r11940);
        mpfr_init(r11941);
        mpfr_init(r11942);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r11933, re, MPFR_RNDN);
        mpfr_mul(r11934, r11933, r11933, MPFR_RNDN);
        mpfr_set_d(r11935, im, MPFR_RNDN);
        mpfr_mul(r11936, r11935, r11935, MPFR_RNDN);
        mpfr_add(r11937, r11934, r11936, MPFR_RNDN);
        mpfr_sqrt(r11938, r11937, MPFR_RNDN);
        mpfr_add(r11939, r11938, r11933, MPFR_RNDN);
        mpfr_mul(r11940, r11932, r11939, MPFR_RNDN);
        mpfr_sqrt(r11941, r11940, MPFR_RNDN);
        mpfr_mul(r11942, r11931, r11941, MPFR_RNDN);
        return mpfr_get_d(r11942, MPFR_RNDN);
}

static mpfr_t r11943, r11944, r11945, r11946, r11947, r11948, r11949, r11950, r11951, r11952, r11953, r11954, r11955, r11956, r11957, r11958, r11959, r11960, r11961;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r11943, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11944);
        mpfr_init(r11945);
        mpfr_init(r11946);
        mpfr_init_set_str(r11947, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11948);
        mpfr_init(r11949);
        mpfr_init(r11950);
        mpfr_init(r11951);
        mpfr_init_set_str(r11952, "3.2894543710956777e-137", 10, MPFR_RNDN);
        mpfr_init(r11953);
        mpfr_init(r11954);
        mpfr_init(r11955);
        mpfr_init(r11956);
        mpfr_init(r11957);
        mpfr_init(r11958);
        mpfr_init(r11959);
        mpfr_init(r11960);
        mpfr_init(r11961);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r11944, re, MPFR_RNDN);
        mpfr_set_d(r11945, im, MPFR_RNDN);
        mpfr_hypot(r11946, r11944, r11945, MPFR_RNDN);
        ;
        mpfr_mul(r11948, r11944, r11947, MPFR_RNDN);
        mpfr_fma(r11949, r11946, r11947, r11948, MPFR_RNDN);
        mpfr_sqrt(r11950, r11949, MPFR_RNDN);
        mpfr_mul(r11951, r11943, r11950, MPFR_RNDN);
        ;
        mpfr_set_si(r11953, mpfr_cmp(r11951, r11952) <= 0, MPFR_RNDN);
        mpfr_mul(r11954, r11945, r11945, MPFR_RNDN);
        mpfr_mul(r11955, r11947, r11954, MPFR_RNDN);
        mpfr_sqrt(r11956, r11955, MPFR_RNDN);
        mpfr_sub(r11957, r11946, r11944, MPFR_RNDN);
        mpfr_sqrt(r11958, r11957, MPFR_RNDN);
        mpfr_div(r11959, r11956, r11958, MPFR_RNDN);
        mpfr_mul(r11960, r11943, r11959, MPFR_RNDN);
        if (mpfr_get_si(r11953, MPFR_RNDN)) { mpfr_set(r11961, r11960, MPFR_RNDN); } else { mpfr_set(r11961, r11951, MPFR_RNDN); };
        return mpfr_get_d(r11961, MPFR_RNDN);
}

static mpfr_t r11962, r11963, r11964, r11965, r11966, r11967, r11968, r11969, r11970, r11971, r11972, r11973, r11974, r11975, r11976, r11977, r11978, r11979, r11980;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r11962, "0.5", 10, MPFR_RNDN);
        mpfr_init(r11963);
        mpfr_init(r11964);
        mpfr_init(r11965);
        mpfr_init_set_str(r11966, "2.0", 10, MPFR_RNDN);
        mpfr_init(r11967);
        mpfr_init(r11968);
        mpfr_init(r11969);
        mpfr_init(r11970);
        mpfr_init_set_str(r11971, "3.2894543710956777e-137", 10, MPFR_RNDN);
        mpfr_init(r11972);
        mpfr_init(r11973);
        mpfr_init(r11974);
        mpfr_init(r11975);
        mpfr_init(r11976);
        mpfr_init(r11977);
        mpfr_init(r11978);
        mpfr_init(r11979);
        mpfr_init(r11980);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r11963, re, MPFR_RNDN);
        mpfr_set_d(r11964, im, MPFR_RNDN);
        mpfr_hypot(r11965, r11963, r11964, MPFR_RNDN);
        ;
        mpfr_mul(r11967, r11963, r11966, MPFR_RNDN);
        mpfr_fma(r11968, r11965, r11966, r11967, MPFR_RNDN);
        mpfr_sqrt(r11969, r11968, MPFR_RNDN);
        mpfr_mul(r11970, r11962, r11969, MPFR_RNDN);
        ;
        mpfr_set_si(r11972, mpfr_cmp(r11970, r11971) <= 0, MPFR_RNDN);
        mpfr_mul(r11973, r11964, r11964, MPFR_RNDN);
        mpfr_mul(r11974, r11966, r11973, MPFR_RNDN);
        mpfr_sqrt(r11975, r11974, MPFR_RNDN);
        mpfr_sub(r11976, r11965, r11963, MPFR_RNDN);
        mpfr_sqrt(r11977, r11976, MPFR_RNDN);
        mpfr_div(r11978, r11975, r11977, MPFR_RNDN);
        mpfr_mul(r11979, r11962, r11978, MPFR_RNDN);
        if (mpfr_get_si(r11972, MPFR_RNDN)) { mpfr_set(r11980, r11979, MPFR_RNDN); } else { mpfr_set(r11980, r11970, MPFR_RNDN); };
        return mpfr_get_d(r11980, MPFR_RNDN);
}

