#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 r18795 = 0.5f;
        float r18796 = 2.0f;
        float r18797 = re;
        float r18798 = r18797 * r18797;
        float r18799 = im;
        float r18800 = r18799 * r18799;
        float r18801 = r18798 + r18800;
        float r18802 = sqrt(r18801);
        float r18803 = r18802 + r18797;
        float r18804 = r18796 * r18803;
        float r18805 = sqrt(r18804);
        float r18806 = r18795 * r18805;
        return r18806;
}

double f_id(double re, double im) {
        double r18807 = 0.5;
        double r18808 = 2.0;
        double r18809 = re;
        double r18810 = r18809 * r18809;
        double r18811 = im;
        double r18812 = r18811 * r18811;
        double r18813 = r18810 + r18812;
        double r18814 = sqrt(r18813);
        double r18815 = r18814 + r18809;
        double r18816 = r18808 * r18815;
        double r18817 = sqrt(r18816);
        double r18818 = r18807 * r18817;
        return r18818;
}


double f_of(float re, float im) {
        float r18819 = re;
        float r18820 = -6.457467079162598f;
        bool r18821 = r18819 <= r18820;
        float r18822 = im;
        float r18823 = r18822 * r18822;
        float r18824 = 2.0f;
        float r18825 = r18823 * r18824;
        float r18826 = sqrt(r18825);
        float r18827 = 0.5f;
        float r18828 = -2.0f;
        float r18829 = r18819 * r18828;
        float r18830 = sqrt(r18829);
        float r18831 = r18827 / r18830;
        float r18832 = r18826 * r18831;
        float r18833 = 283633231331328.0f;
        bool r18834 = r18819 <= r18833;
        float r18835 = r18819 * r18819;
        float r18836 = r18822 * r18822;
        float r18837 = r18835 + r18836;
        float r18838 = sqrt(r18837);
        float r18839 = r18838 + r18819;
        float r18840 = r18824 * r18839;
        float r18841 = sqrt(r18840);
        float r18842 = r18827 * r18841;
        float r18843 = r18819 + r18819;
        float r18844 = r18824 * r18843;
        float r18845 = sqrt(r18844);
        float r18846 = r18827 * r18845;
        float r18847 = r18834 ? r18842 : r18846;
        float r18848 = r18821 ? r18832 : r18847;
        return r18848;
}

double f_od(double re, double im) {
        double r18849 = re;
        double r18850 = -6.457467079162598;
        bool r18851 = r18849 <= r18850;
        double r18852 = im;
        double r18853 = r18852 * r18852;
        double r18854 = 2.0;
        double r18855 = r18853 * r18854;
        double r18856 = sqrt(r18855);
        double r18857 = 0.5;
        double r18858 = -2.0;
        double r18859 = r18849 * r18858;
        double r18860 = sqrt(r18859);
        double r18861 = r18857 / r18860;
        double r18862 = r18856 * r18861;
        double r18863 = 283633231331328.0;
        bool r18864 = r18849 <= r18863;
        double r18865 = r18849 * r18849;
        double r18866 = r18852 * r18852;
        double r18867 = r18865 + r18866;
        double r18868 = sqrt(r18867);
        double r18869 = r18868 + r18849;
        double r18870 = r18854 * r18869;
        double r18871 = sqrt(r18870);
        double r18872 = r18857 * r18871;
        double r18873 = r18849 + r18849;
        double r18874 = r18854 * r18873;
        double r18875 = sqrt(r18874);
        double r18876 = r18857 * r18875;
        double r18877 = r18864 ? r18872 : r18876;
        double r18878 = r18851 ? r18862 : r18877;
        return r18878;
}

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 r18879, r18880, r18881, r18882, r18883, r18884, r18885, r18886, r18887, r18888, r18889, r18890;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18879, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18880, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18881);
        mpfr_init(r18882);
        mpfr_init(r18883);
        mpfr_init(r18884);
        mpfr_init(r18885);
        mpfr_init(r18886);
        mpfr_init(r18887);
        mpfr_init(r18888);
        mpfr_init(r18889);
        mpfr_init(r18890);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r18881, re, MPFR_RNDN);
        mpfr_mul(r18882, r18881, r18881, MPFR_RNDN);
        mpfr_set_d(r18883, im, MPFR_RNDN);
        mpfr_mul(r18884, r18883, r18883, MPFR_RNDN);
        mpfr_add(r18885, r18882, r18884, MPFR_RNDN);
        mpfr_sqrt(r18886, r18885, MPFR_RNDN);
        mpfr_add(r18887, r18886, r18881, MPFR_RNDN);
        mpfr_mul(r18888, r18880, r18887, MPFR_RNDN);
        mpfr_sqrt(r18889, r18888, MPFR_RNDN);
        mpfr_mul(r18890, r18879, r18889, MPFR_RNDN);
        return mpfr_get_d(r18890, MPFR_RNDN);
}

static mpfr_t r18891, r18892, r18893, r18894, r18895, r18896, r18897, r18898, r18899, r18900, r18901, r18902, r18903, r18904, r18905, r18906, r18907, r18908, r18909, r18910, r18911, r18912, r18913, r18914, r18915, r18916, r18917, r18918, r18919, r18920;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18891);
        mpfr_init_set_str(r18892, "-6.457467f0", 10, MPFR_RNDN);
        mpfr_init(r18893);
        mpfr_init(r18894);
        mpfr_init(r18895);
        mpfr_init_set_str(r18896, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18897);
        mpfr_init(r18898);
        mpfr_init_set_str(r18899, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18900, "-2", 10, MPFR_RNDN);
        mpfr_init(r18901);
        mpfr_init(r18902);
        mpfr_init(r18903);
        mpfr_init(r18904);
        mpfr_init_set_str(r18905, "2.8363323f+14", 10, MPFR_RNDN);
        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);
        mpfr_init(r18915);
        mpfr_init(r18916);
        mpfr_init(r18917);
        mpfr_init(r18918);
        mpfr_init(r18919);
        mpfr_init(r18920);
}

double f_fm(double re, double im) {
        mpfr_set_d(r18891, re, MPFR_RNDN);
        ;
        mpfr_set_si(r18893, mpfr_cmp(r18891, r18892) <= 0, MPFR_RNDN);
        mpfr_set_d(r18894, im, MPFR_RNDN);
        mpfr_sqr(r18895, r18894, MPFR_RNDN);
        ;
        mpfr_mul(r18897, r18895, r18896, MPFR_RNDN);
        mpfr_sqrt(r18898, r18897, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r18901, r18891, r18900, MPFR_RNDN);
        mpfr_sqrt(r18902, r18901, MPFR_RNDN);
        mpfr_div(r18903, r18899, r18902, MPFR_RNDN);
        mpfr_mul(r18904, r18898, r18903, MPFR_RNDN);
        ;
        mpfr_set_si(r18906, mpfr_cmp(r18891, r18905) <= 0, MPFR_RNDN);
        mpfr_mul(r18907, r18891, r18891, MPFR_RNDN);
        mpfr_mul(r18908, r18894, r18894, MPFR_RNDN);
        mpfr_add(r18909, r18907, r18908, MPFR_RNDN);
        mpfr_sqrt(r18910, r18909, MPFR_RNDN);
        mpfr_add(r18911, r18910, r18891, MPFR_RNDN);
        mpfr_mul(r18912, r18896, r18911, MPFR_RNDN);
        mpfr_sqrt(r18913, r18912, MPFR_RNDN);
        mpfr_mul(r18914, r18899, r18913, MPFR_RNDN);
        mpfr_add(r18915, r18891, r18891, MPFR_RNDN);
        mpfr_mul(r18916, r18896, r18915, MPFR_RNDN);
        mpfr_sqrt(r18917, r18916, MPFR_RNDN);
        mpfr_mul(r18918, r18899, r18917, MPFR_RNDN);
        if (mpfr_get_si(r18906, MPFR_RNDN)) { mpfr_set(r18919, r18914, MPFR_RNDN); } else { mpfr_set(r18919, r18918, MPFR_RNDN); };
        if (mpfr_get_si(r18893, MPFR_RNDN)) { mpfr_set(r18920, r18904, MPFR_RNDN); } else { mpfr_set(r18920, r18919, MPFR_RNDN); };
        return mpfr_get_d(r18920, MPFR_RNDN);
}

static mpfr_t 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, r18947, r18948, r18949, r18950;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18921);
        mpfr_init_set_str(r18922, "-6.457467f0", 10, MPFR_RNDN);
        mpfr_init(r18923);
        mpfr_init(r18924);
        mpfr_init(r18925);
        mpfr_init_set_str(r18926, "2.0", 10, MPFR_RNDN);
        mpfr_init(r18927);
        mpfr_init(r18928);
        mpfr_init_set_str(r18929, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r18930, "-2", 10, MPFR_RNDN);
        mpfr_init(r18931);
        mpfr_init(r18932);
        mpfr_init(r18933);
        mpfr_init(r18934);
        mpfr_init_set_str(r18935, "2.8363323f+14", 10, MPFR_RNDN);
        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);
        mpfr_init(r18947);
        mpfr_init(r18948);
        mpfr_init(r18949);
        mpfr_init(r18950);
}

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

