#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 r25701 = 0.5;
        float r25702 = 2.0;
        float r25703 = re;
        float r25704 = r25703 * r25703;
        float r25705 = im;
        float r25706 = r25705 * r25705;
        float r25707 = r25704 + r25706;
        float r25708 = sqrt(r25707);
        float r25709 = r25708 + r25703;
        float r25710 = r25702 * r25709;
        float r25711 = sqrt(r25710);
        float r25712 = r25701 * r25711;
        return r25712;
}

double f_id(double re, double im) {
        double r25713 = 0.5;
        double r25714 = 2.0;
        double r25715 = re;
        double r25716 = r25715 * r25715;
        double r25717 = im;
        double r25718 = r25717 * r25717;
        double r25719 = r25716 + r25718;
        double r25720 = sqrt(r25719);
        double r25721 = r25720 + r25715;
        double r25722 = r25714 * r25721;
        double r25723 = sqrt(r25722);
        double r25724 = r25713 * r25723;
        return r25724;
}


double f_of(float re, float im) {
        float r25725 = 2.0;
        float r25726 = im;
        float r25727 = re;
        float r25728 = r25726 + r25727;
        float r25729 = r25725 * r25728;
        float r25730 = -1.7006361511761267e+159;
        bool r25731 = r25729 <= r25730;
        float r25732 = fabs(r25726);
        float r25733 = sqrt(r25725);
        float r25734 = r25732 * r25733;
        float r25735 = 0.5;
        float r25736 = r25734 * r25735;
        float r25737 = -r25727;
        float r25738 = r25737 - r25727;
        float r25739 = sqrt(r25738);
        float r25740 = r25736 / r25739;
        float r25741 = 1.4656020637038876e-273;
        bool r25742 = r25729 <= r25741;
        float r25743 = sqrt(r25733);
        float r25744 = r25732 * r25743;
        float r25745 = r25744 * r25743;
        float r25746 = r25727 * r25727;
        float r25747 = r25726 * r25726;
        float r25748 = r25746 + r25747;
        float r25749 = sqrt(r25748);
        float r25750 = r25749 - r25727;
        float r25751 = sqrt(r25750);
        float r25752 = r25745 / r25751;
        float r25753 = r25735 * r25752;
        float r25754 = 3.225943514710755e-144;
        bool r25755 = r25729 <= r25754;
        float r25756 = sqrt(r25729);
        float r25757 = r25735 * r25756;
        float r25758 = 1.2919995239625574e+155;
        bool r25759 = r25729 <= r25758;
        float r25760 = r25749 + r25727;
        float r25761 = sqrt(r25760);
        float r25762 = r25733 * r25761;
        float r25763 = r25735 * r25762;
        float r25764 = r25759 ? r25763 : r25757;
        float r25765 = r25755 ? r25757 : r25764;
        float r25766 = r25742 ? r25753 : r25765;
        float r25767 = r25731 ? r25740 : r25766;
        return r25767;
}

double f_od(double re, double im) {
        double r25768 = 2.0;
        double r25769 = im;
        double r25770 = re;
        double r25771 = r25769 + r25770;
        double r25772 = r25768 * r25771;
        double r25773 = -1.7006361511761267e+159;
        bool r25774 = r25772 <= r25773;
        double r25775 = fabs(r25769);
        double r25776 = sqrt(r25768);
        double r25777 = r25775 * r25776;
        double r25778 = 0.5;
        double r25779 = r25777 * r25778;
        double r25780 = -r25770;
        double r25781 = r25780 - r25770;
        double r25782 = sqrt(r25781);
        double r25783 = r25779 / r25782;
        double r25784 = 1.4656020637038876e-273;
        bool r25785 = r25772 <= r25784;
        double r25786 = sqrt(r25776);
        double r25787 = r25775 * r25786;
        double r25788 = r25787 * r25786;
        double r25789 = r25770 * r25770;
        double r25790 = r25769 * r25769;
        double r25791 = r25789 + r25790;
        double r25792 = sqrt(r25791);
        double r25793 = r25792 - r25770;
        double r25794 = sqrt(r25793);
        double r25795 = r25788 / r25794;
        double r25796 = r25778 * r25795;
        double r25797 = 3.225943514710755e-144;
        bool r25798 = r25772 <= r25797;
        double r25799 = sqrt(r25772);
        double r25800 = r25778 * r25799;
        double r25801 = 1.2919995239625574e+155;
        bool r25802 = r25772 <= r25801;
        double r25803 = r25792 + r25770;
        double r25804 = sqrt(r25803);
        double r25805 = r25776 * r25804;
        double r25806 = r25778 * r25805;
        double r25807 = r25802 ? r25806 : r25800;
        double r25808 = r25798 ? r25800 : r25807;
        double r25809 = r25785 ? r25796 : r25808;
        double r25810 = r25774 ? r25783 : r25809;
        return r25810;
}

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 r25811, r25812, r25813, r25814, r25815, r25816, r25817, r25818, r25819, r25820, r25821, r25822;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r25811, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r25812, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25813);
        mpfr_init(r25814);
        mpfr_init(r25815);
        mpfr_init(r25816);
        mpfr_init(r25817);
        mpfr_init(r25818);
        mpfr_init(r25819);
        mpfr_init(r25820);
        mpfr_init(r25821);
        mpfr_init(r25822);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r25813, re, MPFR_RNDN);
        mpfr_mul(r25814, r25813, r25813, MPFR_RNDN);
        mpfr_set_d(r25815, im, MPFR_RNDN);
        mpfr_mul(r25816, r25815, r25815, MPFR_RNDN);
        mpfr_add(r25817, r25814, r25816, MPFR_RNDN);
        mpfr_sqrt(r25818, r25817, MPFR_RNDN);
        mpfr_add(r25819, r25818, r25813, MPFR_RNDN);
        mpfr_mul(r25820, r25812, r25819, MPFR_RNDN);
        mpfr_sqrt(r25821, r25820, MPFR_RNDN);
        mpfr_mul(r25822, r25811, r25821, MPFR_RNDN);
        return mpfr_get_d(r25822, MPFR_RNDN);
}

static mpfr_t r25823, r25824, r25825, r25826, r25827, r25828, r25829, r25830, r25831, r25832, r25833, r25834, r25835, r25836, r25837, r25838, r25839, r25840, r25841, r25842, r25843, r25844, r25845, r25846, r25847, r25848, r25849, r25850, r25851, r25852, r25853, r25854, r25855, r25856, r25857, r25858, r25859, r25860, r25861, r25862, r25863, r25864, r25865;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r25823, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25824);
        mpfr_init(r25825);
        mpfr_init(r25826);
        mpfr_init(r25827);
        mpfr_init_set_str(r25828, "-1.7006361511761267e+159", 10, MPFR_RNDN);
        mpfr_init(r25829);
        mpfr_init(r25830);
        mpfr_init(r25831);
        mpfr_init(r25832);
        mpfr_init_set_str(r25833, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25834);
        mpfr_init(r25835);
        mpfr_init(r25836);
        mpfr_init(r25837);
        mpfr_init(r25838);
        mpfr_init_set_str(r25839, "1.4656020637038876e-273", 10, MPFR_RNDN);
        mpfr_init(r25840);
        mpfr_init(r25841);
        mpfr_init(r25842);
        mpfr_init(r25843);
        mpfr_init(r25844);
        mpfr_init(r25845);
        mpfr_init(r25846);
        mpfr_init(r25847);
        mpfr_init(r25848);
        mpfr_init(r25849);
        mpfr_init(r25850);
        mpfr_init(r25851);
        mpfr_init_set_str(r25852, "3.225943514710755e-144", 10, MPFR_RNDN);
        mpfr_init(r25853);
        mpfr_init(r25854);
        mpfr_init(r25855);
        mpfr_init_set_str(r25856, "1.2919995239625574e+155", 10, MPFR_RNDN);
        mpfr_init(r25857);
        mpfr_init(r25858);
        mpfr_init(r25859);
        mpfr_init(r25860);
        mpfr_init(r25861);
        mpfr_init(r25862);
        mpfr_init(r25863);
        mpfr_init(r25864);
        mpfr_init(r25865);
}

double f_fm(double re, double im) {
        ;
        mpfr_set_d(r25824, im, MPFR_RNDN);
        mpfr_set_d(r25825, re, MPFR_RNDN);
        mpfr_add(r25826, r25824, r25825, MPFR_RNDN);
        mpfr_mul(r25827, r25823, r25826, MPFR_RNDN);
        ;
        mpfr_set_si(r25829, mpfr_cmp(r25827, r25828) <= 0, MPFR_RNDN);
        mpfr_abs(r25830, r25824, MPFR_RNDN);
        mpfr_sqrt(r25831, r25823, MPFR_RNDN);
        mpfr_mul(r25832, r25830, r25831, MPFR_RNDN);
        ;
        mpfr_mul(r25834, r25832, r25833, MPFR_RNDN);
        mpfr_neg(r25835, r25825, MPFR_RNDN);
        mpfr_sub(r25836, r25835, r25825, MPFR_RNDN);
        mpfr_sqrt(r25837, r25836, MPFR_RNDN);
        mpfr_div(r25838, r25834, r25837, MPFR_RNDN);
        ;
        mpfr_set_si(r25840, mpfr_cmp(r25827, r25839) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25841, r25831, MPFR_RNDN);
        mpfr_mul(r25842, r25830, r25841, MPFR_RNDN);
        mpfr_mul(r25843, r25842, r25841, MPFR_RNDN);
        mpfr_mul(r25844, r25825, r25825, MPFR_RNDN);
        mpfr_mul(r25845, r25824, r25824, MPFR_RNDN);
        mpfr_add(r25846, r25844, r25845, MPFR_RNDN);
        mpfr_sqrt(r25847, r25846, MPFR_RNDN);
        mpfr_sub(r25848, r25847, r25825, MPFR_RNDN);
        mpfr_sqrt(r25849, r25848, MPFR_RNDN);
        mpfr_div(r25850, r25843, r25849, MPFR_RNDN);
        mpfr_mul(r25851, r25833, r25850, MPFR_RNDN);
        ;
        mpfr_set_si(r25853, mpfr_cmp(r25827, r25852) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25854, r25827, MPFR_RNDN);
        mpfr_mul(r25855, r25833, r25854, MPFR_RNDN);
        ;
        mpfr_set_si(r25857, mpfr_cmp(r25827, r25856) <= 0, MPFR_RNDN);
        mpfr_add(r25858, r25847, r25825, MPFR_RNDN);
        mpfr_sqrt(r25859, r25858, MPFR_RNDN);
        mpfr_mul(r25860, r25831, r25859, MPFR_RNDN);
        mpfr_mul(r25861, r25833, r25860, MPFR_RNDN);
        if (mpfr_get_si(r25857, MPFR_RNDN)) { mpfr_set(r25862, r25861, MPFR_RNDN); } else { mpfr_set(r25862, r25855, MPFR_RNDN); };
        if (mpfr_get_si(r25853, MPFR_RNDN)) { mpfr_set(r25863, r25855, MPFR_RNDN); } else { mpfr_set(r25863, r25862, MPFR_RNDN); };
        if (mpfr_get_si(r25840, MPFR_RNDN)) { mpfr_set(r25864, r25851, MPFR_RNDN); } else { mpfr_set(r25864, r25863, MPFR_RNDN); };
        if (mpfr_get_si(r25829, MPFR_RNDN)) { mpfr_set(r25865, r25838, MPFR_RNDN); } else { mpfr_set(r25865, r25864, MPFR_RNDN); };
        return mpfr_get_d(r25865, MPFR_RNDN);
}

static mpfr_t r25866, r25867, r25868, r25869, r25870, r25871, r25872, r25873, r25874, r25875, r25876, r25877, r25878, r25879, r25880, r25881, r25882, r25883, r25884, r25885, r25886, r25887, r25888, r25889, r25890, r25891, r25892, r25893, r25894, r25895, r25896, r25897, r25898, r25899, r25900, r25901, r25902, r25903, r25904, r25905, r25906, r25907, r25908;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r25866, "2.0", 10, MPFR_RNDN);
        mpfr_init(r25867);
        mpfr_init(r25868);
        mpfr_init(r25869);
        mpfr_init(r25870);
        mpfr_init_set_str(r25871, "-1.7006361511761267e+159", 10, MPFR_RNDN);
        mpfr_init(r25872);
        mpfr_init(r25873);
        mpfr_init(r25874);
        mpfr_init(r25875);
        mpfr_init_set_str(r25876, "0.5", 10, MPFR_RNDN);
        mpfr_init(r25877);
        mpfr_init(r25878);
        mpfr_init(r25879);
        mpfr_init(r25880);
        mpfr_init(r25881);
        mpfr_init_set_str(r25882, "1.4656020637038876e-273", 10, MPFR_RNDN);
        mpfr_init(r25883);
        mpfr_init(r25884);
        mpfr_init(r25885);
        mpfr_init(r25886);
        mpfr_init(r25887);
        mpfr_init(r25888);
        mpfr_init(r25889);
        mpfr_init(r25890);
        mpfr_init(r25891);
        mpfr_init(r25892);
        mpfr_init(r25893);
        mpfr_init(r25894);
        mpfr_init_set_str(r25895, "3.225943514710755e-144", 10, MPFR_RNDN);
        mpfr_init(r25896);
        mpfr_init(r25897);
        mpfr_init(r25898);
        mpfr_init_set_str(r25899, "1.2919995239625574e+155", 10, MPFR_RNDN);
        mpfr_init(r25900);
        mpfr_init(r25901);
        mpfr_init(r25902);
        mpfr_init(r25903);
        mpfr_init(r25904);
        mpfr_init(r25905);
        mpfr_init(r25906);
        mpfr_init(r25907);
        mpfr_init(r25908);
}

double f_dm(double re, double im) {
        ;
        mpfr_set_d(r25867, im, MPFR_RNDN);
        mpfr_set_d(r25868, re, MPFR_RNDN);
        mpfr_add(r25869, r25867, r25868, MPFR_RNDN);
        mpfr_mul(r25870, r25866, r25869, MPFR_RNDN);
        ;
        mpfr_set_si(r25872, mpfr_cmp(r25870, r25871) <= 0, MPFR_RNDN);
        mpfr_abs(r25873, r25867, MPFR_RNDN);
        mpfr_sqrt(r25874, r25866, MPFR_RNDN);
        mpfr_mul(r25875, r25873, r25874, MPFR_RNDN);
        ;
        mpfr_mul(r25877, r25875, r25876, MPFR_RNDN);
        mpfr_neg(r25878, r25868, MPFR_RNDN);
        mpfr_sub(r25879, r25878, r25868, MPFR_RNDN);
        mpfr_sqrt(r25880, r25879, MPFR_RNDN);
        mpfr_div(r25881, r25877, r25880, MPFR_RNDN);
        ;
        mpfr_set_si(r25883, mpfr_cmp(r25870, r25882) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25884, r25874, MPFR_RNDN);
        mpfr_mul(r25885, r25873, r25884, MPFR_RNDN);
        mpfr_mul(r25886, r25885, r25884, MPFR_RNDN);
        mpfr_mul(r25887, r25868, r25868, MPFR_RNDN);
        mpfr_mul(r25888, r25867, r25867, MPFR_RNDN);
        mpfr_add(r25889, r25887, r25888, MPFR_RNDN);
        mpfr_sqrt(r25890, r25889, MPFR_RNDN);
        mpfr_sub(r25891, r25890, r25868, MPFR_RNDN);
        mpfr_sqrt(r25892, r25891, MPFR_RNDN);
        mpfr_div(r25893, r25886, r25892, MPFR_RNDN);
        mpfr_mul(r25894, r25876, r25893, MPFR_RNDN);
        ;
        mpfr_set_si(r25896, mpfr_cmp(r25870, r25895) <= 0, MPFR_RNDN);
        mpfr_sqrt(r25897, r25870, MPFR_RNDN);
        mpfr_mul(r25898, r25876, r25897, MPFR_RNDN);
        ;
        mpfr_set_si(r25900, mpfr_cmp(r25870, r25899) <= 0, MPFR_RNDN);
        mpfr_add(r25901, r25890, r25868, MPFR_RNDN);
        mpfr_sqrt(r25902, r25901, MPFR_RNDN);
        mpfr_mul(r25903, r25874, r25902, MPFR_RNDN);
        mpfr_mul(r25904, r25876, r25903, MPFR_RNDN);
        if (mpfr_get_si(r25900, MPFR_RNDN)) { mpfr_set(r25905, r25904, MPFR_RNDN); } else { mpfr_set(r25905, r25898, MPFR_RNDN); };
        if (mpfr_get_si(r25896, MPFR_RNDN)) { mpfr_set(r25906, r25898, MPFR_RNDN); } else { mpfr_set(r25906, r25905, MPFR_RNDN); };
        if (mpfr_get_si(r25883, MPFR_RNDN)) { mpfr_set(r25907, r25894, MPFR_RNDN); } else { mpfr_set(r25907, r25906, MPFR_RNDN); };
        if (mpfr_get_si(r25872, MPFR_RNDN)) { mpfr_set(r25908, r25881, MPFR_RNDN); } else { mpfr_set(r25908, r25907, MPFR_RNDN); };
        return mpfr_get_d(r25908, MPFR_RNDN);
}

