#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 r18783 = 0.5f;
        float r18784 = 2.0f;
        float r18785 = re;
        float r18786 = r18785 * r18785;
        float r18787 = im;
        float r18788 = r18787 * r18787;
        float r18789 = r18786 + r18788;
        float r18790 = sqrt(r18789);
        float r18791 = r18790 + r18785;
        float r18792 = r18784 * r18791;
        float r18793 = sqrt(r18792);
        float r18794 = r18783 * r18793;
        return r18794;
}

double f_id(double re, double im) {
        double r18795 = 0.5;
        double r18796 = 2.0;
        double r18797 = re;
        double r18798 = r18797 * r18797;
        double r18799 = im;
        double r18800 = r18799 * r18799;
        double r18801 = r18798 + r18800;
        double r18802 = sqrt(r18801);
        double r18803 = r18802 + r18797;
        double r18804 = r18796 * r18803;
        double r18805 = sqrt(r18804);
        double r18806 = r18795 * r18805;
        return r18806;
}


double f_of(float re, float im) {
        float r18807 = re;
        float r18808 = -8.311217662803249e-19f;
        bool r18809 = r18807 <= r18808;
        float r18810 = 0.5f;
        float r18811 = 2.0f;
        float r18812 = im;
        float r18813 = r18811 * r18812;
        float r18814 = r18813 * r18812;
        float r18815 = sqrt(r18814);
        float r18816 = r18807 * r18807;
        float r18817 = r18812 * r18812;
        float r18818 = r18816 + r18817;
        float r18819 = sqrt(r18818);
        float r18820 = r18819 - r18807;
        float r18821 = sqrt(r18820);
        float r18822 = r18815 / r18821;
        float r18823 = r18810 * r18822;
        float r18824 = 43888257531904.0f;
        bool r18825 = r18807 <= r18824;
        float r18826 = r18807 * r18807;
        float r18827 = r18826 + r18817;
        float r18828 = sqrt(r18827);
        float r18829 = r18828 + r18807;
        float r18830 = r18811 * r18829;
        float r18831 = sqrt(r18830);
        float r18832 = r18810 * r18831;
        float r18833 = r18807 + r18807;
        float r18834 = r18811 * r18833;
        float r18835 = sqrt(r18834);
        float r18836 = r18810 * r18835;
        float r18837 = r18825 ? r18832 : r18836;
        float r18838 = r18809 ? r18823 : r18837;
        return r18838;
}

double f_od(double re, double im) {
        double r18839 = re;
        double r18840 = -8.311217662803249e-19;
        bool r18841 = r18839 <= r18840;
        double r18842 = 0.5;
        double r18843 = 2.0;
        double r18844 = im;
        double r18845 = r18843 * r18844;
        double r18846 = r18845 * r18844;
        double r18847 = sqrt(r18846);
        double r18848 = r18839 * r18839;
        double r18849 = r18844 * r18844;
        double r18850 = r18848 + r18849;
        double r18851 = sqrt(r18850);
        double r18852 = r18851 - r18839;
        double r18853 = sqrt(r18852);
        double r18854 = r18847 / r18853;
        double r18855 = r18842 * r18854;
        double r18856 = 43888257531904.0;
        bool r18857 = r18839 <= r18856;
        double r18858 = r18839 * r18839;
        double r18859 = r18858 + r18849;
        double r18860 = sqrt(r18859);
        double r18861 = r18860 + r18839;
        double r18862 = r18843 * r18861;
        double r18863 = sqrt(r18862);
        double r18864 = r18842 * r18863;
        double r18865 = r18839 + r18839;
        double r18866 = r18843 * r18865;
        double r18867 = sqrt(r18866);
        double r18868 = r18842 * r18867;
        double r18869 = r18857 ? r18864 : r18868;
        double r18870 = r18841 ? r18855 : r18869;
        return r18870;
}

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 r18871, r18872, r18873, r18874, r18875, r18876, r18877, r18878, r18879, r18880, r18881, r18882;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18871, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18872, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18873);
        mpfr_init(r18874);
        mpfr_init(r18875);
        mpfr_init(r18876);
        mpfr_init(r18877);
        mpfr_init(r18878);
        mpfr_init(r18879);
        mpfr_init(r18880);
        mpfr_init(r18881);
        mpfr_init(r18882);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18873, re, MPFR_RNDN);
        mpfr_mul(r18874, r18873, r18873, MPFR_RNDN);
        mpfr_set_d(r18875, im, MPFR_RNDN);
        mpfr_mul(r18876, r18875, r18875, MPFR_RNDN);
        mpfr_add(r18877, r18874, r18876, MPFR_RNDN);
        mpfr_sqrt(r18878, r18877, MPFR_RNDN);
        mpfr_add(r18879, r18878, r18873, MPFR_RNDN);
        mpfr_mul(r18880, r18872, r18879, MPFR_RNDN);
        mpfr_sqrt(r18881, r18880, MPFR_RNDN);
        mpfr_mul(r18882, r18871, r18881, MPFR_RNDN);
        return mpfr_get_d(r18882, MPFR_RNDN);
}

static mpfr_t r18883, r18884, r18885, r18886, r18887, r18888, r18889, r18890, r18891, r18892, r18893, r18894, r18895, r18896, r18897, r18898, r18899, r18900, r18901, r18902, r18903, r18904, r18905, r18906, r18907, r18908, r18909, r18910, r18911, r18912, r18913, r18914;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18883);
        mpfr_init_set_str(r18884, "-8.3112177f-19", 10, MPFR_RNDN);
        mpfr_init(r18885);
        mpfr_init_set_str(r18886, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18887, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18888);
        mpfr_init(r18889);
        mpfr_init(r18890);
        mpfr_init(r18891);
        mpfr_init(r18892);
        mpfr_init(r18893);
        mpfr_init(r18894);
        mpfr_init(r18895);
        mpfr_init(r18896);
        mpfr_init(r18897);
        mpfr_init(r18898);
        mpfr_init(r18899);
        mpfr_init_set_str(r18900, "4.3888258f+13", 10, MPFR_RNDN);
        mpfr_init(r18901);
        mpfr_init(r18902);
        mpfr_init(r18903);
        mpfr_init(r18904);
        mpfr_init(r18905);
        mpfr_init(r18906);
        mpfr_init(r18907);
        mpfr_init(r18908);
        mpfr_init(r18909);
        mpfr_init(r18910);
        mpfr_init(r18911);
        mpfr_init(r18912);
        mpfr_init(r18913);
        mpfr_init(r18914);
}

double f_fm(double re, double im) {
        mpfr_set_d(r18883, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18885, mpfr_cmp(r18883, r18884) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18888, im, MPFR_RNDN);
        mpfr_mul(r18889, r18887, r18888, MPFR_RNDN);
        mpfr_mul(r18890, r18889, r18888, MPFR_RNDN);
        mpfr_sqrt(r18891, r18890, MPFR_RNDN);
        mpfr_sqr(r18892, r18883, MPFR_RNDN);
        mpfr_mul(r18893, r18888, r18888, MPFR_RNDN);
        mpfr_add(r18894, r18892, r18893, MPFR_RNDN);
        mpfr_sqrt(r18895, r18894, MPFR_RNDN);
        mpfr_sub(r18896, r18895, r18883, MPFR_RNDN);
        mpfr_sqrt(r18897, r18896, MPFR_RNDN);
        mpfr_div(r18898, r18891, r18897, MPFR_RNDN);
        mpfr_mul(r18899, r18886, r18898, MPFR_RNDN);
        ;
        mpfr_set_si(r18901, mpfr_cmp(r18883, r18900) <= 0, MPFR_RNDN);
        mpfr_mul(r18902, r18883, r18883, MPFR_RNDN);
        mpfr_add(r18903, r18902, r18893, MPFR_RNDN);
        mpfr_sqrt(r18904, r18903, MPFR_RNDN);
        mpfr_add(r18905, r18904, r18883, MPFR_RNDN);
        mpfr_mul(r18906, r18887, r18905, MPFR_RNDN);
        mpfr_sqrt(r18907, r18906, MPFR_RNDN);
        mpfr_mul(r18908, r18886, r18907, MPFR_RNDN);
        mpfr_add(r18909, r18883, r18883, MPFR_RNDN);
        mpfr_mul(r18910, r18887, r18909, MPFR_RNDN);
        mpfr_sqrt(r18911, r18910, MPFR_RNDN);
        mpfr_mul(r18912, r18886, r18911, MPFR_RNDN);
        if (mpfr_get_si(r18901, MPFR_RNDN)) { mpfr_set(r18913, r18908, MPFR_RNDN); } else { mpfr_set(r18913, r18912, MPFR_RNDN); };
        if (mpfr_get_si(r18885, MPFR_RNDN)) { mpfr_set(r18914, r18899, MPFR_RNDN); } else { mpfr_set(r18914, r18913, MPFR_RNDN); };
        return mpfr_get_d(r18914, MPFR_RNDN);
}

static mpfr_t r18915, r18916, r18917, r18918, r18919, r18920, r18921, r18922, r18923, r18924, r18925, r18926, r18927, r18928, r18929, r18930, r18931, r18932, r18933, r18934, r18935, r18936, r18937, r18938, r18939, r18940, r18941, r18942, r18943, r18944, r18945, r18946;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18915);
        mpfr_init_set_str(r18916, "-8.3112177f-19", 10, MPFR_RNDN);
        mpfr_init(r18917);
        mpfr_init_set_str(r18918, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18919, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18920);
        mpfr_init(r18921);
        mpfr_init(r18922);
        mpfr_init(r18923);
        mpfr_init(r18924);
        mpfr_init(r18925);
        mpfr_init(r18926);
        mpfr_init(r18927);
        mpfr_init(r18928);
        mpfr_init(r18929);
        mpfr_init(r18930);
        mpfr_init(r18931);
        mpfr_init_set_str(r18932, "4.3888258f+13", 10, MPFR_RNDN);
        mpfr_init(r18933);
        mpfr_init(r18934);
        mpfr_init(r18935);
        mpfr_init(r18936);
        mpfr_init(r18937);
        mpfr_init(r18938);
        mpfr_init(r18939);
        mpfr_init(r18940);
        mpfr_init(r18941);
        mpfr_init(r18942);
        mpfr_init(r18943);
        mpfr_init(r18944);
        mpfr_init(r18945);
        mpfr_init(r18946);
}

double f_dm(double re, double im) {
        mpfr_set_d(r18915, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18917, mpfr_cmp(r18915, r18916) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r18920, im, MPFR_RNDN);
        mpfr_mul(r18921, r18919, r18920, MPFR_RNDN);
        mpfr_mul(r18922, r18921, r18920, MPFR_RNDN);
        mpfr_sqrt(r18923, r18922, MPFR_RNDN);
        mpfr_sqr(r18924, r18915, MPFR_RNDN);
        mpfr_mul(r18925, r18920, r18920, MPFR_RNDN);
        mpfr_add(r18926, r18924, r18925, MPFR_RNDN);
        mpfr_sqrt(r18927, r18926, MPFR_RNDN);
        mpfr_sub(r18928, r18927, r18915, MPFR_RNDN);
        mpfr_sqrt(r18929, r18928, MPFR_RNDN);
        mpfr_div(r18930, r18923, r18929, MPFR_RNDN);
        mpfr_mul(r18931, r18918, r18930, MPFR_RNDN);
        ;
        mpfr_set_si(r18933, mpfr_cmp(r18915, r18932) <= 0, MPFR_RNDN);
        mpfr_mul(r18934, r18915, r18915, MPFR_RNDN);
        mpfr_add(r18935, r18934, r18925, MPFR_RNDN);
        mpfr_sqrt(r18936, r18935, MPFR_RNDN);
        mpfr_add(r18937, r18936, r18915, MPFR_RNDN);
        mpfr_mul(r18938, r18919, r18937, MPFR_RNDN);
        mpfr_sqrt(r18939, r18938, MPFR_RNDN);
        mpfr_mul(r18940, r18918, r18939, MPFR_RNDN);
        mpfr_add(r18941, r18915, r18915, MPFR_RNDN);
        mpfr_mul(r18942, r18919, r18941, MPFR_RNDN);
        mpfr_sqrt(r18943, r18942, MPFR_RNDN);
        mpfr_mul(r18944, r18918, r18943, MPFR_RNDN);
        if (mpfr_get_si(r18933, MPFR_RNDN)) { mpfr_set(r18945, r18940, MPFR_RNDN); } else { mpfr_set(r18945, r18944, MPFR_RNDN); };
        if (mpfr_get_si(r18917, MPFR_RNDN)) { mpfr_set(r18946, r18931, MPFR_RNDN); } else { mpfr_set(r18946, r18945, MPFR_RNDN); };
        return mpfr_get_d(r18946, MPFR_RNDN);
}

