#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 r19795 = 0.5f;
        float r19796 = 2.0f;
        float r19797 = re;
        float r19798 = r19797 * r19797;
        float r19799 = im;
        float r19800 = r19799 * r19799;
        float r19801 = r19798 + r19800;
        float r19802 = sqrt(r19801);
        float r19803 = r19802 + r19797;
        float r19804 = r19796 * r19803;
        float r19805 = sqrt(r19804);
        float r19806 = r19795 * r19805;
        return r19806;
}

double f_id(double re, double im) {
        double r19807 = 0.5;
        double r19808 = 2.0;
        double r19809 = re;
        double r19810 = r19809 * r19809;
        double r19811 = im;
        double r19812 = r19811 * r19811;
        double r19813 = r19810 + r19812;
        double r19814 = sqrt(r19813);
        double r19815 = r19814 + r19809;
        double r19816 = r19808 * r19815;
        double r19817 = sqrt(r19816);
        double r19818 = r19807 * r19817;
        return r19818;
}


double f_of(float re, float im) {
        float r19819 = re;
        float r19820 = -235.08938598632812f;
        bool r19821 = r19819 <= r19820;
        float r19822 = 0.5f;
        float r19823 = im;
        float r19824 = r19823 * r19823;
        float r19825 = 2.0f;
        float r19826 = r19824 * r19825;
        float r19827 = sqrt(r19826);
        float r19828 = r19822 * r19827;
        float r19829 = -r19819;
        float r19830 = r19829 - r19819;
        float r19831 = sqrt(r19830);
        float r19832 = r19828 / r19831;
        float r19833 = 1212733.375f;
        bool r19834 = r19819 <= r19833;
        float r19835 = r19819 * r19819;
        float r19836 = r19835 + r19824;
        float r19837 = sqrt(r19836);
        float r19838 = sqrt(r19837);
        float r19839 = r19838 * r19838;
        float r19840 = r19839 + r19819;
        float r19841 = r19825 * r19840;
        float r19842 = sqrt(r19841);
        float r19843 = r19842 * (r19842 * r19842);
        float r19844 = cbrt(r19843);
        float r19845 = r19822 * r19844;
        float r19846 = r19819 + r19819;
        float r19847 = r19825 * r19846;
        float r19848 = sqrt(r19847);
        float r19849 = r19822 * r19848;
        float r19850 = r19834 ? r19845 : r19849;
        float r19851 = r19821 ? r19832 : r19850;
        return r19851;
}

double f_od(double re, double im) {
        double r19852 = re;
        double r19853 = -235.08938598632812;
        bool r19854 = r19852 <= r19853;
        double r19855 = 0.5;
        double r19856 = im;
        double r19857 = r19856 * r19856;
        double r19858 = 2.0;
        double r19859 = r19857 * r19858;
        double r19860 = sqrt(r19859);
        double r19861 = r19855 * r19860;
        double r19862 = -r19852;
        double r19863 = r19862 - r19852;
        double r19864 = sqrt(r19863);
        double r19865 = r19861 / r19864;
        double r19866 = 1212733.375;
        bool r19867 = r19852 <= r19866;
        double r19868 = r19852 * r19852;
        double r19869 = r19868 + r19857;
        double r19870 = sqrt(r19869);
        double r19871 = sqrt(r19870);
        double r19872 = r19871 * r19871;
        double r19873 = r19872 + r19852;
        double r19874 = r19858 * r19873;
        double r19875 = sqrt(r19874);
        double r19876 = r19875 * (r19875 * r19875);
        double r19877 = cbrt(r19876);
        double r19878 = r19855 * r19877;
        double r19879 = r19852 + r19852;
        double r19880 = r19858 * r19879;
        double r19881 = sqrt(r19880);
        double r19882 = r19855 * r19881;
        double r19883 = r19867 ? r19878 : r19882;
        double r19884 = r19854 ? r19865 : r19883;
        return r19884;
}

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 r19885, r19886, r19887, r19888, r19889, r19890, r19891, r19892, r19893, r19894, r19895, r19896;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r19885, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r19886, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19887);
        mpfr_init(r19888);
        mpfr_init(r19889);
        mpfr_init(r19890);
        mpfr_init(r19891);
        mpfr_init(r19892);
        mpfr_init(r19893);
        mpfr_init(r19894);
        mpfr_init(r19895);
        mpfr_init(r19896);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r19887, re, MPFR_RNDN);
        mpfr_mul(r19888, r19887, r19887, MPFR_RNDN);
        mpfr_set_d(r19889, im, MPFR_RNDN);
        mpfr_mul(r19890, r19889, r19889, MPFR_RNDN);
        mpfr_add(r19891, r19888, r19890, MPFR_RNDN);
        mpfr_sqrt(r19892, r19891, MPFR_RNDN);
        mpfr_add(r19893, r19892, r19887, MPFR_RNDN);
        mpfr_mul(r19894, r19886, r19893, MPFR_RNDN);
        mpfr_sqrt(r19895, r19894, MPFR_RNDN);
        mpfr_mul(r19896, r19885, r19895, MPFR_RNDN);
        return mpfr_get_d(r19896, MPFR_RNDN);
}

static mpfr_t 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, r19923, r19924, r19925, r19926, r19927, r19928, r19929;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19897);
        mpfr_init_set_str(r19898, "-235.08939f0", 10, MPFR_RNDN);
        mpfr_init(r19899);
        mpfr_init_set_str(r19900, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19901);
        mpfr_init(r19902);
        mpfr_init_set_str(r19903, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19904);
        mpfr_init(r19905);
        mpfr_init(r19906);
        mpfr_init(r19907);
        mpfr_init(r19908);
        mpfr_init(r19909);
        mpfr_init(r19910);
        mpfr_init_set_str(r19911, "1212733.4f0", 10, MPFR_RNDN);
        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);
        mpfr_init(r19923);
        mpfr_init(r19924);
        mpfr_init(r19925);
        mpfr_init(r19926);
        mpfr_init(r19927);
        mpfr_init(r19928);
        mpfr_init(r19929);
}

double f_fm(double re, double im) {
        mpfr_set_d(r19897, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19899, mpfr_cmp(r19897, r19898) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19901, im, MPFR_RNDN);
        mpfr_mul(r19902, r19901, r19901, MPFR_RNDN);
        ;
        mpfr_mul(r19904, r19902, r19903, MPFR_RNDN);
        mpfr_sqrt(r19905, r19904, MPFR_RNDN);
        mpfr_mul(r19906, r19900, r19905, MPFR_RNDN);
        mpfr_neg(r19907, r19897, MPFR_RNDN);
        mpfr_sub(r19908, r19907, r19897, MPFR_RNDN);
        mpfr_sqrt(r19909, r19908, MPFR_RNDN);
        mpfr_div(r19910, r19906, r19909, MPFR_RNDN);
        ;
        mpfr_set_si(r19912, mpfr_cmp(r19897, r19911) <= 0, MPFR_RNDN);
        mpfr_sqr(r19913, r19897, MPFR_RNDN);
        mpfr_add(r19914, r19913, r19902, MPFR_RNDN);
        mpfr_sqrt(r19915, r19914, MPFR_RNDN);
        mpfr_sqrt(r19916, r19915, MPFR_RNDN);
        mpfr_sqr(r19917, r19916, MPFR_RNDN);
        mpfr_add(r19918, r19917, r19897, MPFR_RNDN);
        mpfr_mul(r19919, r19903, r19918, MPFR_RNDN);
        mpfr_sqrt(r19920, r19919, MPFR_RNDN);
        mpfr_mul(r19921, r19920, r19920, MPFR_RNDN); mpfr_mul(r19921, r19921, r19920, MPFR_RNDN);
        mpfr_cbrt(r19922, r19921, MPFR_RNDN);
        mpfr_mul(r19923, r19900, r19922, MPFR_RNDN);
        mpfr_add(r19924, r19897, r19897, MPFR_RNDN);
        mpfr_mul(r19925, r19903, r19924, MPFR_RNDN);
        mpfr_sqrt(r19926, r19925, MPFR_RNDN);
        mpfr_mul(r19927, r19900, r19926, MPFR_RNDN);
        if (mpfr_get_si(r19912, MPFR_RNDN)) { mpfr_set(r19928, r19923, MPFR_RNDN); } else { mpfr_set(r19928, r19927, MPFR_RNDN); };
        if (mpfr_get_si(r19899, MPFR_RNDN)) { mpfr_set(r19929, r19910, MPFR_RNDN); } else { mpfr_set(r19929, r19928, MPFR_RNDN); };
        return mpfr_get_d(r19929, MPFR_RNDN);
}

static mpfr_t r19930, r19931, r19932, r19933, r19934, r19935, r19936, r19937, r19938, r19939, r19940, r19941, r19942, r19943, r19944, r19945, r19946, r19947, r19948, r19949, r19950, r19951, r19952, r19953, r19954, r19955, r19956, r19957, r19958, r19959, r19960, r19961, r19962;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r19930);
        mpfr_init_set_str(r19931, "-235.08939f0", 10, MPFR_RNDN);
        mpfr_init(r19932);
        mpfr_init_set_str(r19933, "0.5", 10, MPFR_RNDN);
        mpfr_init(r19934);
        mpfr_init(r19935);
        mpfr_init_set_str(r19936, "2.0", 10, MPFR_RNDN);
        mpfr_init(r19937);
        mpfr_init(r19938);
        mpfr_init(r19939);
        mpfr_init(r19940);
        mpfr_init(r19941);
        mpfr_init(r19942);
        mpfr_init(r19943);
        mpfr_init_set_str(r19944, "1212733.4f0", 10, MPFR_RNDN);
        mpfr_init(r19945);
        mpfr_init(r19946);
        mpfr_init(r19947);
        mpfr_init(r19948);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init(r19953);
        mpfr_init(r19954);
        mpfr_init(r19955);
        mpfr_init(r19956);
        mpfr_init(r19957);
        mpfr_init(r19958);
        mpfr_init(r19959);
        mpfr_init(r19960);
        mpfr_init(r19961);
        mpfr_init(r19962);
}

double f_dm(double re, double im) {
        mpfr_set_d(r19930, re, MPFR_RNDN);
        ;
        mpfr_set_si(r19932, mpfr_cmp(r19930, r19931) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r19934, im, MPFR_RNDN);
        mpfr_mul(r19935, r19934, r19934, MPFR_RNDN);
        ;
        mpfr_mul(r19937, r19935, r19936, MPFR_RNDN);
        mpfr_sqrt(r19938, r19937, MPFR_RNDN);
        mpfr_mul(r19939, r19933, r19938, MPFR_RNDN);
        mpfr_neg(r19940, r19930, MPFR_RNDN);
        mpfr_sub(r19941, r19940, r19930, MPFR_RNDN);
        mpfr_sqrt(r19942, r19941, MPFR_RNDN);
        mpfr_div(r19943, r19939, r19942, MPFR_RNDN);
        ;
        mpfr_set_si(r19945, mpfr_cmp(r19930, r19944) <= 0, MPFR_RNDN);
        mpfr_sqr(r19946, r19930, MPFR_RNDN);
        mpfr_add(r19947, r19946, r19935, MPFR_RNDN);
        mpfr_sqrt(r19948, r19947, MPFR_RNDN);
        mpfr_sqrt(r19949, r19948, MPFR_RNDN);
        mpfr_sqr(r19950, r19949, MPFR_RNDN);
        mpfr_add(r19951, r19950, r19930, MPFR_RNDN);
        mpfr_mul(r19952, r19936, r19951, MPFR_RNDN);
        mpfr_sqrt(r19953, r19952, MPFR_RNDN);
        mpfr_mul(r19954, r19953, r19953, MPFR_RNDN); mpfr_mul(r19954, r19954, r19953, MPFR_RNDN);
        mpfr_cbrt(r19955, r19954, MPFR_RNDN);
        mpfr_mul(r19956, r19933, r19955, MPFR_RNDN);
        mpfr_add(r19957, r19930, r19930, MPFR_RNDN);
        mpfr_mul(r19958, r19936, r19957, MPFR_RNDN);
        mpfr_sqrt(r19959, r19958, MPFR_RNDN);
        mpfr_mul(r19960, r19933, r19959, MPFR_RNDN);
        if (mpfr_get_si(r19945, MPFR_RNDN)) { mpfr_set(r19961, r19956, MPFR_RNDN); } else { mpfr_set(r19961, r19960, MPFR_RNDN); };
        if (mpfr_get_si(r19932, MPFR_RNDN)) { mpfr_set(r19962, r19943, MPFR_RNDN); } else { mpfr_set(r19962, r19961, MPFR_RNDN); };
        return mpfr_get_d(r19962, MPFR_RNDN);
}

