#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 r27851 = 0.5;
        float r27852 = 2.0;
        float r27853 = re;
        float r27854 = r27853 * r27853;
        float r27855 = im;
        float r27856 = r27855 * r27855;
        float r27857 = r27854 + r27856;
        float r27858 = sqrt(r27857);
        float r27859 = r27858 + r27853;
        float r27860 = r27852 * r27859;
        float r27861 = sqrt(r27860);
        float r27862 = r27851 * r27861;
        return r27862;
}

double f_id(double re, double im) {
        double r27863 = 0.5;
        double r27864 = 2.0;
        double r27865 = re;
        double r27866 = r27865 * r27865;
        double r27867 = im;
        double r27868 = r27867 * r27867;
        double r27869 = r27866 + r27868;
        double r27870 = sqrt(r27869);
        double r27871 = r27870 + r27865;
        double r27872 = r27864 * r27871;
        double r27873 = sqrt(r27872);
        double r27874 = r27863 * r27873;
        return r27874;
}


double f_of(float re, float im) {
        float r27875 = 0.5;
        float r27876 = re;
        float r27877 = im;
        float r27878 = hypot(r27876, r27877);
        float r27879 = 2.0;
        float r27880 = r27876 * r27879;
        float r27881 = fma(r27878, r27879, r27880);
        float r27882 = cbrt(r27881);
        float r27883 = r27882 * r27882;
        float r27884 = r27883 * r27882;
        float r27885 = sqrt(r27884);
        float r27886 = r27875 * r27885;
        float r27887 = 9.3872472709837e-323;
        bool r27888 = r27886 <= r27887;
        float r27889 = r27877 * r27877;
        float r27890 = r27879 * r27889;
        float r27891 = sqrt(r27890);
        float r27892 = r27878 - r27876;
        float r27893 = sqrt(r27892);
        float r27894 = r27891 / r27893;
        float r27895 = r27875 * r27894;
        float r27896 = sqrt(r27881);
        float r27897 = r27875 * r27896;
        float r27898 = r27888 ? r27895 : r27897;
        return r27898;
}

double f_od(double re, double im) {
        double r27899 = 0.5;
        double r27900 = re;
        double r27901 = im;
        double r27902 = hypot(r27900, r27901);
        double r27903 = 2.0;
        double r27904 = r27900 * r27903;
        double r27905 = fma(r27902, r27903, r27904);
        double r27906 = cbrt(r27905);
        double r27907 = r27906 * r27906;
        double r27908 = r27907 * r27906;
        double r27909 = sqrt(r27908);
        double r27910 = r27899 * r27909;
        double r27911 = 9.3872472709837e-323;
        bool r27912 = r27910 <= r27911;
        double r27913 = r27901 * r27901;
        double r27914 = r27903 * r27913;
        double r27915 = sqrt(r27914);
        double r27916 = r27902 - r27900;
        double r27917 = sqrt(r27916);
        double r27918 = r27915 / r27917;
        double r27919 = r27899 * r27918;
        double r27920 = sqrt(r27905);
        double r27921 = r27899 * r27920;
        double r27922 = r27912 ? r27919 : r27921;
        return r27922;
}

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 r27923, r27924, r27925, r27926, r27927, r27928, r27929, r27930, r27931, r27932, r27933, r27934;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r27923, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r27924, "2.0", 10, MPFR_RNDN);
        mpfr_init(r27925);
        mpfr_init(r27926);
        mpfr_init(r27927);
        mpfr_init(r27928);
        mpfr_init(r27929);
        mpfr_init(r27930);
        mpfr_init(r27931);
        mpfr_init(r27932);
        mpfr_init(r27933);
        mpfr_init(r27934);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r27925, re, MPFR_RNDN);
        mpfr_mul(r27926, r27925, r27925, MPFR_RNDN);
        mpfr_set_d(r27927, im, MPFR_RNDN);
        mpfr_mul(r27928, r27927, r27927, MPFR_RNDN);
        mpfr_add(r27929, r27926, r27928, MPFR_RNDN);
        mpfr_sqrt(r27930, r27929, MPFR_RNDN);
        mpfr_add(r27931, r27930, r27925, MPFR_RNDN);
        mpfr_mul(r27932, r27924, r27931, MPFR_RNDN);
        mpfr_sqrt(r27933, r27932, MPFR_RNDN);
        mpfr_mul(r27934, r27923, r27933, MPFR_RNDN);
        return mpfr_get_d(r27934, MPFR_RNDN);
}

static mpfr_t r27935, r27936, r27937, r27938, r27939, r27940, r27941, r27942, r27943, r27944, r27945, r27946, r27947, r27948, r27949, r27950, r27951, r27952, r27953, r27954, r27955, r27956, r27957, r27958;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r27935, "0.5", 10, MPFR_RNDN);
        mpfr_init(r27936);
        mpfr_init(r27937);
        mpfr_init(r27938);
        mpfr_init_set_str(r27939, "2.0", 10, MPFR_RNDN);
        mpfr_init(r27940);
        mpfr_init(r27941);
        mpfr_init(r27942);
        mpfr_init(r27943);
        mpfr_init(r27944);
        mpfr_init(r27945);
        mpfr_init(r27946);
        mpfr_init_set_str(r27947, "9.3872472709837e-323", 10, MPFR_RNDN);
        mpfr_init(r27948);
        mpfr_init(r27949);
        mpfr_init(r27950);
        mpfr_init(r27951);
        mpfr_init(r27952);
        mpfr_init(r27953);
        mpfr_init(r27954);
        mpfr_init(r27955);
        mpfr_init(r27956);
        mpfr_init(r27957);
        mpfr_init(r27958);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r27936, re, MPFR_RNDN);
        mpfr_set_d(r27937, im, MPFR_RNDN);
        mpfr_hypot(r27938, r27936, r27937, MPFR_RNDN);
        ;
        mpfr_mul(r27940, r27936, r27939, MPFR_RNDN);
        mpfr_fma(r27941, r27938, r27939, r27940, MPFR_RNDN);
        mpfr_cbrt(r27942, r27941, MPFR_RNDN);
        mpfr_mul(r27943, r27942, r27942, MPFR_RNDN);
        mpfr_mul(r27944, r27943, r27942, MPFR_RNDN);
        mpfr_sqrt(r27945, r27944, MPFR_RNDN);
        mpfr_mul(r27946, r27935, r27945, MPFR_RNDN);
        ;
        mpfr_set_si(r27948, mpfr_cmp(r27946, r27947) <= 0, MPFR_RNDN);
        mpfr_mul(r27949, r27937, r27937, MPFR_RNDN);
        mpfr_mul(r27950, r27939, r27949, MPFR_RNDN);
        mpfr_sqrt(r27951, r27950, MPFR_RNDN);
        mpfr_sub(r27952, r27938, r27936, MPFR_RNDN);
        mpfr_sqrt(r27953, r27952, MPFR_RNDN);
        mpfr_div(r27954, r27951, r27953, MPFR_RNDN);
        mpfr_mul(r27955, r27935, r27954, MPFR_RNDN);
        mpfr_sqrt(r27956, r27941, MPFR_RNDN);
        mpfr_mul(r27957, r27935, r27956, MPFR_RNDN);
        if (mpfr_get_si(r27948, MPFR_RNDN)) { mpfr_set(r27958, r27955, MPFR_RNDN); } else { mpfr_set(r27958, r27957, MPFR_RNDN); };
        return mpfr_get_d(r27958, MPFR_RNDN);
}

static mpfr_t r27959, r27960, r27961, r27962, r27963, r27964, r27965, r27966, r27967, r27968, r27969, r27970, r27971, r27972, r27973, r27974, r27975, r27976, r27977, r27978, r27979, r27980, r27981, r27982;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r27959, "0.5", 10, MPFR_RNDN);
        mpfr_init(r27960);
        mpfr_init(r27961);
        mpfr_init(r27962);
        mpfr_init_set_str(r27963, "2.0", 10, MPFR_RNDN);
        mpfr_init(r27964);
        mpfr_init(r27965);
        mpfr_init(r27966);
        mpfr_init(r27967);
        mpfr_init(r27968);
        mpfr_init(r27969);
        mpfr_init(r27970);
        mpfr_init_set_str(r27971, "9.3872472709837e-323", 10, MPFR_RNDN);
        mpfr_init(r27972);
        mpfr_init(r27973);
        mpfr_init(r27974);
        mpfr_init(r27975);
        mpfr_init(r27976);
        mpfr_init(r27977);
        mpfr_init(r27978);
        mpfr_init(r27979);
        mpfr_init(r27980);
        mpfr_init(r27981);
        mpfr_init(r27982);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r27960, re, MPFR_RNDN);
        mpfr_set_d(r27961, im, MPFR_RNDN);
        mpfr_hypot(r27962, r27960, r27961, MPFR_RNDN);
        ;
        mpfr_mul(r27964, r27960, r27963, MPFR_RNDN);
        mpfr_fma(r27965, r27962, r27963, r27964, MPFR_RNDN);
        mpfr_cbrt(r27966, r27965, MPFR_RNDN);
        mpfr_mul(r27967, r27966, r27966, MPFR_RNDN);
        mpfr_mul(r27968, r27967, r27966, MPFR_RNDN);
        mpfr_sqrt(r27969, r27968, MPFR_RNDN);
        mpfr_mul(r27970, r27959, r27969, MPFR_RNDN);
        ;
        mpfr_set_si(r27972, mpfr_cmp(r27970, r27971) <= 0, MPFR_RNDN);
        mpfr_mul(r27973, r27961, r27961, MPFR_RNDN);
        mpfr_mul(r27974, r27963, r27973, MPFR_RNDN);
        mpfr_sqrt(r27975, r27974, MPFR_RNDN);
        mpfr_sub(r27976, r27962, r27960, MPFR_RNDN);
        mpfr_sqrt(r27977, r27976, MPFR_RNDN);
        mpfr_div(r27978, r27975, r27977, MPFR_RNDN);
        mpfr_mul(r27979, r27959, r27978, MPFR_RNDN);
        mpfr_sqrt(r27980, r27965, MPFR_RNDN);
        mpfr_mul(r27981, r27959, r27980, MPFR_RNDN);
        if (mpfr_get_si(r27972, MPFR_RNDN)) { mpfr_set(r27982, r27979, MPFR_RNDN); } else { mpfr_set(r27982, r27981, MPFR_RNDN); };
        return mpfr_get_d(r27982, MPFR_RNDN);
}

