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

char *name = "math.log10 on complex, real part";

double f_if(float re, float im) {
        float r20996 = re;
        float r20997 = r20996 * r20996;
        float r20998 = im;
        float r20999 = r20998 * r20998;
        float r21000 = r20997 + r20999;
        float r21001 = sqrt(r21000);
        float r21002 = log(r21001);
        float r21003 = 10;
        float r21004 = log(r21003);
        float r21005 = r21002 / r21004;
        return r21005;
}

double f_id(double re, double im) {
        double r21006 = re;
        double r21007 = r21006 * r21006;
        double r21008 = im;
        double r21009 = r21008 * r21008;
        double r21010 = r21007 + r21009;
        double r21011 = sqrt(r21010);
        double r21012 = log(r21011);
        double r21013 = 10;
        double r21014 = log(r21013);
        double r21015 = r21012 / r21014;
        return r21015;
}


double f_of(float re, float im) {
        float r21016 = re;
        float r21017 = -1.165381495034067e+96;
        bool r21018 = r21016 <= r21017;
        float r21019 = -r21016;
        float r21020 = log(r21019);
        float r21021 = 10;
        float r21022 = log(r21021);
        float r21023 = r21020 / r21022;
        float r21024 = 2.4528332963254056e-195;
        bool r21025 = r21016 <= r21024;
        float r21026 = 1/2;
        float r21027 = sqrt(r21022);
        float r21028 = r21026 / r21027;
        float r21029 = r21016 * r21016;
        float r21030 = im;
        float r21031 = r21030 * r21030;
        float r21032 = r21029 + r21031;
        float r21033 = log(r21032);
        float r21034 = 1;
        float r21035 = r21034 / r21027;
        float r21036 = r21033 * r21035;
        float r21037 = r21028 * r21036;
        float r21038 = 4.8611610197161825e-177;
        bool r21039 = r21016 <= r21038;
        float r21040 = log(r21016);
        float r21041 = r21040 / r21022;
        float r21042 = 333726528697.66797;
        bool r21043 = r21016 <= r21042;
        float r21044 = r21043 ? r21037 : r21041;
        float r21045 = r21039 ? r21041 : r21044;
        float r21046 = r21025 ? r21037 : r21045;
        float r21047 = r21018 ? r21023 : r21046;
        return r21047;
}

double f_od(double re, double im) {
        double r21048 = re;
        double r21049 = -1.165381495034067e+96;
        bool r21050 = r21048 <= r21049;
        double r21051 = -r21048;
        double r21052 = log(r21051);
        double r21053 = 10;
        double r21054 = log(r21053);
        double r21055 = r21052 / r21054;
        double r21056 = 2.4528332963254056e-195;
        bool r21057 = r21048 <= r21056;
        double r21058 = 1/2;
        double r21059 = sqrt(r21054);
        double r21060 = r21058 / r21059;
        double r21061 = r21048 * r21048;
        double r21062 = im;
        double r21063 = r21062 * r21062;
        double r21064 = r21061 + r21063;
        double r21065 = log(r21064);
        double r21066 = 1;
        double r21067 = r21066 / r21059;
        double r21068 = r21065 * r21067;
        double r21069 = r21060 * r21068;
        double r21070 = 4.8611610197161825e-177;
        bool r21071 = r21048 <= r21070;
        double r21072 = log(r21048);
        double r21073 = r21072 / r21054;
        double r21074 = 333726528697.66797;
        bool r21075 = r21048 <= r21074;
        double r21076 = r21075 ? r21069 : r21073;
        double r21077 = r21071 ? r21073 : r21076;
        double r21078 = r21057 ? r21069 : r21077;
        double r21079 = r21050 ? r21055 : r21078;
        return r21079;
}

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 r21080, r21081, r21082, r21083, r21084, r21085, r21086, r21087, r21088, r21089;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r21080);
        mpfr_init(r21081);
        mpfr_init(r21082);
        mpfr_init(r21083);
        mpfr_init(r21084);
        mpfr_init(r21085);
        mpfr_init(r21086);
        mpfr_init_set_str(r21087, "10", 10, MPFR_RNDN);
        mpfr_init(r21088);
        mpfr_init(r21089);
}

double f_im(double re, double im) {
        mpfr_set_d(r21080, re, MPFR_RNDN);
        mpfr_mul(r21081, r21080, r21080, MPFR_RNDN);
        mpfr_set_d(r21082, im, MPFR_RNDN);
        mpfr_mul(r21083, r21082, r21082, MPFR_RNDN);
        mpfr_add(r21084, r21081, r21083, MPFR_RNDN);
        mpfr_sqrt(r21085, r21084, MPFR_RNDN);
        mpfr_log(r21086, r21085, MPFR_RNDN);
        ;
        mpfr_log(r21088, r21087, MPFR_RNDN);
        mpfr_div(r21089, r21086, r21088, MPFR_RNDN);
        return mpfr_get_d(r21089, MPFR_RNDN);
}

static mpfr_t r21090, r21091, r21092, r21093, r21094, r21095, r21096, r21097, r21098, r21099, r21100, r21101, r21102, r21103, r21104, r21105, r21106, r21107, r21108, r21109, r21110, r21111, r21112, r21113, r21114, r21115, r21116, r21117, r21118, r21119, r21120, r21121;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21090);
        mpfr_init_set_str(r21091, "-1.165381495034067e+96", 10, MPFR_RNDN);
        mpfr_init(r21092);
        mpfr_init(r21093);
        mpfr_init(r21094);
        mpfr_init_set_str(r21095, "10", 10, MPFR_RNDN);
        mpfr_init(r21096);
        mpfr_init(r21097);
        mpfr_init_set_str(r21098, "2.4528332963254056e-195", 10, MPFR_RNDN);
        mpfr_init(r21099);
        mpfr_init_set_str(r21100, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21101);
        mpfr_init(r21102);
        mpfr_init(r21103);
        mpfr_init(r21104);
        mpfr_init(r21105);
        mpfr_init(r21106);
        mpfr_init(r21107);
        mpfr_init_set_str(r21108, "1", 10, MPFR_RNDN);
        mpfr_init(r21109);
        mpfr_init(r21110);
        mpfr_init(r21111);
        mpfr_init_set_str(r21112, "4.8611610197161825e-177", 10, MPFR_RNDN);
        mpfr_init(r21113);
        mpfr_init(r21114);
        mpfr_init(r21115);
        mpfr_init_set_str(r21116, "333726528697.66797", 10, MPFR_RNDN);
        mpfr_init(r21117);
        mpfr_init(r21118);
        mpfr_init(r21119);
        mpfr_init(r21120);
        mpfr_init(r21121);
}

double f_fm(double re, double im) {
        mpfr_set_d(r21090, re, MPFR_RNDN);
        ;
        mpfr_set_si(r21092, mpfr_cmp(r21090, r21091) <= 0, MPFR_RNDN);
        mpfr_neg(r21093, r21090, MPFR_RNDN);
        mpfr_log(r21094, r21093, MPFR_RNDN);
        ;
        mpfr_log(r21096, r21095, MPFR_RNDN);
        mpfr_div(r21097, r21094, r21096, MPFR_RNDN);
        ;
        mpfr_set_si(r21099, mpfr_cmp(r21090, r21098) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r21101, r21096, MPFR_RNDN);
        mpfr_div(r21102, r21100, r21101, MPFR_RNDN);
        mpfr_mul(r21103, r21090, r21090, MPFR_RNDN);
        mpfr_set_d(r21104, im, MPFR_RNDN);
        mpfr_mul(r21105, r21104, r21104, MPFR_RNDN);
        mpfr_add(r21106, r21103, r21105, MPFR_RNDN);
        mpfr_log(r21107, r21106, MPFR_RNDN);
        ;
        mpfr_div(r21109, r21108, r21101, MPFR_RNDN);
        mpfr_mul(r21110, r21107, r21109, MPFR_RNDN);
        mpfr_mul(r21111, r21102, r21110, MPFR_RNDN);
        ;
        mpfr_set_si(r21113, mpfr_cmp(r21090, r21112) <= 0, MPFR_RNDN);
        mpfr_log(r21114, r21090, MPFR_RNDN);
        mpfr_div(r21115, r21114, r21096, MPFR_RNDN);
        ;
        mpfr_set_si(r21117, mpfr_cmp(r21090, r21116) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r21117, MPFR_RNDN)) { mpfr_set(r21118, r21111, MPFR_RNDN); } else { mpfr_set(r21118, r21115, MPFR_RNDN); };
        if (mpfr_get_si(r21113, MPFR_RNDN)) { mpfr_set(r21119, r21115, MPFR_RNDN); } else { mpfr_set(r21119, r21118, MPFR_RNDN); };
        if (mpfr_get_si(r21099, MPFR_RNDN)) { mpfr_set(r21120, r21111, MPFR_RNDN); } else { mpfr_set(r21120, r21119, MPFR_RNDN); };
        if (mpfr_get_si(r21092, MPFR_RNDN)) { mpfr_set(r21121, r21097, MPFR_RNDN); } else { mpfr_set(r21121, r21120, MPFR_RNDN); };
        return mpfr_get_d(r21121, MPFR_RNDN);
}

static mpfr_t r21122, r21123, r21124, r21125, r21126, r21127, r21128, r21129, r21130, r21131, r21132, r21133, r21134, r21135, r21136, r21137, r21138, r21139, r21140, r21141, r21142, r21143, r21144, r21145, r21146, r21147, r21148, r21149, r21150, r21151, r21152, r21153;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21122);
        mpfr_init_set_str(r21123, "-1.165381495034067e+96", 10, MPFR_RNDN);
        mpfr_init(r21124);
        mpfr_init(r21125);
        mpfr_init(r21126);
        mpfr_init_set_str(r21127, "10", 10, MPFR_RNDN);
        mpfr_init(r21128);
        mpfr_init(r21129);
        mpfr_init_set_str(r21130, "2.4528332963254056e-195", 10, MPFR_RNDN);
        mpfr_init(r21131);
        mpfr_init_set_str(r21132, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21133);
        mpfr_init(r21134);
        mpfr_init(r21135);
        mpfr_init(r21136);
        mpfr_init(r21137);
        mpfr_init(r21138);
        mpfr_init(r21139);
        mpfr_init_set_str(r21140, "1", 10, MPFR_RNDN);
        mpfr_init(r21141);
        mpfr_init(r21142);
        mpfr_init(r21143);
        mpfr_init_set_str(r21144, "4.8611610197161825e-177", 10, MPFR_RNDN);
        mpfr_init(r21145);
        mpfr_init(r21146);
        mpfr_init(r21147);
        mpfr_init_set_str(r21148, "333726528697.66797", 10, MPFR_RNDN);
        mpfr_init(r21149);
        mpfr_init(r21150);
        mpfr_init(r21151);
        mpfr_init(r21152);
        mpfr_init(r21153);
}

double f_dm(double re, double im) {
        mpfr_set_d(r21122, re, MPFR_RNDN);
        ;
        mpfr_set_si(r21124, mpfr_cmp(r21122, r21123) <= 0, MPFR_RNDN);
        mpfr_neg(r21125, r21122, MPFR_RNDN);
        mpfr_log(r21126, r21125, MPFR_RNDN);
        ;
        mpfr_log(r21128, r21127, MPFR_RNDN);
        mpfr_div(r21129, r21126, r21128, MPFR_RNDN);
        ;
        mpfr_set_si(r21131, mpfr_cmp(r21122, r21130) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r21133, r21128, MPFR_RNDN);
        mpfr_div(r21134, r21132, r21133, MPFR_RNDN);
        mpfr_mul(r21135, r21122, r21122, MPFR_RNDN);
        mpfr_set_d(r21136, im, MPFR_RNDN);
        mpfr_mul(r21137, r21136, r21136, MPFR_RNDN);
        mpfr_add(r21138, r21135, r21137, MPFR_RNDN);
        mpfr_log(r21139, r21138, MPFR_RNDN);
        ;
        mpfr_div(r21141, r21140, r21133, MPFR_RNDN);
        mpfr_mul(r21142, r21139, r21141, MPFR_RNDN);
        mpfr_mul(r21143, r21134, r21142, MPFR_RNDN);
        ;
        mpfr_set_si(r21145, mpfr_cmp(r21122, r21144) <= 0, MPFR_RNDN);
        mpfr_log(r21146, r21122, MPFR_RNDN);
        mpfr_div(r21147, r21146, r21128, MPFR_RNDN);
        ;
        mpfr_set_si(r21149, mpfr_cmp(r21122, r21148) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r21149, MPFR_RNDN)) { mpfr_set(r21150, r21143, MPFR_RNDN); } else { mpfr_set(r21150, r21147, MPFR_RNDN); };
        if (mpfr_get_si(r21145, MPFR_RNDN)) { mpfr_set(r21151, r21147, MPFR_RNDN); } else { mpfr_set(r21151, r21150, MPFR_RNDN); };
        if (mpfr_get_si(r21131, MPFR_RNDN)) { mpfr_set(r21152, r21143, MPFR_RNDN); } else { mpfr_set(r21152, r21151, MPFR_RNDN); };
        if (mpfr_get_si(r21124, MPFR_RNDN)) { mpfr_set(r21153, r21129, MPFR_RNDN); } else { mpfr_set(r21153, r21152, MPFR_RNDN); };
        return mpfr_get_d(r21153, MPFR_RNDN);
}

