#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 r8997 = re;
        float r8998 = r8997 * r8997;
        float r8999 = im;
        float r9000 = r8999 * r8999;
        float r9001 = r8998 + r9000;
        float r9002 = sqrt(r9001);
        float r9003 = log(r9002);
        float r9004 = base;
        float r9005 = log(r9004);
        float r9006 = r9003 * r9005;
        float r9007 = atan2(r8999, r8997);
        float r9008 = 0;
        float r9009 = r9007 * r9008;
        float r9010 = r9006 + r9009;
        float r9011 = r9005 * r9005;
        float r9012 = r9008 * r9008;
        float r9013 = r9011 + r9012;
        float r9014 = r9010 / r9013;
        return r9014;
}

double f_id(double re, double im, double base) {
        double r9015 = re;
        double r9016 = r9015 * r9015;
        double r9017 = im;
        double r9018 = r9017 * r9017;
        double r9019 = r9016 + r9018;
        double r9020 = sqrt(r9019);
        double r9021 = log(r9020);
        double r9022 = base;
        double r9023 = log(r9022);
        double r9024 = r9021 * r9023;
        double r9025 = atan2(r9017, r9015);
        double r9026 = 0;
        double r9027 = r9025 * r9026;
        double r9028 = r9024 + r9027;
        double r9029 = r9023 * r9023;
        double r9030 = r9026 * r9026;
        double r9031 = r9029 + r9030;
        double r9032 = r9028 / r9031;
        return r9032;
}


double f_of(float re, float im, float base) {
        float r9033 = re;
        float r9034 = -r9033;
        float r9035 = -4.402648364861606e+144;
        bool r9036 = r9034 <= r9035;
        float r9037 = log(r9033);
        float r9038 = base;
        float r9039 = log(r9038);
        float r9040 = r9037 / r9039;
        float r9041 = -4.025957105797844e-252;
        bool r9042 = r9034 <= r9041;
        float r9043 = 1;
        float r9044 = r9039 * r9039;
        float r9045 = sqrt(r9044);
        float r9046 = r9043 / r9045;
        float r9047 = im;
        float r9048 = r9047 * r9047;
        float r9049 = r9033 * r9033;
        float r9050 = r9048 + r9049;
        float r9051 = sqrt(r9050);
        float r9052 = log(r9051);
        float r9053 = r9039 * r9052;
        float r9054 = r9053 / r9045;
        float r9055 = r9046 * r9054;
        float r9056 = 9.008777105504111e-235;
        bool r9057 = r9034 <= r9056;
        float r9058 = log(r9047);
        float r9059 = r9039 * r9058;
        float r9060 = r9059 / r9044;
        float r9061 = 1.8997768895150623e+112;
        bool r9062 = r9034 <= r9061;
        float r9063 = -1;
        float r9064 = r9063 / r9033;
        float r9065 = log(r9064);
        float r9066 = r9063 / r9039;
        float r9067 = r9065 * r9066;
        float r9068 = r9062 ? r9055 : r9067;
        float r9069 = r9057 ? r9060 : r9068;
        float r9070 = r9042 ? r9055 : r9069;
        float r9071 = r9036 ? r9040 : r9070;
        return r9071;
}

double f_od(double re, double im, double base) {
        double r9072 = re;
        double r9073 = -r9072;
        double r9074 = -4.402648364861606e+144;
        bool r9075 = r9073 <= r9074;
        double r9076 = log(r9072);
        double r9077 = base;
        double r9078 = log(r9077);
        double r9079 = r9076 / r9078;
        double r9080 = -4.025957105797844e-252;
        bool r9081 = r9073 <= r9080;
        double r9082 = 1;
        double r9083 = r9078 * r9078;
        double r9084 = sqrt(r9083);
        double r9085 = r9082 / r9084;
        double r9086 = im;
        double r9087 = r9086 * r9086;
        double r9088 = r9072 * r9072;
        double r9089 = r9087 + r9088;
        double r9090 = sqrt(r9089);
        double r9091 = log(r9090);
        double r9092 = r9078 * r9091;
        double r9093 = r9092 / r9084;
        double r9094 = r9085 * r9093;
        double r9095 = 9.008777105504111e-235;
        bool r9096 = r9073 <= r9095;
        double r9097 = log(r9086);
        double r9098 = r9078 * r9097;
        double r9099 = r9098 / r9083;
        double r9100 = 1.8997768895150623e+112;
        bool r9101 = r9073 <= r9100;
        double r9102 = -1;
        double r9103 = r9102 / r9072;
        double r9104 = log(r9103);
        double r9105 = r9102 / r9078;
        double r9106 = r9104 * r9105;
        double r9107 = r9101 ? r9094 : r9106;
        double r9108 = r9096 ? r9099 : r9107;
        double r9109 = r9081 ? r9094 : r9108;
        double r9110 = r9075 ? r9079 : r9109;
        return r9110;
}

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 r9111, r9112, r9113, r9114, r9115, r9116, r9117, r9118, r9119, r9120, r9121, r9122, r9123, r9124, r9125, r9126, r9127, r9128;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9111);
        mpfr_init(r9112);
        mpfr_init(r9113);
        mpfr_init(r9114);
        mpfr_init(r9115);
        mpfr_init(r9116);
        mpfr_init(r9117);
        mpfr_init(r9118);
        mpfr_init(r9119);
        mpfr_init(r9120);
        mpfr_init(r9121);
        mpfr_init_set_str(r9122, "0", 10, MPFR_RNDN);
        mpfr_init(r9123);
        mpfr_init(r9124);
        mpfr_init(r9125);
        mpfr_init(r9126);
        mpfr_init(r9127);
        mpfr_init(r9128);
}

double f_im(double re, double im, double base) {
        mpfr_set_d(r9111, re, MPFR_RNDN);
        mpfr_mul(r9112, r9111, r9111, MPFR_RNDN);
        mpfr_set_d(r9113, im, MPFR_RNDN);
        mpfr_mul(r9114, r9113, r9113, MPFR_RNDN);
        mpfr_add(r9115, r9112, r9114, MPFR_RNDN);
        mpfr_sqrt(r9116, r9115, MPFR_RNDN);
        mpfr_log(r9117, r9116, MPFR_RNDN);
        mpfr_set_d(r9118, base, MPFR_RNDN);
        mpfr_log(r9119, r9118, MPFR_RNDN);
        mpfr_mul(r9120, r9117, r9119, MPFR_RNDN);
        mpfr_atan2(r9121, r9113, r9111, MPFR_RNDN);
        ;
        mpfr_mul(r9123, r9121, r9122, MPFR_RNDN);
        mpfr_add(r9124, r9120, r9123, MPFR_RNDN);
        mpfr_mul(r9125, r9119, r9119, MPFR_RNDN);
        mpfr_mul(r9126, r9122, r9122, MPFR_RNDN);
        mpfr_add(r9127, r9125, r9126, MPFR_RNDN);
        mpfr_div(r9128, r9124, r9127, MPFR_RNDN);
        return mpfr_get_d(r9128, MPFR_RNDN);
}

static mpfr_t r9129, r9130, r9131, r9132, r9133, r9134, r9135, r9136, r9137, r9138, r9139, r9140, r9141, r9142, r9143, r9144, r9145, r9146, r9147, r9148, r9149, r9150, r9151, r9152, r9153, r9154, r9155, r9156, r9157, r9158, r9159, r9160, r9161, r9162, r9163, r9164, r9165, r9166, r9167;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9129);
        mpfr_init(r9130);
        mpfr_init_set_str(r9131, "-4.402648364861606e+144", 10, MPFR_RNDN);
        mpfr_init(r9132);
        mpfr_init(r9133);
        mpfr_init(r9134);
        mpfr_init(r9135);
        mpfr_init(r9136);
        mpfr_init_set_str(r9137, "-4.025957105797844e-252", 10, MPFR_RNDN);
        mpfr_init(r9138);
        mpfr_init_set_str(r9139, "1", 10, MPFR_RNDN);
        mpfr_init(r9140);
        mpfr_init(r9141);
        mpfr_init(r9142);
        mpfr_init(r9143);
        mpfr_init(r9144);
        mpfr_init(r9145);
        mpfr_init(r9146);
        mpfr_init(r9147);
        mpfr_init(r9148);
        mpfr_init(r9149);
        mpfr_init(r9150);
        mpfr_init(r9151);
        mpfr_init_set_str(r9152, "9.008777105504111e-235", 10, MPFR_RNDN);
        mpfr_init(r9153);
        mpfr_init(r9154);
        mpfr_init(r9155);
        mpfr_init(r9156);
        mpfr_init_set_str(r9157, "1.8997768895150623e+112", 10, MPFR_RNDN);
        mpfr_init(r9158);
        mpfr_init_set_str(r9159, "-1", 10, MPFR_RNDN);
        mpfr_init(r9160);
        mpfr_init(r9161);
        mpfr_init(r9162);
        mpfr_init(r9163);
        mpfr_init(r9164);
        mpfr_init(r9165);
        mpfr_init(r9166);
        mpfr_init(r9167);
}

double f_fm(double re, double im, double base) {
        mpfr_set_d(r9129, re, MPFR_RNDN);
        mpfr_neg(r9130, r9129, MPFR_RNDN);
        ;
        mpfr_set_si(r9132, mpfr_cmp(r9130, r9131) <= 0, MPFR_RNDN);
        mpfr_log(r9133, r9129, MPFR_RNDN);
        mpfr_set_d(r9134, base, MPFR_RNDN);
        mpfr_log(r9135, r9134, MPFR_RNDN);
        mpfr_div(r9136, r9133, r9135, MPFR_RNDN);
        ;
        mpfr_set_si(r9138, mpfr_cmp(r9130, r9137) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9140, r9135, r9135, MPFR_RNDN);
        mpfr_sqrt(r9141, r9140, MPFR_RNDN);
        mpfr_div(r9142, r9139, r9141, MPFR_RNDN);
        mpfr_set_d(r9143, im, MPFR_RNDN);
        mpfr_mul(r9144, r9143, r9143, MPFR_RNDN);
        mpfr_mul(r9145, r9129, r9129, MPFR_RNDN);
        mpfr_add(r9146, r9144, r9145, MPFR_RNDN);
        mpfr_sqrt(r9147, r9146, MPFR_RNDN);
        mpfr_log(r9148, r9147, MPFR_RNDN);
        mpfr_mul(r9149, r9135, r9148, MPFR_RNDN);
        mpfr_div(r9150, r9149, r9141, MPFR_RNDN);
        mpfr_mul(r9151, r9142, r9150, MPFR_RNDN);
        ;
        mpfr_set_si(r9153, mpfr_cmp(r9130, r9152) <= 0, MPFR_RNDN);
        mpfr_log(r9154, r9143, MPFR_RNDN);
        mpfr_mul(r9155, r9135, r9154, MPFR_RNDN);
        mpfr_div(r9156, r9155, r9140, MPFR_RNDN);
        ;
        mpfr_set_si(r9158, mpfr_cmp(r9130, r9157) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9160, r9159, r9129, MPFR_RNDN);
        mpfr_log(r9161, r9160, MPFR_RNDN);
        mpfr_div(r9162, r9159, r9135, MPFR_RNDN);
        mpfr_mul(r9163, r9161, r9162, MPFR_RNDN);
        if (mpfr_get_si(r9158, MPFR_RNDN)) { mpfr_set(r9164, r9151, MPFR_RNDN); } else { mpfr_set(r9164, r9163, MPFR_RNDN); };
        if (mpfr_get_si(r9153, MPFR_RNDN)) { mpfr_set(r9165, r9156, MPFR_RNDN); } else { mpfr_set(r9165, r9164, MPFR_RNDN); };
        if (mpfr_get_si(r9138, MPFR_RNDN)) { mpfr_set(r9166, r9151, MPFR_RNDN); } else { mpfr_set(r9166, r9165, MPFR_RNDN); };
        if (mpfr_get_si(r9132, MPFR_RNDN)) { mpfr_set(r9167, r9136, MPFR_RNDN); } else { mpfr_set(r9167, r9166, MPFR_RNDN); };
        return mpfr_get_d(r9167, MPFR_RNDN);
}

static mpfr_t r9168, r9169, r9170, r9171, r9172, r9173, r9174, r9175, r9176, r9177, r9178, r9179, r9180, r9181, r9182, r9183, r9184, r9185, r9186, r9187, r9188, r9189, r9190, r9191, r9192, r9193, r9194, r9195, r9196, r9197, r9198, r9199, r9200, r9201, r9202, r9203, r9204, r9205, r9206;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9168);
        mpfr_init(r9169);
        mpfr_init_set_str(r9170, "-4.402648364861606e+144", 10, MPFR_RNDN);
        mpfr_init(r9171);
        mpfr_init(r9172);
        mpfr_init(r9173);
        mpfr_init(r9174);
        mpfr_init(r9175);
        mpfr_init_set_str(r9176, "-4.025957105797844e-252", 10, MPFR_RNDN);
        mpfr_init(r9177);
        mpfr_init_set_str(r9178, "1", 10, MPFR_RNDN);
        mpfr_init(r9179);
        mpfr_init(r9180);
        mpfr_init(r9181);
        mpfr_init(r9182);
        mpfr_init(r9183);
        mpfr_init(r9184);
        mpfr_init(r9185);
        mpfr_init(r9186);
        mpfr_init(r9187);
        mpfr_init(r9188);
        mpfr_init(r9189);
        mpfr_init(r9190);
        mpfr_init_set_str(r9191, "9.008777105504111e-235", 10, MPFR_RNDN);
        mpfr_init(r9192);
        mpfr_init(r9193);
        mpfr_init(r9194);
        mpfr_init(r9195);
        mpfr_init_set_str(r9196, "1.8997768895150623e+112", 10, MPFR_RNDN);
        mpfr_init(r9197);
        mpfr_init_set_str(r9198, "-1", 10, MPFR_RNDN);
        mpfr_init(r9199);
        mpfr_init(r9200);
        mpfr_init(r9201);
        mpfr_init(r9202);
        mpfr_init(r9203);
        mpfr_init(r9204);
        mpfr_init(r9205);
        mpfr_init(r9206);
}

double f_dm(double re, double im, double base) {
        mpfr_set_d(r9168, re, MPFR_RNDN);
        mpfr_neg(r9169, r9168, MPFR_RNDN);
        ;
        mpfr_set_si(r9171, mpfr_cmp(r9169, r9170) <= 0, MPFR_RNDN);
        mpfr_log(r9172, r9168, MPFR_RNDN);
        mpfr_set_d(r9173, base, MPFR_RNDN);
        mpfr_log(r9174, r9173, MPFR_RNDN);
        mpfr_div(r9175, r9172, r9174, MPFR_RNDN);
        ;
        mpfr_set_si(r9177, mpfr_cmp(r9169, r9176) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9179, r9174, r9174, MPFR_RNDN);
        mpfr_sqrt(r9180, r9179, MPFR_RNDN);
        mpfr_div(r9181, r9178, r9180, MPFR_RNDN);
        mpfr_set_d(r9182, im, MPFR_RNDN);
        mpfr_mul(r9183, r9182, r9182, MPFR_RNDN);
        mpfr_mul(r9184, r9168, r9168, MPFR_RNDN);
        mpfr_add(r9185, r9183, r9184, MPFR_RNDN);
        mpfr_sqrt(r9186, r9185, MPFR_RNDN);
        mpfr_log(r9187, r9186, MPFR_RNDN);
        mpfr_mul(r9188, r9174, r9187, MPFR_RNDN);
        mpfr_div(r9189, r9188, r9180, MPFR_RNDN);
        mpfr_mul(r9190, r9181, r9189, MPFR_RNDN);
        ;
        mpfr_set_si(r9192, mpfr_cmp(r9169, r9191) <= 0, MPFR_RNDN);
        mpfr_log(r9193, r9182, MPFR_RNDN);
        mpfr_mul(r9194, r9174, r9193, MPFR_RNDN);
        mpfr_div(r9195, r9194, r9179, MPFR_RNDN);
        ;
        mpfr_set_si(r9197, mpfr_cmp(r9169, r9196) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r9199, r9198, r9168, MPFR_RNDN);
        mpfr_log(r9200, r9199, MPFR_RNDN);
        mpfr_div(r9201, r9198, r9174, MPFR_RNDN);
        mpfr_mul(r9202, r9200, r9201, MPFR_RNDN);
        if (mpfr_get_si(r9197, MPFR_RNDN)) { mpfr_set(r9203, r9190, MPFR_RNDN); } else { mpfr_set(r9203, r9202, MPFR_RNDN); };
        if (mpfr_get_si(r9192, MPFR_RNDN)) { mpfr_set(r9204, r9195, MPFR_RNDN); } else { mpfr_set(r9204, r9203, MPFR_RNDN); };
        if (mpfr_get_si(r9177, MPFR_RNDN)) { mpfr_set(r9205, r9190, MPFR_RNDN); } else { mpfr_set(r9205, r9204, MPFR_RNDN); };
        if (mpfr_get_si(r9171, MPFR_RNDN)) { mpfr_set(r9206, r9175, MPFR_RNDN); } else { mpfr_set(r9206, r9205, MPFR_RNDN); };
        return mpfr_get_d(r9206, MPFR_RNDN);
}

