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

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

double f_if(float re, float im) {
        float r8970 = re;
        float r8971 = r8970 * r8970;
        float r8972 = im;
        float r8973 = r8972 * r8972;
        float r8974 = r8971 + r8973;
        float r8975 = sqrt(r8974);
        float r8976 = log(r8975);
        return r8976;
}

double f_id(double re, double im) {
        double r8977 = re;
        double r8978 = r8977 * r8977;
        double r8979 = im;
        double r8980 = r8979 * r8979;
        double r8981 = r8978 + r8980;
        double r8982 = sqrt(r8981);
        double r8983 = log(r8982);
        return r8983;
}


double f_of(float re, float im) {
        float r8984 = re;
        float r8985 = -r8984;
        float r8986 = -1.8744433227157913e+136f;
        bool r8987 = r8985 <= r8986;
        float r8988 = log(r8984);
        float r8989 = -3.745115008526117e-236f;
        bool r8990 = r8985 <= r8989;
        float r8991 = im;
        float r8992 = r8991 * r8991;
        float r8993 = r8984 * r8984;
        float r8994 = r8992 + r8993;
        float r8995 = sqrt(r8994);
        float r8996 = log(r8995);
        float r8997 = 8.263368924409109e-182f;
        bool r8998 = r8985 <= r8997;
        float r8999 = log(r8991);
        float r9000 = 1.0576382136883787e-07f;
        bool r9001 = r8985 <= r9000;
        float r9002 = log(r8985);
        float r9003 = r9001 ? r8996 : r9002;
        float r9004 = r8998 ? r8999 : r9003;
        float r9005 = r8990 ? r8996 : r9004;
        float r9006 = r8987 ? r8988 : r9005;
        return r9006;
}

double f_od(double re, double im) {
        double r9007 = re;
        double r9008 = -r9007;
        double r9009 = -1.8744433227157913e+136;
        bool r9010 = r9008 <= r9009;
        double r9011 = log(r9007);
        double r9012 = -3.745115008526117e-236;
        bool r9013 = r9008 <= r9012;
        double r9014 = im;
        double r9015 = r9014 * r9014;
        double r9016 = r9007 * r9007;
        double r9017 = r9015 + r9016;
        double r9018 = sqrt(r9017);
        double r9019 = log(r9018);
        double r9020 = 8.263368924409109e-182;
        bool r9021 = r9008 <= r9020;
        double r9022 = log(r9014);
        double r9023 = 1.0576382136883787e-07;
        bool r9024 = r9008 <= r9023;
        double r9025 = log(r9008);
        double r9026 = r9024 ? r9019 : r9025;
        double r9027 = r9021 ? r9022 : r9026;
        double r9028 = r9013 ? r9019 : r9027;
        double r9029 = r9010 ? r9011 : r9028;
        return r9029;
}

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 r9030, r9031, r9032, r9033, r9034, r9035, r9036;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9030);
        mpfr_init(r9031);
        mpfr_init(r9032);
        mpfr_init(r9033);
        mpfr_init(r9034);
        mpfr_init(r9035);
        mpfr_init(r9036);
}

double f_im(double re, double im) {
        mpfr_set_d(r9030, re, MPFR_RNDN);
        mpfr_mul(r9031, r9030, r9030, MPFR_RNDN);
        mpfr_set_d(r9032, im, MPFR_RNDN);
        mpfr_mul(r9033, r9032, r9032, MPFR_RNDN);
        mpfr_add(r9034, r9031, r9033, MPFR_RNDN);
        mpfr_sqrt(r9035, r9034, MPFR_RNDN);
        mpfr_log(r9036, r9035, MPFR_RNDN);
        return mpfr_get_d(r9036, MPFR_RNDN);
}

static mpfr_t r9037, r9038, r9039, r9040, r9041, r9042, r9043, r9044, r9045, r9046, r9047, r9048, r9049, r9050, r9051, r9052, r9053, r9054, r9055, r9056, r9057, r9058, r9059;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9037);
        mpfr_init(r9038);
        mpfr_init_set_str(r9039, "-1.8744433227157913e+136", 10, MPFR_RNDN);
        mpfr_init(r9040);
        mpfr_init(r9041);
        mpfr_init_set_str(r9042, "-3.745115008526117e-236", 10, MPFR_RNDN);
        mpfr_init(r9043);
        mpfr_init(r9044);
        mpfr_init(r9045);
        mpfr_init(r9046);
        mpfr_init(r9047);
        mpfr_init(r9048);
        mpfr_init(r9049);
        mpfr_init_set_str(r9050, "8.263368924409109e-182", 10, MPFR_RNDN);
        mpfr_init(r9051);
        mpfr_init(r9052);
        mpfr_init_set_str(r9053, "1.0576382136883787e-07", 10, MPFR_RNDN);
        mpfr_init(r9054);
        mpfr_init(r9055);
        mpfr_init(r9056);
        mpfr_init(r9057);
        mpfr_init(r9058);
        mpfr_init(r9059);
}

double f_fm(double re, double im) {
        mpfr_set_d(r9037, re, MPFR_RNDN);
        mpfr_neg(r9038, r9037, MPFR_RNDN);
        ;
        mpfr_set_si(r9040, mpfr_cmp(r9038, r9039) <= 0, MPFR_RNDN);
        mpfr_log(r9041, r9037, MPFR_RNDN);
        ;
        mpfr_set_si(r9043, mpfr_cmp(r9038, r9042) <= 0, MPFR_RNDN);
        mpfr_set_d(r9044, im, MPFR_RNDN);
        mpfr_mul(r9045, r9044, r9044, MPFR_RNDN);
        mpfr_mul(r9046, r9037, r9037, MPFR_RNDN);
        mpfr_add(r9047, r9045, r9046, MPFR_RNDN);
        mpfr_sqrt(r9048, r9047, MPFR_RNDN);
        mpfr_log(r9049, r9048, MPFR_RNDN);
        ;
        mpfr_set_si(r9051, mpfr_cmp(r9038, r9050) <= 0, MPFR_RNDN);
        mpfr_log(r9052, r9044, MPFR_RNDN);
        ;
        mpfr_set_si(r9054, mpfr_cmp(r9038, r9053) <= 0, MPFR_RNDN);
        mpfr_log(r9055, r9038, MPFR_RNDN);
        if (mpfr_get_si(r9054, MPFR_RNDN)) { mpfr_set(r9056, r9049, MPFR_RNDN); } else { mpfr_set(r9056, r9055, MPFR_RNDN); };
        if (mpfr_get_si(r9051, MPFR_RNDN)) { mpfr_set(r9057, r9052, MPFR_RNDN); } else { mpfr_set(r9057, r9056, MPFR_RNDN); };
        if (mpfr_get_si(r9043, MPFR_RNDN)) { mpfr_set(r9058, r9049, MPFR_RNDN); } else { mpfr_set(r9058, r9057, MPFR_RNDN); };
        if (mpfr_get_si(r9040, MPFR_RNDN)) { mpfr_set(r9059, r9041, MPFR_RNDN); } else { mpfr_set(r9059, r9058, MPFR_RNDN); };
        return mpfr_get_d(r9059, MPFR_RNDN);
}

static mpfr_t r9060, r9061, r9062, r9063, r9064, r9065, r9066, r9067, r9068, r9069, r9070, r9071, r9072, r9073, r9074, r9075, r9076, r9077, r9078, r9079, r9080, r9081, r9082;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9060);
        mpfr_init(r9061);
        mpfr_init_set_str(r9062, "-1.8744433227157913e+136", 10, MPFR_RNDN);
        mpfr_init(r9063);
        mpfr_init(r9064);
        mpfr_init_set_str(r9065, "-3.745115008526117e-236", 10, MPFR_RNDN);
        mpfr_init(r9066);
        mpfr_init(r9067);
        mpfr_init(r9068);
        mpfr_init(r9069);
        mpfr_init(r9070);
        mpfr_init(r9071);
        mpfr_init(r9072);
        mpfr_init_set_str(r9073, "8.263368924409109e-182", 10, MPFR_RNDN);
        mpfr_init(r9074);
        mpfr_init(r9075);
        mpfr_init_set_str(r9076, "1.0576382136883787e-07", 10, MPFR_RNDN);
        mpfr_init(r9077);
        mpfr_init(r9078);
        mpfr_init(r9079);
        mpfr_init(r9080);
        mpfr_init(r9081);
        mpfr_init(r9082);
}

double f_dm(double re, double im) {
        mpfr_set_d(r9060, re, MPFR_RNDN);
        mpfr_neg(r9061, r9060, MPFR_RNDN);
        ;
        mpfr_set_si(r9063, mpfr_cmp(r9061, r9062) <= 0, MPFR_RNDN);
        mpfr_log(r9064, r9060, MPFR_RNDN);
        ;
        mpfr_set_si(r9066, mpfr_cmp(r9061, r9065) <= 0, MPFR_RNDN);
        mpfr_set_d(r9067, im, MPFR_RNDN);
        mpfr_mul(r9068, r9067, r9067, MPFR_RNDN);
        mpfr_mul(r9069, r9060, r9060, MPFR_RNDN);
        mpfr_add(r9070, r9068, r9069, MPFR_RNDN);
        mpfr_sqrt(r9071, r9070, MPFR_RNDN);
        mpfr_log(r9072, r9071, MPFR_RNDN);
        ;
        mpfr_set_si(r9074, mpfr_cmp(r9061, r9073) <= 0, MPFR_RNDN);
        mpfr_log(r9075, r9067, MPFR_RNDN);
        ;
        mpfr_set_si(r9077, mpfr_cmp(r9061, r9076) <= 0, MPFR_RNDN);
        mpfr_log(r9078, r9061, MPFR_RNDN);
        if (mpfr_get_si(r9077, MPFR_RNDN)) { mpfr_set(r9079, r9072, MPFR_RNDN); } else { mpfr_set(r9079, r9078, MPFR_RNDN); };
        if (mpfr_get_si(r9074, MPFR_RNDN)) { mpfr_set(r9080, r9075, MPFR_RNDN); } else { mpfr_set(r9080, r9079, MPFR_RNDN); };
        if (mpfr_get_si(r9066, MPFR_RNDN)) { mpfr_set(r9081, r9072, MPFR_RNDN); } else { mpfr_set(r9081, r9080, MPFR_RNDN); };
        if (mpfr_get_si(r9063, MPFR_RNDN)) { mpfr_set(r9082, r9064, MPFR_RNDN); } else { mpfr_set(r9082, r9081, MPFR_RNDN); };
        return mpfr_get_d(r9082, MPFR_RNDN);
}

