#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 r19755 = 0.5f;
        float r19756 = 2.0f;
        float r19757 = re;
        float r19758 = r19757 * r19757;
        float r19759 = im;
        float r19760 = r19759 * r19759;
        float r19761 = r19758 + r19760;
        float r19762 = sqrt(r19761);
        float r19763 = r19762 + r19757;
        float r19764 = r19756 * r19763;
        float r19765 = sqrt(r19764);
        float r19766 = r19755 * r19765;
        return r19766;
}

double f_id(double re, double im) {
        double r19767 = 0.5;
        double r19768 = 2.0;
        double r19769 = re;
        double r19770 = r19769 * r19769;
        double r19771 = im;
        double r19772 = r19771 * r19771;
        double r19773 = r19770 + r19772;
        double r19774 = sqrt(r19773);
        double r19775 = r19774 + r19769;
        double r19776 = r19768 * r19775;
        double r19777 = sqrt(r19776);
        double r19778 = r19767 * r19777;
        return r19778;
}


double f_of(float re, float im) {
        float r19779 = re;
        float r19780 = 5.025445854041876e-39f;
        bool r19781 = r19779 <= r19780;
        float r19782 = 0.5f;
        float r19783 = 2.0f;
        float r19784 = im;
        float r19785 = r19783 * r19784;
        float r19786 = r19785 * r19784;
        float r19787 = sqrt(r19786);
        float r19788 = r19779 * r19779;
        float r19789 = r19784 * r19784;
        float r19790 = r19788 + r19789;
        float r19791 = sqrt(r19790);
        float r19792 = r19791 - r19779;
        float r19793 = sqrt(r19792);
        float r19794 = r19787 / r19793;
        float r19795 = r19782 * r19794;
        float r19796 = 1212733.375f;
        bool r19797 = r19779 <= r19796;
        float r19798 = sqrt(r19791);
        float r19799 = r19798 * r19798;
        float r19800 = r19799 + r19779;
        float r19801 = r19783 * r19800;
        float r19802 = sqrt(r19801);
        float r19803 = r19802 * (r19802 * r19802);
        float r19804 = cbrt(r19803);
        float r19805 = r19782 * r19804;
        float r19806 = r19779 + r19779;
        float r19807 = r19783 * r19806;
        float r19808 = sqrt(r19807);
        float r19809 = r19782 * r19808;
        float r19810 = r19797 ? r19805 : r19809;
        float r19811 = r19781 ? r19795 : r19810;
        return r19811;
}

double f_od(double re, double im) {
        double r19812 = re;
        double r19813 = 5.025445854041876e-39;
        bool r19814 = r19812 <= r19813;
        double r19815 = 0.5;
        double r19816 = 2.0;
        double r19817 = im;
        double r19818 = r19816 * r19817;
        double r19819 = r19818 * r19817;
        double r19820 = sqrt(r19819);
        double r19821 = r19812 * r19812;
        double r19822 = r19817 * r19817;
        double r19823 = r19821 + r19822;
        double r19824 = sqrt(r19823);
        double r19825 = r19824 - r19812;
        double r19826 = sqrt(r19825);
        double r19827 = r19820 / r19826;
        double r19828 = r19815 * r19827;
        double r19829 = 1212733.375;
        bool r19830 = r19812 <= r19829;
        double r19831 = sqrt(r19824);
        double r19832 = r19831 * r19831;
        double r19833 = r19832 + r19812;
        double r19834 = r19816 * r19833;
        double r19835 = sqrt(r19834);
        double r19836 = r19835 * (r19835 * r19835);
        double r19837 = cbrt(r19836);
        double r19838 = r19815 * r19837;
        double r19839 = r19812 + r19812;
        double r19840 = r19816 * r19839;
        double r19841 = sqrt(r19840);
        double r19842 = r19815 * r19841;
        double r19843 = r19830 ? r19838 : r19842;
        double r19844 = r19814 ? r19828 : r19843;
        return r19844;
}

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 r19845, r19846, r19847, r19848, r19849, r19850, r19851, r19852, r19853, r19854, r19855, r19856;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19845, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19846, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19847);
        mpfr_init(r19848);
        mpfr_init(r19849);
        mpfr_init(r19850);
        mpfr_init(r19851);
        mpfr_init(r19852);
        mpfr_init(r19853);
        mpfr_init(r19854);
        mpfr_init(r19855);
        mpfr_init(r19856);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19847, re, MPFR_RNDN);
        mpfr_mul(r19848, r19847, r19847, MPFR_RNDN);
        mpfr_set_d(r19849, im, MPFR_RNDN);
        mpfr_mul(r19850, r19849, r19849, MPFR_RNDN);
        mpfr_add(r19851, r19848, r19850, MPFR_RNDN);
        mpfr_sqrt(r19852, r19851, MPFR_RNDN);
        mpfr_add(r19853, r19852, r19847, MPFR_RNDN);
        mpfr_mul(r19854, r19846, r19853, MPFR_RNDN);
        mpfr_sqrt(r19855, r19854, MPFR_RNDN);
        mpfr_mul(r19856, r19845, r19855, MPFR_RNDN);
        return mpfr_get_d(r19856, MPFR_RNDN);
}

static mpfr_t r19857, r19858, r19859, r19860, r19861, r19862, r19863, r19864, r19865, r19866, r19867, r19868, r19869, r19870, r19871, r19872, r19873, r19874, r19875, r19876, r19877, r19878, r19879, r19880, r19881, r19882, r19883, r19884, r19885, r19886, r19887, r19888, r19889;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19857);
        mpfr_init_set_str(r19858, "5.025446f-39", 10, MPFR_RNDN);
        mpfr_init(r19859);
        mpfr_init_set_str(r19860, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19861, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19862);
        mpfr_init(r19863);
        mpfr_init(r19864);
        mpfr_init(r19865);
        mpfr_init(r19866);
        mpfr_init(r19867);
        mpfr_init(r19868);
        mpfr_init(r19869);
        mpfr_init(r19870);
        mpfr_init(r19871);
        mpfr_init(r19872);
        mpfr_init(r19873);
        mpfr_init_set_str(r19874, "1212733.4f0", 10, MPFR_RNDN);
        mpfr_init(r19875);
        mpfr_init(r19876);
        mpfr_init(r19877);
        mpfr_init(r19878);
        mpfr_init(r19879);
        mpfr_init(r19880);
        mpfr_init(r19881);
        mpfr_init(r19882);
        mpfr_init(r19883);
        mpfr_init(r19884);
        mpfr_init(r19885);
        mpfr_init(r19886);
        mpfr_init(r19887);
        mpfr_init(r19888);
        mpfr_init(r19889);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19857, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19859, mpfr_cmp(r19857, r19858) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19862, im, MPFR_RNDN);
        mpfr_mul(r19863, r19861, r19862, MPFR_RNDN);
        mpfr_mul(r19864, r19863, r19862, MPFR_RNDN);
        mpfr_sqrt(r19865, r19864, MPFR_RNDN);
        mpfr_sqr(r19866, r19857, MPFR_RNDN);
        mpfr_mul(r19867, r19862, r19862, MPFR_RNDN);
        mpfr_add(r19868, r19866, r19867, MPFR_RNDN);
        mpfr_sqrt(r19869, r19868, MPFR_RNDN);
        mpfr_sub(r19870, r19869, r19857, MPFR_RNDN);
        mpfr_sqrt(r19871, r19870, MPFR_RNDN);
        mpfr_div(r19872, r19865, r19871, MPFR_RNDN);
        mpfr_mul(r19873, r19860, r19872, MPFR_RNDN);
        ;
        mpfr_set_si(r19875, mpfr_cmp(r19857, r19874) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19876, r19869, MPFR_RNDN);
        mpfr_sqr(r19877, r19876, MPFR_RNDN);
        mpfr_add(r19878, r19877, r19857, MPFR_RNDN);
        mpfr_mul(r19879, r19861, r19878, MPFR_RNDN);
        mpfr_sqrt(r19880, r19879, MPFR_RNDN);
        mpfr_mul(r19881, r19880, r19880, MPFR_RNDN); mpfr_mul(r19881, r19881, r19880, MPFR_RNDN);
        mpfr_cbrt(r19882, r19881, MPFR_RNDN);
        mpfr_mul(r19883, r19860, r19882, MPFR_RNDN);
        mpfr_add(r19884, r19857, r19857, MPFR_RNDN);
        mpfr_mul(r19885, r19861, r19884, MPFR_RNDN);
        mpfr_sqrt(r19886, r19885, MPFR_RNDN);
        mpfr_mul(r19887, r19860, r19886, MPFR_RNDN);
        if (mpfr_get_si(r19875, MPFR_RNDN)) { mpfr_set(r19888, r19883, MPFR_RNDN); } else { mpfr_set(r19888, r19887, MPFR_RNDN); };
        if (mpfr_get_si(r19859, MPFR_RNDN)) { mpfr_set(r19889, r19873, MPFR_RNDN); } else { mpfr_set(r19889, r19888, MPFR_RNDN); };
        return mpfr_get_d(r19889, MPFR_RNDN);
}

static mpfr_t r19890, r19891, r19892, r19893, r19894, r19895, r19896, r19897, r19898, r19899, r19900, r19901, r19902, r19903, r19904, r19905, r19906, r19907, r19908, r19909, r19910, r19911, r19912, r19913, r19914, r19915, r19916, r19917, r19918, r19919, r19920, r19921, r19922;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19890);
        mpfr_init_set_str(r19891, "5.025446f-39", 10, MPFR_RNDN);
        mpfr_init(r19892);
        mpfr_init_set_str(r19893, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19894, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19895);
        mpfr_init(r19896);
        mpfr_init(r19897);
        mpfr_init(r19898);
        mpfr_init(r19899);
        mpfr_init(r19900);
        mpfr_init(r19901);
        mpfr_init(r19902);
        mpfr_init(r19903);
        mpfr_init(r19904);
        mpfr_init(r19905);
        mpfr_init(r19906);
        mpfr_init_set_str(r19907, "1212733.4f0", 10, MPFR_RNDN);
        mpfr_init(r19908);
        mpfr_init(r19909);
        mpfr_init(r19910);
        mpfr_init(r19911);
        mpfr_init(r19912);
        mpfr_init(r19913);
        mpfr_init(r19914);
        mpfr_init(r19915);
        mpfr_init(r19916);
        mpfr_init(r19917);
        mpfr_init(r19918);
        mpfr_init(r19919);
        mpfr_init(r19920);
        mpfr_init(r19921);
        mpfr_init(r19922);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19890, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19892, mpfr_cmp(r19890, r19891) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r19895, im, MPFR_RNDN);
        mpfr_mul(r19896, r19894, r19895, MPFR_RNDN);
        mpfr_mul(r19897, r19896, r19895, MPFR_RNDN);
        mpfr_sqrt(r19898, r19897, MPFR_RNDN);
        mpfr_sqr(r19899, r19890, MPFR_RNDN);
        mpfr_mul(r19900, r19895, r19895, MPFR_RNDN);
        mpfr_add(r19901, r19899, r19900, MPFR_RNDN);
        mpfr_sqrt(r19902, r19901, MPFR_RNDN);
        mpfr_sub(r19903, r19902, r19890, MPFR_RNDN);
        mpfr_sqrt(r19904, r19903, MPFR_RNDN);
        mpfr_div(r19905, r19898, r19904, MPFR_RNDN);
        mpfr_mul(r19906, r19893, r19905, MPFR_RNDN);
        ;
        mpfr_set_si(r19908, mpfr_cmp(r19890, r19907) <= 0, MPFR_RNDN);
        mpfr_sqrt(r19909, r19902, MPFR_RNDN);
        mpfr_sqr(r19910, r19909, MPFR_RNDN);
        mpfr_add(r19911, r19910, r19890, MPFR_RNDN);
        mpfr_mul(r19912, r19894, r19911, MPFR_RNDN);
        mpfr_sqrt(r19913, r19912, MPFR_RNDN);
        mpfr_mul(r19914, r19913, r19913, MPFR_RNDN); mpfr_mul(r19914, r19914, r19913, MPFR_RNDN);
        mpfr_cbrt(r19915, r19914, MPFR_RNDN);
        mpfr_mul(r19916, r19893, r19915, MPFR_RNDN);
        mpfr_add(r19917, r19890, r19890, MPFR_RNDN);
        mpfr_mul(r19918, r19894, r19917, MPFR_RNDN);
        mpfr_sqrt(r19919, r19918, MPFR_RNDN);
        mpfr_mul(r19920, r19893, r19919, MPFR_RNDN);
        if (mpfr_get_si(r19908, MPFR_RNDN)) { mpfr_set(r19921, r19916, MPFR_RNDN); } else { mpfr_set(r19921, r19920, MPFR_RNDN); };
        if (mpfr_get_si(r19892, MPFR_RNDN)) { mpfr_set(r19922, r19906, MPFR_RNDN); } else { mpfr_set(r19922, r19921, MPFR_RNDN); };
        return mpfr_get_d(r19922, MPFR_RNDN);
}

