#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 r20988 = re;
        float r20989 = r20988 * r20988;
        float r20990 = im;
        float r20991 = r20990 * r20990;
        float r20992 = r20989 + r20991;
        float r20993 = sqrt(r20992);
        float r20994 = log(r20993);
        float r20995 = 10;
        float r20996 = log(r20995);
        float r20997 = r20994 / r20996;
        return r20997;
}

double f_id(double re, double im) {
        double r20998 = re;
        double r20999 = r20998 * r20998;
        double r21000 = im;
        double r21001 = r21000 * r21000;
        double r21002 = r20999 + r21001;
        double r21003 = sqrt(r21002);
        double r21004 = log(r21003);
        double r21005 = 10;
        double r21006 = log(r21005);
        double r21007 = r21004 / r21006;
        return r21007;
}


double f_of(float re, float im) {
        float r21008 = re;
        float r21009 = -3.2564584289677175e+97;
        bool r21010 = r21008 <= r21009;
        float r21011 = -r21008;
        float r21012 = log(r21011);
        float r21013 = 10;
        float r21014 = log(r21013);
        float r21015 = r21012 / r21014;
        float r21016 = 2.447855958190132e-195;
        bool r21017 = r21008 <= r21016;
        float r21018 = 1/2;
        float r21019 = sqrt(r21014);
        float r21020 = r21018 / r21019;
        float r21021 = r21008 * r21008;
        float r21022 = im;
        float r21023 = r21022 * r21022;
        float r21024 = r21021 + r21023;
        float r21025 = log(r21024);
        float r21026 = 1;
        float r21027 = r21026 / r21019;
        float r21028 = r21025 * r21027;
        float r21029 = r21020 * r21028;
        float r21030 = 1.539380988490176e-178;
        bool r21031 = r21008 <= r21030;
        float r21032 = log(r21008);
        float r21033 = r21032 / r21014;
        float r21034 = 323298652673.5006;
        bool r21035 = r21008 <= r21034;
        float r21036 = r21035 ? r21029 : r21033;
        float r21037 = r21031 ? r21033 : r21036;
        float r21038 = r21017 ? r21029 : r21037;
        float r21039 = r21010 ? r21015 : r21038;
        return r21039;
}

double f_od(double re, double im) {
        double r21040 = re;
        double r21041 = -3.2564584289677175e+97;
        bool r21042 = r21040 <= r21041;
        double r21043 = -r21040;
        double r21044 = log(r21043);
        double r21045 = 10;
        double r21046 = log(r21045);
        double r21047 = r21044 / r21046;
        double r21048 = 2.447855958190132e-195;
        bool r21049 = r21040 <= r21048;
        double r21050 = 1/2;
        double r21051 = sqrt(r21046);
        double r21052 = r21050 / r21051;
        double r21053 = r21040 * r21040;
        double r21054 = im;
        double r21055 = r21054 * r21054;
        double r21056 = r21053 + r21055;
        double r21057 = log(r21056);
        double r21058 = 1;
        double r21059 = r21058 / r21051;
        double r21060 = r21057 * r21059;
        double r21061 = r21052 * r21060;
        double r21062 = 1.539380988490176e-178;
        bool r21063 = r21040 <= r21062;
        double r21064 = log(r21040);
        double r21065 = r21064 / r21046;
        double r21066 = 323298652673.5006;
        bool r21067 = r21040 <= r21066;
        double r21068 = r21067 ? r21061 : r21065;
        double r21069 = r21063 ? r21065 : r21068;
        double r21070 = r21049 ? r21061 : r21069;
        double r21071 = r21042 ? r21047 : r21070;
        return r21071;
}

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 r21072, r21073, r21074, r21075, r21076, r21077, r21078, r21079, r21080, r21081;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r21072);
        mpfr_init(r21073);
        mpfr_init(r21074);
        mpfr_init(r21075);
        mpfr_init(r21076);
        mpfr_init(r21077);
        mpfr_init(r21078);
        mpfr_init_set_str(r21079, "10", 10, MPFR_RNDN);
        mpfr_init(r21080);
        mpfr_init(r21081);
}

double f_im(double re, double im) {
        mpfr_set_d(r21072, re, MPFR_RNDN);
        mpfr_mul(r21073, r21072, r21072, MPFR_RNDN);
        mpfr_set_d(r21074, im, MPFR_RNDN);
        mpfr_mul(r21075, r21074, r21074, MPFR_RNDN);
        mpfr_add(r21076, r21073, r21075, MPFR_RNDN);
        mpfr_sqrt(r21077, r21076, MPFR_RNDN);
        mpfr_log(r21078, r21077, MPFR_RNDN);
        ;
        mpfr_log(r21080, r21079, MPFR_RNDN);
        mpfr_div(r21081, r21078, r21080, MPFR_RNDN);
        return mpfr_get_d(r21081, MPFR_RNDN);
}

static mpfr_t r21082, r21083, r21084, r21085, r21086, r21087, r21088, r21089, r21090, r21091, r21092, r21093, r21094, r21095, r21096, r21097, r21098, r21099, r21100, r21101, r21102, r21103, r21104, r21105, r21106, r21107, r21108, r21109, r21110, r21111, r21112, r21113;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21082);
        mpfr_init_set_str(r21083, "-3.2564584289677175e+97", 10, MPFR_RNDN);
        mpfr_init(r21084);
        mpfr_init(r21085);
        mpfr_init(r21086);
        mpfr_init_set_str(r21087, "10", 10, MPFR_RNDN);
        mpfr_init(r21088);
        mpfr_init(r21089);
        mpfr_init_set_str(r21090, "2.447855958190132e-195", 10, MPFR_RNDN);
        mpfr_init(r21091);
        mpfr_init_set_str(r21092, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21093);
        mpfr_init(r21094);
        mpfr_init(r21095);
        mpfr_init(r21096);
        mpfr_init(r21097);
        mpfr_init(r21098);
        mpfr_init(r21099);
        mpfr_init_set_str(r21100, "1", 10, MPFR_RNDN);
        mpfr_init(r21101);
        mpfr_init(r21102);
        mpfr_init(r21103);
        mpfr_init_set_str(r21104, "1.539380988490176e-178", 10, MPFR_RNDN);
        mpfr_init(r21105);
        mpfr_init(r21106);
        mpfr_init(r21107);
        mpfr_init_set_str(r21108, "323298652673.5006", 10, MPFR_RNDN);
        mpfr_init(r21109);
        mpfr_init(r21110);
        mpfr_init(r21111);
        mpfr_init(r21112);
        mpfr_init(r21113);
}

double f_fm(double re, double im) {
        mpfr_set_d(r21082, re, MPFR_RNDN);
        ;
        mpfr_set_si(r21084, mpfr_cmp(r21082, r21083) <= 0, MPFR_RNDN);
        mpfr_neg(r21085, r21082, MPFR_RNDN);
        mpfr_log(r21086, r21085, MPFR_RNDN);
        ;
        mpfr_log(r21088, r21087, MPFR_RNDN);
        mpfr_div(r21089, r21086, r21088, MPFR_RNDN);
        ;
        mpfr_set_si(r21091, mpfr_cmp(r21082, r21090) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r21093, r21088, MPFR_RNDN);
        mpfr_div(r21094, r21092, r21093, MPFR_RNDN);
        mpfr_mul(r21095, r21082, r21082, MPFR_RNDN);
        mpfr_set_d(r21096, im, MPFR_RNDN);
        mpfr_mul(r21097, r21096, r21096, MPFR_RNDN);
        mpfr_add(r21098, r21095, r21097, MPFR_RNDN);
        mpfr_log(r21099, r21098, MPFR_RNDN);
        ;
        mpfr_div(r21101, r21100, r21093, MPFR_RNDN);
        mpfr_mul(r21102, r21099, r21101, MPFR_RNDN);
        mpfr_mul(r21103, r21094, r21102, MPFR_RNDN);
        ;
        mpfr_set_si(r21105, mpfr_cmp(r21082, r21104) <= 0, MPFR_RNDN);
        mpfr_log(r21106, r21082, MPFR_RNDN);
        mpfr_div(r21107, r21106, r21088, MPFR_RNDN);
        ;
        mpfr_set_si(r21109, mpfr_cmp(r21082, r21108) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r21109, MPFR_RNDN)) { mpfr_set(r21110, r21103, MPFR_RNDN); } else { mpfr_set(r21110, r21107, MPFR_RNDN); };
        if (mpfr_get_si(r21105, MPFR_RNDN)) { mpfr_set(r21111, r21107, MPFR_RNDN); } else { mpfr_set(r21111, r21110, MPFR_RNDN); };
        if (mpfr_get_si(r21091, MPFR_RNDN)) { mpfr_set(r21112, r21103, MPFR_RNDN); } else { mpfr_set(r21112, r21111, MPFR_RNDN); };
        if (mpfr_get_si(r21084, MPFR_RNDN)) { mpfr_set(r21113, r21089, MPFR_RNDN); } else { mpfr_set(r21113, r21112, MPFR_RNDN); };
        return mpfr_get_d(r21113, MPFR_RNDN);
}

static mpfr_t r21114, r21115, r21116, r21117, r21118, r21119, r21120, r21121, r21122, r21123, r21124, r21125, r21126, r21127, r21128, r21129, r21130, r21131, r21132, r21133, r21134, r21135, r21136, r21137, r21138, r21139, r21140, r21141, r21142, r21143, r21144, r21145;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21114);
        mpfr_init_set_str(r21115, "-3.2564584289677175e+97", 10, MPFR_RNDN);
        mpfr_init(r21116);
        mpfr_init(r21117);
        mpfr_init(r21118);
        mpfr_init_set_str(r21119, "10", 10, MPFR_RNDN);
        mpfr_init(r21120);
        mpfr_init(r21121);
        mpfr_init_set_str(r21122, "2.447855958190132e-195", 10, MPFR_RNDN);
        mpfr_init(r21123);
        mpfr_init_set_str(r21124, "1/2", 10, MPFR_RNDN);
        mpfr_init(r21125);
        mpfr_init(r21126);
        mpfr_init(r21127);
        mpfr_init(r21128);
        mpfr_init(r21129);
        mpfr_init(r21130);
        mpfr_init(r21131);
        mpfr_init_set_str(r21132, "1", 10, MPFR_RNDN);
        mpfr_init(r21133);
        mpfr_init(r21134);
        mpfr_init(r21135);
        mpfr_init_set_str(r21136, "1.539380988490176e-178", 10, MPFR_RNDN);
        mpfr_init(r21137);
        mpfr_init(r21138);
        mpfr_init(r21139);
        mpfr_init_set_str(r21140, "323298652673.5006", 10, MPFR_RNDN);
        mpfr_init(r21141);
        mpfr_init(r21142);
        mpfr_init(r21143);
        mpfr_init(r21144);
        mpfr_init(r21145);
}

double f_dm(double re, double im) {
        mpfr_set_d(r21114, re, MPFR_RNDN);
        ;
        mpfr_set_si(r21116, mpfr_cmp(r21114, r21115) <= 0, MPFR_RNDN);
        mpfr_neg(r21117, r21114, MPFR_RNDN);
        mpfr_log(r21118, r21117, MPFR_RNDN);
        ;
        mpfr_log(r21120, r21119, MPFR_RNDN);
        mpfr_div(r21121, r21118, r21120, MPFR_RNDN);
        ;
        mpfr_set_si(r21123, mpfr_cmp(r21114, r21122) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r21125, r21120, MPFR_RNDN);
        mpfr_div(r21126, r21124, r21125, MPFR_RNDN);
        mpfr_mul(r21127, r21114, r21114, MPFR_RNDN);
        mpfr_set_d(r21128, im, MPFR_RNDN);
        mpfr_mul(r21129, r21128, r21128, MPFR_RNDN);
        mpfr_add(r21130, r21127, r21129, MPFR_RNDN);
        mpfr_log(r21131, r21130, MPFR_RNDN);
        ;
        mpfr_div(r21133, r21132, r21125, MPFR_RNDN);
        mpfr_mul(r21134, r21131, r21133, MPFR_RNDN);
        mpfr_mul(r21135, r21126, r21134, MPFR_RNDN);
        ;
        mpfr_set_si(r21137, mpfr_cmp(r21114, r21136) <= 0, MPFR_RNDN);
        mpfr_log(r21138, r21114, MPFR_RNDN);
        mpfr_div(r21139, r21138, r21120, MPFR_RNDN);
        ;
        mpfr_set_si(r21141, mpfr_cmp(r21114, r21140) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r21141, MPFR_RNDN)) { mpfr_set(r21142, r21135, MPFR_RNDN); } else { mpfr_set(r21142, r21139, MPFR_RNDN); };
        if (mpfr_get_si(r21137, MPFR_RNDN)) { mpfr_set(r21143, r21139, MPFR_RNDN); } else { mpfr_set(r21143, r21142, MPFR_RNDN); };
        if (mpfr_get_si(r21123, MPFR_RNDN)) { mpfr_set(r21144, r21135, MPFR_RNDN); } else { mpfr_set(r21144, r21143, MPFR_RNDN); };
        if (mpfr_get_si(r21116, MPFR_RNDN)) { mpfr_set(r21145, r21121, MPFR_RNDN); } else { mpfr_set(r21145, r21144, MPFR_RNDN); };
        return mpfr_get_d(r21145, MPFR_RNDN);
}

