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

char *name = "math.log/2 on complex, real part";

double f_if(float re, float im, float base) {
        float r18993 = re;
        float r18994 = r18993 * r18993;
        float r18995 = im;
        float r18996 = r18995 * r18995;
        float r18997 = r18994 + r18996;
        float r18998 = sqrt(r18997);
        float r18999 = log(r18998);
        float r19000 = base;
        float r19001 = log(r19000);
        float r19002 = r18999 * r19001;
        float r19003 = atan2(r18995, r18993);
        float r19004 = 0.0f;
        float r19005 = r19003 * r19004;
        float r19006 = r19002 + r19005;
        float r19007 = r19001 * r19001;
        float r19008 = r19004 * r19004;
        float r19009 = r19007 + r19008;
        float r19010 = r19006 / r19009;
        return r19010;
}

double f_id(double re, double im, double base) {
        double r19011 = re;
        double r19012 = r19011 * r19011;
        double r19013 = im;
        double r19014 = r19013 * r19013;
        double r19015 = r19012 + r19014;
        double r19016 = sqrt(r19015);
        double r19017 = log(r19016);
        double r19018 = base;
        double r19019 = log(r19018);
        double r19020 = r19017 * r19019;
        double r19021 = atan2(r19013, r19011);
        double r19022 = 0.0;
        double r19023 = r19021 * r19022;
        double r19024 = r19020 + r19023;
        double r19025 = r19019 * r19019;
        double r19026 = r19022 * r19022;
        double r19027 = r19025 + r19026;
        double r19028 = r19024 / r19027;
        return r19028;
}


double f_of(float re, float im, float base) {
        float r19029 = im;
        float r19030 = -4.62649320279714e+120f;
        bool r19031 = r19029 <= r19030;
        float r19032 = -r19029;
        float r19033 = log(r19032);
        float r19034 = base;
        float r19035 = log(r19034);
        float r19036 = r19033 / r19035;
        float r19037 = -7.945478500947738e-259f;
        bool r19038 = r19029 <= r19037;
        float r19039 = 1.0f;
        float r19040 = r19029 * r19029;
        float r19041 = re;
        float r19042 = r19041 * r19041;
        float r19043 = r19040 + r19042;
        float r19044 = sqrt(r19043);
        float r19045 = log(r19044);
        float r19046 = r19035 / r19045;
        float r19047 = r19039 / r19046;
        float r19048 = 2.196524360140306e-303f;
        bool r19049 = r19029 <= r19048;
        float r19050 = log(r19041);
        float r19051 = r19050 / r19035;
        float r19052 = 1.808337382703412e+83f;
        bool r19053 = r19029 <= r19052;
        float r19054 = log(r19029);
        float r19055 = r19054 / r19035;
        float r19056 = r19053 ? r19047 : r19055;
        float r19057 = r19049 ? r19051 : r19056;
        float r19058 = r19038 ? r19047 : r19057;
        float r19059 = r19031 ? r19036 : r19058;
        return r19059;
}

double f_od(double re, double im, double base) {
        double r19060 = im;
        double r19061 = -4.62649320279714e+120;
        bool r19062 = r19060 <= r19061;
        double r19063 = -r19060;
        double r19064 = log(r19063);
        double r19065 = base;
        double r19066 = log(r19065);
        double r19067 = r19064 / r19066;
        double r19068 = -7.945478500947738e-259;
        bool r19069 = r19060 <= r19068;
        double r19070 = 1.0;
        double r19071 = r19060 * r19060;
        double r19072 = re;
        double r19073 = r19072 * r19072;
        double r19074 = r19071 + r19073;
        double r19075 = sqrt(r19074);
        double r19076 = log(r19075);
        double r19077 = r19066 / r19076;
        double r19078 = r19070 / r19077;
        double r19079 = 2.196524360140306e-303;
        bool r19080 = r19060 <= r19079;
        double r19081 = log(r19072);
        double r19082 = r19081 / r19066;
        double r19083 = 1.808337382703412e+83;
        bool r19084 = r19060 <= r19083;
        double r19085 = log(r19060);
        double r19086 = r19085 / r19066;
        double r19087 = r19084 ? r19078 : r19086;
        double r19088 = r19080 ? r19082 : r19087;
        double r19089 = r19069 ? r19078 : r19088;
        double r19090 = r19062 ? r19067 : r19089;
        return r19090;
}

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 r19091, r19092, r19093, r19094, r19095, r19096, r19097, r19098, r19099, r19100, r19101, r19102, r19103, r19104, r19105, r19106, r19107, r19108;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r19091);
        mpfr_init(r19092);
        mpfr_init(r19093);
        mpfr_init(r19094);
        mpfr_init(r19095);
        mpfr_init(r19096);
        mpfr_init(r19097);
        mpfr_init(r19098);
        mpfr_init(r19099);
        mpfr_init(r19100);
        mpfr_init(r19101);
        mpfr_init_set_str(r19102, "0", 10, MPFR_RNDN);
        mpfr_init(r19103);
        mpfr_init(r19104);
        mpfr_init(r19105);
        mpfr_init(r19106);
        mpfr_init(r19107);
        mpfr_init(r19108);
}

double f_im(double re, double im, double base) {
        mpfr_set_d(r19091, re, MPFR_RNDN);
        mpfr_mul(r19092, r19091, r19091, MPFR_RNDN);
        mpfr_set_d(r19093, im, MPFR_RNDN);
        mpfr_mul(r19094, r19093, r19093, MPFR_RNDN);
        mpfr_add(r19095, r19092, r19094, MPFR_RNDN);
        mpfr_sqrt(r19096, r19095, MPFR_RNDN);
        mpfr_log(r19097, r19096, MPFR_RNDN);
        mpfr_set_d(r19098, base, MPFR_RNDN);
        mpfr_log(r19099, r19098, MPFR_RNDN);
        mpfr_mul(r19100, r19097, r19099, MPFR_RNDN);
        mpfr_atan2(r19101, r19093, r19091, MPFR_RNDN);
        ;
        mpfr_mul(r19103, r19101, r19102, MPFR_RNDN);
        mpfr_add(r19104, r19100, r19103, MPFR_RNDN);
        mpfr_mul(r19105, r19099, r19099, MPFR_RNDN);
        mpfr_mul(r19106, r19102, r19102, MPFR_RNDN);
        mpfr_add(r19107, r19105, r19106, MPFR_RNDN);
        mpfr_div(r19108, r19104, r19107, MPFR_RNDN);
        return mpfr_get_d(r19108, MPFR_RNDN);
}

static mpfr_t r19109, r19110, r19111, r19112, r19113, r19114, r19115, r19116, r19117, r19118, r19119, r19120, r19121, r19122, r19123, r19124, r19125, r19126, r19127, r19128, r19129, r19130, r19131, r19132, r19133, r19134, r19135, r19136, r19137, r19138, r19139;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r19109);
        mpfr_init_set_str(r19110, "-4.62649320279714e+120", 10, MPFR_RNDN);
        mpfr_init(r19111);
        mpfr_init(r19112);
        mpfr_init(r19113);
        mpfr_init(r19114);
        mpfr_init(r19115);
        mpfr_init(r19116);
        mpfr_init_set_str(r19117, "-7.945478500947738e-259", 10, MPFR_RNDN);
        mpfr_init(r19118);
        mpfr_init_set_str(r19119, "1", 10, MPFR_RNDN);
        mpfr_init(r19120);
        mpfr_init(r19121);
        mpfr_init(r19122);
        mpfr_init(r19123);
        mpfr_init(r19124);
        mpfr_init(r19125);
        mpfr_init(r19126);
        mpfr_init(r19127);
        mpfr_init_set_str(r19128, "2.196524360140306e-303", 10, MPFR_RNDN);
        mpfr_init(r19129);
        mpfr_init(r19130);
        mpfr_init(r19131);
        mpfr_init_set_str(r19132, "1.808337382703412e+83", 10, MPFR_RNDN);
        mpfr_init(r19133);
        mpfr_init(r19134);
        mpfr_init(r19135);
        mpfr_init(r19136);
        mpfr_init(r19137);
        mpfr_init(r19138);
        mpfr_init(r19139);
}

double f_fm(double re, double im, double base) {
        mpfr_set_d(r19109, im, MPFR_RNDN);
        ;
        mpfr_set_si(r19111, mpfr_cmp(r19109, r19110) <= 0, MPFR_RNDN);
        mpfr_neg(r19112, r19109, MPFR_RNDN);
        mpfr_log(r19113, r19112, MPFR_RNDN);
        mpfr_set_d(r19114, base, MPFR_RNDN);
        mpfr_log(r19115, r19114, MPFR_RNDN);
        mpfr_div(r19116, r19113, r19115, MPFR_RNDN);
        ;
        mpfr_set_si(r19118, mpfr_cmp(r19109, r19117) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r19120, r19109, MPFR_RNDN);
        mpfr_set_d(r19121, re, MPFR_RNDN);
        mpfr_mul(r19122, r19121, r19121, MPFR_RNDN);
        mpfr_add(r19123, r19120, r19122, MPFR_RNDN);
        mpfr_sqrt(r19124, r19123, MPFR_RNDN);
        mpfr_log(r19125, r19124, MPFR_RNDN);
        mpfr_div(r19126, r19115, r19125, MPFR_RNDN);
        mpfr_div(r19127, r19119, r19126, MPFR_RNDN);
        ;
        mpfr_set_si(r19129, mpfr_cmp(r19109, r19128) <= 0, MPFR_RNDN);
        mpfr_log(r19130, r19121, MPFR_RNDN);
        mpfr_div(r19131, r19130, r19115, MPFR_RNDN);
        ;
        mpfr_set_si(r19133, mpfr_cmp(r19109, r19132) <= 0, MPFR_RNDN);
        mpfr_log(r19134, r19109, MPFR_RNDN);
        mpfr_div(r19135, r19134, r19115, MPFR_RNDN);
        if (mpfr_get_si(r19133, MPFR_RNDN)) { mpfr_set(r19136, r19127, MPFR_RNDN); } else { mpfr_set(r19136, r19135, MPFR_RNDN); };
        if (mpfr_get_si(r19129, MPFR_RNDN)) { mpfr_set(r19137, r19131, MPFR_RNDN); } else { mpfr_set(r19137, r19136, MPFR_RNDN); };
        if (mpfr_get_si(r19118, MPFR_RNDN)) { mpfr_set(r19138, r19127, MPFR_RNDN); } else { mpfr_set(r19138, r19137, MPFR_RNDN); };
        if (mpfr_get_si(r19111, MPFR_RNDN)) { mpfr_set(r19139, r19116, MPFR_RNDN); } else { mpfr_set(r19139, r19138, MPFR_RNDN); };
        return mpfr_get_d(r19139, MPFR_RNDN);
}

static mpfr_t r19140, r19141, r19142, r19143, r19144, r19145, r19146, r19147, r19148, r19149, r19150, r19151, r19152, r19153, r19154, r19155, r19156, r19157, r19158, r19159, r19160, r19161, r19162, r19163, r19164, r19165, r19166, r19167, r19168, r19169, r19170;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r19140);
        mpfr_init_set_str(r19141, "-4.62649320279714e+120", 10, MPFR_RNDN);
        mpfr_init(r19142);
        mpfr_init(r19143);
        mpfr_init(r19144);
        mpfr_init(r19145);
        mpfr_init(r19146);
        mpfr_init(r19147);
        mpfr_init_set_str(r19148, "-7.945478500947738e-259", 10, MPFR_RNDN);
        mpfr_init(r19149);
        mpfr_init_set_str(r19150, "1", 10, MPFR_RNDN);
        mpfr_init(r19151);
        mpfr_init(r19152);
        mpfr_init(r19153);
        mpfr_init(r19154);
        mpfr_init(r19155);
        mpfr_init(r19156);
        mpfr_init(r19157);
        mpfr_init(r19158);
        mpfr_init_set_str(r19159, "2.196524360140306e-303", 10, MPFR_RNDN);
        mpfr_init(r19160);
        mpfr_init(r19161);
        mpfr_init(r19162);
        mpfr_init_set_str(r19163, "1.808337382703412e+83", 10, MPFR_RNDN);
        mpfr_init(r19164);
        mpfr_init(r19165);
        mpfr_init(r19166);
        mpfr_init(r19167);
        mpfr_init(r19168);
        mpfr_init(r19169);
        mpfr_init(r19170);
}

double f_dm(double re, double im, double base) {
        mpfr_set_d(r19140, im, MPFR_RNDN);
        ;
        mpfr_set_si(r19142, mpfr_cmp(r19140, r19141) <= 0, MPFR_RNDN);
        mpfr_neg(r19143, r19140, MPFR_RNDN);
        mpfr_log(r19144, r19143, MPFR_RNDN);
        mpfr_set_d(r19145, base, MPFR_RNDN);
        mpfr_log(r19146, r19145, MPFR_RNDN);
        mpfr_div(r19147, r19144, r19146, MPFR_RNDN);
        ;
        mpfr_set_si(r19149, mpfr_cmp(r19140, r19148) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r19151, r19140, MPFR_RNDN);
        mpfr_set_d(r19152, re, MPFR_RNDN);
        mpfr_mul(r19153, r19152, r19152, MPFR_RNDN);
        mpfr_add(r19154, r19151, r19153, MPFR_RNDN);
        mpfr_sqrt(r19155, r19154, MPFR_RNDN);
        mpfr_log(r19156, r19155, MPFR_RNDN);
        mpfr_div(r19157, r19146, r19156, MPFR_RNDN);
        mpfr_div(r19158, r19150, r19157, MPFR_RNDN);
        ;
        mpfr_set_si(r19160, mpfr_cmp(r19140, r19159) <= 0, MPFR_RNDN);
        mpfr_log(r19161, r19152, MPFR_RNDN);
        mpfr_div(r19162, r19161, r19146, MPFR_RNDN);
        ;
        mpfr_set_si(r19164, mpfr_cmp(r19140, r19163) <= 0, MPFR_RNDN);
        mpfr_log(r19165, r19140, MPFR_RNDN);
        mpfr_div(r19166, r19165, r19146, MPFR_RNDN);
        if (mpfr_get_si(r19164, MPFR_RNDN)) { mpfr_set(r19167, r19158, MPFR_RNDN); } else { mpfr_set(r19167, r19166, MPFR_RNDN); };
        if (mpfr_get_si(r19160, MPFR_RNDN)) { mpfr_set(r19168, r19162, MPFR_RNDN); } else { mpfr_set(r19168, r19167, MPFR_RNDN); };
        if (mpfr_get_si(r19149, MPFR_RNDN)) { mpfr_set(r19169, r19158, MPFR_RNDN); } else { mpfr_set(r19169, r19168, MPFR_RNDN); };
        if (mpfr_get_si(r19142, MPFR_RNDN)) { mpfr_set(r19170, r19147, MPFR_RNDN); } else { mpfr_set(r19170, r19169, MPFR_RNDN); };
        return mpfr_get_d(r19170, MPFR_RNDN);
}

