#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "powComplex, imaginary part";

double f_if(float x_re, float x_im, float y_re, float y_im) {
        float r14828 = x_re;
        float r14829 = r14828 * r14828;
        float r14830 = x_im;
        float r14831 = r14830 * r14830;
        float r14832 = r14829 + r14831;
        float r14833 = sqrt(r14832);
        float r14834 = log(r14833);
        float r14835 = y_re;
        float r14836 = r14834 * r14835;
        float r14837 = atan2(r14830, r14828);
        float r14838 = y_im;
        float r14839 = r14837 * r14838;
        float r14840 = r14836 - r14839;
        float r14841 = exp(r14840);
        float r14842 = r14834 * r14838;
        float r14843 = r14837 * r14835;
        float r14844 = r14842 + r14843;
        float r14845 = sin(r14844);
        float r14846 = r14841 * r14845;
        return r14846;
}

double f_id(double x_re, double x_im, double y_re, double y_im) {
        double r14847 = x_re;
        double r14848 = r14847 * r14847;
        double r14849 = x_im;
        double r14850 = r14849 * r14849;
        double r14851 = r14848 + r14850;
        double r14852 = sqrt(r14851);
        double r14853 = log(r14852);
        double r14854 = y_re;
        double r14855 = r14853 * r14854;
        double r14856 = atan2(r14849, r14847);
        double r14857 = y_im;
        double r14858 = r14856 * r14857;
        double r14859 = r14855 - r14858;
        double r14860 = exp(r14859);
        double r14861 = r14853 * r14857;
        double r14862 = r14856 * r14854;
        double r14863 = r14861 + r14862;
        double r14864 = sin(r14863);
        double r14865 = r14860 * r14864;
        return r14865;
}


double f_of(float x_re, float x_im, float y_re, float y_im) {
        float r14866 = y_re;
        float r14867 = -0.3591986298561096f;
        bool r14868 = r14866 <= r14867;
        float r14869 = x_im;
        float r14870 = x_re;
        float r14871 = hypot(r14869, r14870);
        float r14872 = log(r14871);
        float r14873 = r14872 * r14866;
        float r14874 = expm1(r14873);
        float r14875 = log1p(r14874);
        float r14876 = y_im;
        float r14877 = atan2(r14869, r14870);
        float r14878 = r14876 * r14877;
        float r14879 = r14875 - r14878;
        float r14880 = exp(r14879);
        float r14881 = r14866 * r14877;
        float r14882 = fma(r14876, r14872, r14881);
        float r14883 = sin(r14882);
        float r14884 = exp(r14883);
        float r14885 = log(r14884);
        float r14886 = r14880 * r14885;
        float r14887 = 2.5805277824401855f;
        bool r14888 = r14866 <= r14887;
        float r14889 = pow(r14871, r14866);
        float r14890 = exp(r14876);
        float r14891 = pow(r14890, r14877);
        float r14892 = r14889 / r14891;
        float r14893 = sqrt(r14892);
        float r14894 = r14893 * r14893;
        float r14895 = r14894 * r14883;
        float r14896 = 3.221334213699987e+19f;
        bool r14897 = r14866 <= r14896;
        float r14898 = sqrt(r14878);
        float r14899 = r14898 * r14898;
        float r14900 = r14873 - r14899;
        float r14901 = exp(r14900);
        float r14902 = r14901 * r14883;
        float r14903 = r14897 ? r14902 : r14886;
        float r14904 = r14888 ? r14895 : r14903;
        float r14905 = r14868 ? r14886 : r14904;
        return r14905;
}

double f_od(double x_re, double x_im, double y_re, double y_im) {
        double r14906 = y_re;
        double r14907 = -0.3591986298561096;
        bool r14908 = r14906 <= r14907;
        double r14909 = x_im;
        double r14910 = x_re;
        double r14911 = hypot(r14909, r14910);
        double r14912 = log(r14911);
        double r14913 = r14912 * r14906;
        double r14914 = expm1(r14913);
        double r14915 = log1p(r14914);
        double r14916 = y_im;
        double r14917 = atan2(r14909, r14910);
        double r14918 = r14916 * r14917;
        double r14919 = r14915 - r14918;
        double r14920 = exp(r14919);
        double r14921 = r14906 * r14917;
        double r14922 = fma(r14916, r14912, r14921);
        double r14923 = sin(r14922);
        double r14924 = exp(r14923);
        double r14925 = log(r14924);
        double r14926 = r14920 * r14925;
        double r14927 = 2.5805277824401855;
        bool r14928 = r14906 <= r14927;
        double r14929 = pow(r14911, r14906);
        double r14930 = exp(r14916);
        double r14931 = pow(r14930, r14917);
        double r14932 = r14929 / r14931;
        double r14933 = sqrt(r14932);
        double r14934 = r14933 * r14933;
        double r14935 = r14934 * r14923;
        double r14936 = 3.221334213699987e+19;
        bool r14937 = r14906 <= r14936;
        double r14938 = sqrt(r14918);
        double r14939 = r14938 * r14938;
        double r14940 = r14913 - r14939;
        double r14941 = exp(r14940);
        double r14942 = r14941 * r14923;
        double r14943 = r14937 ? r14942 : r14926;
        double r14944 = r14928 ? r14935 : r14943;
        double r14945 = r14908 ? r14926 : r14944;
        return r14945;
}

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 r14946, r14947, r14948, r14949, r14950, r14951, r14952, r14953, r14954, r14955, r14956, r14957, r14958, r14959, r14960, r14961, r14962, r14963, r14964;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r14946);
        mpfr_init(r14947);
        mpfr_init(r14948);
        mpfr_init(r14949);
        mpfr_init(r14950);
        mpfr_init(r14951);
        mpfr_init(r14952);
        mpfr_init(r14953);
        mpfr_init(r14954);
        mpfr_init(r14955);
        mpfr_init(r14956);
        mpfr_init(r14957);
        mpfr_init(r14958);
        mpfr_init(r14959);
        mpfr_init(r14960);
        mpfr_init(r14961);
        mpfr_init(r14962);
        mpfr_init(r14963);
        mpfr_init(r14964);
}

double f_im(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r14946, x_re, MPFR_RNDN);
        mpfr_mul(r14947, r14946, r14946, MPFR_RNDN);
        mpfr_set_d(r14948, x_im, MPFR_RNDN);
        mpfr_mul(r14949, r14948, r14948, MPFR_RNDN);
        mpfr_add(r14950, r14947, r14949, MPFR_RNDN);
        mpfr_sqrt(r14951, r14950, MPFR_RNDN);
        mpfr_log(r14952, r14951, MPFR_RNDN);
        mpfr_set_d(r14953, y_re, MPFR_RNDN);
        mpfr_mul(r14954, r14952, r14953, MPFR_RNDN);
        mpfr_atan2(r14955, r14948, r14946, MPFR_RNDN);
        mpfr_set_d(r14956, y_im, MPFR_RNDN);
        mpfr_mul(r14957, r14955, r14956, MPFR_RNDN);
        mpfr_sub(r14958, r14954, r14957, MPFR_RNDN);
        mpfr_exp(r14959, r14958, MPFR_RNDN);
        mpfr_mul(r14960, r14952, r14956, MPFR_RNDN);
        mpfr_mul(r14961, r14955, r14953, MPFR_RNDN);
        mpfr_add(r14962, r14960, r14961, MPFR_RNDN);
        mpfr_sin(r14963, r14962, MPFR_RNDN);
        mpfr_mul(r14964, r14959, r14963, MPFR_RNDN);
        return mpfr_get_d(r14964, MPFR_RNDN);
}

static mpfr_t r14965, r14966, r14967, r14968, r14969, r14970, r14971, r14972, r14973, r14974, r14975, r14976, r14977, r14978, r14979, r14980, r14981, r14982, r14983, r14984, r14985, r14986, r14987, r14988, r14989, r14990, r14991, r14992, r14993, r14994, r14995, r14996, r14997, r14998, r14999, r15000, r15001, r15002, r15003, r15004;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14965);
        mpfr_init_set_str(r14966, "-0.35919863f0", 10, MPFR_RNDN);
        mpfr_init(r14967);
        mpfr_init(r14968);
        mpfr_init(r14969);
        mpfr_init(r14970);
        mpfr_init(r14971);
        mpfr_init(r14972);
        mpfr_init(r14973);
        mpfr_init(r14974);
        mpfr_init(r14975);
        mpfr_init(r14976);
        mpfr_init(r14977);
        mpfr_init(r14978);
        mpfr_init(r14979);
        mpfr_init(r14980);
        mpfr_init(r14981);
        mpfr_init(r14982);
        mpfr_init(r14983);
        mpfr_init(r14984);
        mpfr_init(r14985);
        mpfr_init_set_str(r14986, "2.5805278f0", 10, MPFR_RNDN);
        mpfr_init(r14987);
        mpfr_init(r14988);
        mpfr_init(r14989);
        mpfr_init(r14990);
        mpfr_init(r14991);
        mpfr_init(r14992);
        mpfr_init(r14993);
        mpfr_init(r14994);
        mpfr_init_set_str(r14995, "3.2213342f+19", 10, MPFR_RNDN);
        mpfr_init(r14996);
        mpfr_init(r14997);
        mpfr_init(r14998);
        mpfr_init(r14999);
        mpfr_init(r15000);
        mpfr_init(r15001);
        mpfr_init(r15002);
        mpfr_init(r15003);
        mpfr_init(r15004);
}

double f_fm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r14965, y_re, MPFR_RNDN);
        ;
        mpfr_set_si(r14967, mpfr_cmp(r14965, r14966) <= 0, MPFR_RNDN);
        mpfr_set_d(r14968, x_im, MPFR_RNDN);
        mpfr_set_d(r14969, x_re, MPFR_RNDN);
        mpfr_hypot(r14970, r14968, r14969, MPFR_RNDN);
        mpfr_log(r14971, r14970, MPFR_RNDN);
        mpfr_mul(r14972, r14971, r14965, MPFR_RNDN);
        mpfr_expm1(r14973, r14972, MPFR_RNDN);
        mpfr_log1p(r14974, r14973, MPFR_RNDN);
        mpfr_set_d(r14975, y_im, MPFR_RNDN);
        mpfr_atan2(r14976, r14968, r14969, MPFR_RNDN);
        mpfr_mul(r14977, r14975, r14976, MPFR_RNDN);
        mpfr_sub(r14978, r14974, r14977, MPFR_RNDN);
        mpfr_exp(r14979, r14978, MPFR_RNDN);
        mpfr_mul(r14980, r14965, r14976, MPFR_RNDN);
        mpfr_fma(r14981, r14975, r14971, r14980, MPFR_RNDN);
        mpfr_sin(r14982, r14981, MPFR_RNDN);
        mpfr_exp(r14983, r14982, MPFR_RNDN);
        mpfr_log(r14984, r14983, MPFR_RNDN);
        mpfr_mul(r14985, r14979, r14984, MPFR_RNDN);
        ;
        mpfr_set_si(r14987, mpfr_cmp(r14965, r14986) <= 0, MPFR_RNDN);
        mpfr_pow(r14988, r14970, r14965, MPFR_RNDN);
        mpfr_exp(r14989, r14975, MPFR_RNDN);
        mpfr_pow(r14990, r14989, r14976, MPFR_RNDN);
        mpfr_div(r14991, r14988, r14990, MPFR_RNDN);
        mpfr_sqrt(r14992, r14991, MPFR_RNDN);
        mpfr_sqr(r14993, r14992, MPFR_RNDN);
        mpfr_mul(r14994, r14993, r14982, MPFR_RNDN);
        ;
        mpfr_set_si(r14996, mpfr_cmp(r14965, r14995) <= 0, MPFR_RNDN);
        mpfr_sqrt(r14997, r14977, MPFR_RNDN);
        mpfr_sqr(r14998, r14997, MPFR_RNDN);
        mpfr_sub(r14999, r14972, r14998, MPFR_RNDN);
        mpfr_exp(r15000, r14999, MPFR_RNDN);
        mpfr_mul(r15001, r15000, r14982, MPFR_RNDN);
        if (mpfr_get_si(r14996, MPFR_RNDN)) { mpfr_set(r15002, r15001, MPFR_RNDN); } else { mpfr_set(r15002, r14985, MPFR_RNDN); };
        if (mpfr_get_si(r14987, MPFR_RNDN)) { mpfr_set(r15003, r14994, MPFR_RNDN); } else { mpfr_set(r15003, r15002, MPFR_RNDN); };
        if (mpfr_get_si(r14967, MPFR_RNDN)) { mpfr_set(r15004, r14985, MPFR_RNDN); } else { mpfr_set(r15004, r15003, MPFR_RNDN); };
        return mpfr_get_d(r15004, MPFR_RNDN);
}

static mpfr_t r15005, r15006, r15007, r15008, r15009, r15010, r15011, r15012, r15013, r15014, r15015, r15016, r15017, r15018, r15019, r15020, r15021, r15022, r15023, r15024, r15025, r15026, r15027, r15028, r15029, r15030, r15031, r15032, r15033, r15034, r15035, r15036, r15037, r15038, r15039, r15040, r15041, r15042, r15043, r15044;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r15005);
        mpfr_init_set_str(r15006, "-0.35919863f0", 10, MPFR_RNDN);
        mpfr_init(r15007);
        mpfr_init(r15008);
        mpfr_init(r15009);
        mpfr_init(r15010);
        mpfr_init(r15011);
        mpfr_init(r15012);
        mpfr_init(r15013);
        mpfr_init(r15014);
        mpfr_init(r15015);
        mpfr_init(r15016);
        mpfr_init(r15017);
        mpfr_init(r15018);
        mpfr_init(r15019);
        mpfr_init(r15020);
        mpfr_init(r15021);
        mpfr_init(r15022);
        mpfr_init(r15023);
        mpfr_init(r15024);
        mpfr_init(r15025);
        mpfr_init_set_str(r15026, "2.5805278f0", 10, MPFR_RNDN);
        mpfr_init(r15027);
        mpfr_init(r15028);
        mpfr_init(r15029);
        mpfr_init(r15030);
        mpfr_init(r15031);
        mpfr_init(r15032);
        mpfr_init(r15033);
        mpfr_init(r15034);
        mpfr_init_set_str(r15035, "3.2213342f+19", 10, MPFR_RNDN);
        mpfr_init(r15036);
        mpfr_init(r15037);
        mpfr_init(r15038);
        mpfr_init(r15039);
        mpfr_init(r15040);
        mpfr_init(r15041);
        mpfr_init(r15042);
        mpfr_init(r15043);
        mpfr_init(r15044);
}

double f_dm(double x_re, double x_im, double y_re, double y_im) {
        mpfr_set_d(r15005, y_re, MPFR_RNDN);
        ;
        mpfr_set_si(r15007, mpfr_cmp(r15005, r15006) <= 0, MPFR_RNDN);
        mpfr_set_d(r15008, x_im, MPFR_RNDN);
        mpfr_set_d(r15009, x_re, MPFR_RNDN);
        mpfr_hypot(r15010, r15008, r15009, MPFR_RNDN);
        mpfr_log(r15011, r15010, MPFR_RNDN);
        mpfr_mul(r15012, r15011, r15005, MPFR_RNDN);
        mpfr_expm1(r15013, r15012, MPFR_RNDN);
        mpfr_log1p(r15014, r15013, MPFR_RNDN);
        mpfr_set_d(r15015, y_im, MPFR_RNDN);
        mpfr_atan2(r15016, r15008, r15009, MPFR_RNDN);
        mpfr_mul(r15017, r15015, r15016, MPFR_RNDN);
        mpfr_sub(r15018, r15014, r15017, MPFR_RNDN);
        mpfr_exp(r15019, r15018, MPFR_RNDN);
        mpfr_mul(r15020, r15005, r15016, MPFR_RNDN);
        mpfr_fma(r15021, r15015, r15011, r15020, MPFR_RNDN);
        mpfr_sin(r15022, r15021, MPFR_RNDN);
        mpfr_exp(r15023, r15022, MPFR_RNDN);
        mpfr_log(r15024, r15023, MPFR_RNDN);
        mpfr_mul(r15025, r15019, r15024, MPFR_RNDN);
        ;
        mpfr_set_si(r15027, mpfr_cmp(r15005, r15026) <= 0, MPFR_RNDN);
        mpfr_pow(r15028, r15010, r15005, MPFR_RNDN);
        mpfr_exp(r15029, r15015, MPFR_RNDN);
        mpfr_pow(r15030, r15029, r15016, MPFR_RNDN);
        mpfr_div(r15031, r15028, r15030, MPFR_RNDN);
        mpfr_sqrt(r15032, r15031, MPFR_RNDN);
        mpfr_sqr(r15033, r15032, MPFR_RNDN);
        mpfr_mul(r15034, r15033, r15022, MPFR_RNDN);
        ;
        mpfr_set_si(r15036, mpfr_cmp(r15005, r15035) <= 0, MPFR_RNDN);
        mpfr_sqrt(r15037, r15017, MPFR_RNDN);
        mpfr_sqr(r15038, r15037, MPFR_RNDN);
        mpfr_sub(r15039, r15012, r15038, MPFR_RNDN);
        mpfr_exp(r15040, r15039, MPFR_RNDN);
        mpfr_mul(r15041, r15040, r15022, MPFR_RNDN);
        if (mpfr_get_si(r15036, MPFR_RNDN)) { mpfr_set(r15042, r15041, MPFR_RNDN); } else { mpfr_set(r15042, r15025, MPFR_RNDN); };
        if (mpfr_get_si(r15027, MPFR_RNDN)) { mpfr_set(r15043, r15034, MPFR_RNDN); } else { mpfr_set(r15043, r15042, MPFR_RNDN); };
        if (mpfr_get_si(r15007, MPFR_RNDN)) { mpfr_set(r15044, r15025, MPFR_RNDN); } else { mpfr_set(r15044, r15043, MPFR_RNDN); };
        return mpfr_get_d(r15044, MPFR_RNDN);
}

