#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 r27762 = 0.5;
        float r27763 = 2.0;
        float r27764 = re;
        float r27765 = r27764 * r27764;
        float r27766 = im;
        float r27767 = r27766 * r27766;
        float r27768 = r27765 + r27767;
        float r27769 = sqrt(r27768);
        float r27770 = r27769 + r27764;
        float r27771 = r27763 * r27770;
        float r27772 = sqrt(r27771);
        float r27773 = r27762 * r27772;
        return r27773;
}

double f_id(double re, double im) {
        double r27774 = 0.5;
        double r27775 = 2.0;
        double r27776 = re;
        double r27777 = r27776 * r27776;
        double r27778 = im;
        double r27779 = r27778 * r27778;
        double r27780 = r27777 + r27779;
        double r27781 = sqrt(r27780);
        double r27782 = r27781 + r27776;
        double r27783 = r27775 * r27782;
        double r27784 = sqrt(r27783);
        double r27785 = r27774 * r27784;
        return r27785;
}


double f_of(float re, float im) {
        float r27786 = 2.0;
        float r27787 = im;
        float r27788 = re;
        float r27789 = r27787 + r27788;
        float r27790 = r27786 * r27789;
        float r27791 = 1.6039837241105923e-283;
        bool r27792 = r27790 <= r27791;
        float r27793 = 0.5;
        float r27794 = r27787 * r27787;
        float r27795 = r27786 * r27794;
        float r27796 = sqrt(r27795);
        float r27797 = r27788 * r27788;
        float r27798 = r27797 + r27794;
        float r27799 = sqrt(r27798);
        float r27800 = r27799 - r27788;
        float r27801 = sqrt(r27800);
        float r27802 = r27796 / r27801;
        float r27803 = r27793 * r27802;
        float r27804 = 3.316994150788608e-159;
        bool r27805 = r27790 <= r27804;
        float r27806 = sqrt(r27790);
        float r27807 = r27793 * r27806;
        float r27808 = 2.149706918230026e+153;
        bool r27809 = r27790 <= r27808;
        float r27810 = r27799 + r27788;
        float r27811 = r27786 * r27810;
        float r27812 = sqrt(r27811);
        float r27813 = r27793 * r27812;
        float r27814 = 3.545930250469086e+250;
        bool r27815 = r27790 <= r27814;
        float r27816 = 1.1266628819434354e+285;
        bool r27817 = r27790 <= r27816;
        float r27818 = r27788 + r27788;
        float r27819 = r27786 * r27818;
        float r27820 = sqrt(r27819);
        float r27821 = r27793 * r27820;
        float r27822 = r27817 ? r27821 : r27807;
        float r27823 = r27815 ? r27807 : r27822;
        float r27824 = r27809 ? r27813 : r27823;
        float r27825 = r27805 ? r27807 : r27824;
        float r27826 = r27792 ? r27803 : r27825;
        return r27826;
}

double f_od(double re, double im) {
        double r27827 = 2.0;
        double r27828 = im;
        double r27829 = re;
        double r27830 = r27828 + r27829;
        double r27831 = r27827 * r27830;
        double r27832 = 1.6039837241105923e-283;
        bool r27833 = r27831 <= r27832;
        double r27834 = 0.5;
        double r27835 = r27828 * r27828;
        double r27836 = r27827 * r27835;
        double r27837 = sqrt(r27836);
        double r27838 = r27829 * r27829;
        double r27839 = r27838 + r27835;
        double r27840 = sqrt(r27839);
        double r27841 = r27840 - r27829;
        double r27842 = sqrt(r27841);
        double r27843 = r27837 / r27842;
        double r27844 = r27834 * r27843;
        double r27845 = 3.316994150788608e-159;
        bool r27846 = r27831 <= r27845;
        double r27847 = sqrt(r27831);
        double r27848 = r27834 * r27847;
        double r27849 = 2.149706918230026e+153;
        bool r27850 = r27831 <= r27849;
        double r27851 = r27840 + r27829;
        double r27852 = r27827 * r27851;
        double r27853 = sqrt(r27852);
        double r27854 = r27834 * r27853;
        double r27855 = 3.545930250469086e+250;
        bool r27856 = r27831 <= r27855;
        double r27857 = 1.1266628819434354e+285;
        bool r27858 = r27831 <= r27857;
        double r27859 = r27829 + r27829;
        double r27860 = r27827 * r27859;
        double r27861 = sqrt(r27860);
        double r27862 = r27834 * r27861;
        double r27863 = r27858 ? r27862 : r27848;
        double r27864 = r27856 ? r27848 : r27863;
        double r27865 = r27850 ? r27854 : r27864;
        double r27866 = r27846 ? r27848 : r27865;
        double r27867 = r27833 ? r27844 : r27866;
        return r27867;
}

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 r27868, r27869, r27870, r27871, r27872, r27873, r27874, r27875, r27876, r27877, r27878, r27879;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r27868, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r27869, "2.0", 10, MPFR_RNDN);
        mpfr_init(r27870);
        mpfr_init(r27871);
        mpfr_init(r27872);
        mpfr_init(r27873);
        mpfr_init(r27874);
        mpfr_init(r27875);
        mpfr_init(r27876);
        mpfr_init(r27877);
        mpfr_init(r27878);
        mpfr_init(r27879);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r27870, re, MPFR_RNDN);
        mpfr_mul(r27871, r27870, r27870, MPFR_RNDN);
        mpfr_set_d(r27872, im, MPFR_RNDN);
        mpfr_mul(r27873, r27872, r27872, MPFR_RNDN);
        mpfr_add(r27874, r27871, r27873, MPFR_RNDN);
        mpfr_sqrt(r27875, r27874, MPFR_RNDN);
        mpfr_add(r27876, r27875, r27870, MPFR_RNDN);
        mpfr_mul(r27877, r27869, r27876, MPFR_RNDN);
        mpfr_sqrt(r27878, r27877, MPFR_RNDN);
        mpfr_mul(r27879, r27868, r27878, MPFR_RNDN);
        return mpfr_get_d(r27879, MPFR_RNDN);
}

static mpfr_t r27880, r27881, r27882, r27883, r27884, r27885, r27886, r27887, r27888, r27889, r27890, r27891, r27892, r27893, r27894, r27895, r27896, r27897, r27898, r27899, r27900, r27901, r27902, r27903, r27904, r27905, r27906, r27907, r27908, r27909, r27910, r27911, r27912, r27913, r27914, r27915, r27916, r27917, r27918, r27919, r27920;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r27880, "2.0", 10, MPFR_RNDN);
        mpfr_init(r27881);
        mpfr_init(r27882);
        mpfr_init(r27883);
        mpfr_init(r27884);
        mpfr_init_set_str(r27885, "1.6039837241105923e-283", 10, MPFR_RNDN);
        mpfr_init(r27886);
        mpfr_init_set_str(r27887, "0.5", 10, MPFR_RNDN);
        mpfr_init(r27888);
        mpfr_init(r27889);
        mpfr_init(r27890);
        mpfr_init(r27891);
        mpfr_init(r27892);
        mpfr_init(r27893);
        mpfr_init(r27894);
        mpfr_init(r27895);
        mpfr_init(r27896);
        mpfr_init(r27897);
        mpfr_init_set_str(r27898, "3.316994150788608e-159", 10, MPFR_RNDN);
        mpfr_init(r27899);
        mpfr_init(r27900);
        mpfr_init(r27901);
        mpfr_init_set_str(r27902, "2.149706918230026e+153", 10, MPFR_RNDN);
        mpfr_init(r27903);
        mpfr_init(r27904);
        mpfr_init(r27905);
        mpfr_init(r27906);
        mpfr_init(r27907);
        mpfr_init_set_str(r27908, "3.545930250469086e+250", 10, MPFR_RNDN);
        mpfr_init(r27909);
        mpfr_init_set_str(r27910, "1.1266628819434354e+285", 10, MPFR_RNDN);
        mpfr_init(r27911);
        mpfr_init(r27912);
        mpfr_init(r27913);
        mpfr_init(r27914);
        mpfr_init(r27915);
        mpfr_init(r27916);
        mpfr_init(r27917);
        mpfr_init(r27918);
        mpfr_init(r27919);
        mpfr_init(r27920);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r27881, im, MPFR_RNDN);
        mpfr_set_d(r27882, re, MPFR_RNDN);
        mpfr_add(r27883, r27881, r27882, MPFR_RNDN);
        mpfr_mul(r27884, r27880, r27883, MPFR_RNDN);
        ;
        mpfr_set_si(r27886, mpfr_cmp(r27884, r27885) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27888, r27881, r27881, MPFR_RNDN);
        mpfr_mul(r27889, r27880, r27888, MPFR_RNDN);
        mpfr_sqrt(r27890, r27889, MPFR_RNDN);
        mpfr_mul(r27891, r27882, r27882, MPFR_RNDN);
        mpfr_add(r27892, r27891, r27888, MPFR_RNDN);
        mpfr_sqrt(r27893, r27892, MPFR_RNDN);
        mpfr_sub(r27894, r27893, r27882, MPFR_RNDN);
        mpfr_sqrt(r27895, r27894, MPFR_RNDN);
        mpfr_div(r27896, r27890, r27895, MPFR_RNDN);
        mpfr_mul(r27897, r27887, r27896, MPFR_RNDN);
        ;
        mpfr_set_si(r27899, mpfr_cmp(r27884, r27898) <= 0, MPFR_RNDN);
        mpfr_sqrt(r27900, r27884, MPFR_RNDN);
        mpfr_mul(r27901, r27887, r27900, MPFR_RNDN);
        ;
        mpfr_set_si(r27903, mpfr_cmp(r27884, r27902) <= 0, MPFR_RNDN);
        mpfr_add(r27904, r27893, r27882, MPFR_RNDN);
        mpfr_mul(r27905, r27880, r27904, MPFR_RNDN);
        mpfr_sqrt(r27906, r27905, MPFR_RNDN);
        mpfr_mul(r27907, r27887, r27906, MPFR_RNDN);
        ;
        mpfr_set_si(r27909, mpfr_cmp(r27884, r27908) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27911, mpfr_cmp(r27884, r27910) <= 0, MPFR_RNDN);
        mpfr_add(r27912, r27882, r27882, MPFR_RNDN);
        mpfr_mul(r27913, r27880, r27912, MPFR_RNDN);
        mpfr_sqrt(r27914, r27913, MPFR_RNDN);
        mpfr_mul(r27915, r27887, r27914, MPFR_RNDN);
        if (mpfr_get_si(r27911, MPFR_RNDN)) { mpfr_set(r27916, r27915, MPFR_RNDN); } else { mpfr_set(r27916, r27901, MPFR_RNDN); };
        if (mpfr_get_si(r27909, MPFR_RNDN)) { mpfr_set(r27917, r27901, MPFR_RNDN); } else { mpfr_set(r27917, r27916, MPFR_RNDN); };
        if (mpfr_get_si(r27903, MPFR_RNDN)) { mpfr_set(r27918, r27907, MPFR_RNDN); } else { mpfr_set(r27918, r27917, MPFR_RNDN); };
        if (mpfr_get_si(r27899, MPFR_RNDN)) { mpfr_set(r27919, r27901, MPFR_RNDN); } else { mpfr_set(r27919, r27918, MPFR_RNDN); };
        if (mpfr_get_si(r27886, MPFR_RNDN)) { mpfr_set(r27920, r27897, MPFR_RNDN); } else { mpfr_set(r27920, r27919, MPFR_RNDN); };
        return mpfr_get_d(r27920, MPFR_RNDN);
}

static mpfr_t r27921, r27922, r27923, r27924, r27925, r27926, r27927, r27928, r27929, r27930, r27931, r27932, r27933, r27934, r27935, r27936, r27937, r27938, r27939, r27940, r27941, r27942, r27943, r27944, r27945, r27946, r27947, r27948, r27949, r27950, r27951, r27952, r27953, r27954, r27955, r27956, r27957, r27958, r27959, r27960, r27961;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3664);
        mpfr_init_set_str(r27921, "2.0", 10, MPFR_RNDN);
        mpfr_init(r27922);
        mpfr_init(r27923);
        mpfr_init(r27924);
        mpfr_init(r27925);
        mpfr_init_set_str(r27926, "1.6039837241105923e-283", 10, MPFR_RNDN);
        mpfr_init(r27927);
        mpfr_init_set_str(r27928, "0.5", 10, MPFR_RNDN);
        mpfr_init(r27929);
        mpfr_init(r27930);
        mpfr_init(r27931);
        mpfr_init(r27932);
        mpfr_init(r27933);
        mpfr_init(r27934);
        mpfr_init(r27935);
        mpfr_init(r27936);
        mpfr_init(r27937);
        mpfr_init(r27938);
        mpfr_init_set_str(r27939, "3.316994150788608e-159", 10, MPFR_RNDN);
        mpfr_init(r27940);
        mpfr_init(r27941);
        mpfr_init(r27942);
        mpfr_init_set_str(r27943, "2.149706918230026e+153", 10, MPFR_RNDN);
        mpfr_init(r27944);
        mpfr_init(r27945);
        mpfr_init(r27946);
        mpfr_init(r27947);
        mpfr_init(r27948);
        mpfr_init_set_str(r27949, "3.545930250469086e+250", 10, MPFR_RNDN);
        mpfr_init(r27950);
        mpfr_init_set_str(r27951, "1.1266628819434354e+285", 10, MPFR_RNDN);
        mpfr_init(r27952);
        mpfr_init(r27953);
        mpfr_init(r27954);
        mpfr_init(r27955);
        mpfr_init(r27956);
        mpfr_init(r27957);
        mpfr_init(r27958);
        mpfr_init(r27959);
        mpfr_init(r27960);
        mpfr_init(r27961);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r27922, im, MPFR_RNDN);
        mpfr_set_d(r27923, re, MPFR_RNDN);
        mpfr_add(r27924, r27922, r27923, MPFR_RNDN);
        mpfr_mul(r27925, r27921, r27924, MPFR_RNDN);
        ;
        mpfr_set_si(r27927, mpfr_cmp(r27925, r27926) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27929, r27922, r27922, MPFR_RNDN);
        mpfr_mul(r27930, r27921, r27929, MPFR_RNDN);
        mpfr_sqrt(r27931, r27930, MPFR_RNDN);
        mpfr_mul(r27932, r27923, r27923, MPFR_RNDN);
        mpfr_add(r27933, r27932, r27929, MPFR_RNDN);
        mpfr_sqrt(r27934, r27933, MPFR_RNDN);
        mpfr_sub(r27935, r27934, r27923, MPFR_RNDN);
        mpfr_sqrt(r27936, r27935, MPFR_RNDN);
        mpfr_div(r27937, r27931, r27936, MPFR_RNDN);
        mpfr_mul(r27938, r27928, r27937, MPFR_RNDN);
        ;
        mpfr_set_si(r27940, mpfr_cmp(r27925, r27939) <= 0, MPFR_RNDN);
        mpfr_sqrt(r27941, r27925, MPFR_RNDN);
        mpfr_mul(r27942, r27928, r27941, MPFR_RNDN);
        ;
        mpfr_set_si(r27944, mpfr_cmp(r27925, r27943) <= 0, MPFR_RNDN);
        mpfr_add(r27945, r27934, r27923, MPFR_RNDN);
        mpfr_mul(r27946, r27921, r27945, MPFR_RNDN);
        mpfr_sqrt(r27947, r27946, MPFR_RNDN);
        mpfr_mul(r27948, r27928, r27947, MPFR_RNDN);
        ;
        mpfr_set_si(r27950, mpfr_cmp(r27925, r27949) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27952, mpfr_cmp(r27925, r27951) <= 0, MPFR_RNDN);
        mpfr_add(r27953, r27923, r27923, MPFR_RNDN);
        mpfr_mul(r27954, r27921, r27953, MPFR_RNDN);
        mpfr_sqrt(r27955, r27954, MPFR_RNDN);
        mpfr_mul(r27956, r27928, r27955, MPFR_RNDN);
        if (mpfr_get_si(r27952, MPFR_RNDN)) { mpfr_set(r27957, r27956, MPFR_RNDN); } else { mpfr_set(r27957, r27942, MPFR_RNDN); };
        if (mpfr_get_si(r27950, MPFR_RNDN)) { mpfr_set(r27958, r27942, MPFR_RNDN); } else { mpfr_set(r27958, r27957, MPFR_RNDN); };
        if (mpfr_get_si(r27944, MPFR_RNDN)) { mpfr_set(r27959, r27948, MPFR_RNDN); } else { mpfr_set(r27959, r27958, MPFR_RNDN); };
        if (mpfr_get_si(r27940, MPFR_RNDN)) { mpfr_set(r27960, r27942, MPFR_RNDN); } else { mpfr_set(r27960, r27959, MPFR_RNDN); };
        if (mpfr_get_si(r27927, MPFR_RNDN)) { mpfr_set(r27961, r27938, MPFR_RNDN); } else { mpfr_set(r27961, r27960, MPFR_RNDN); };
        return mpfr_get_d(r27961, MPFR_RNDN);
}

