#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 r8013 = re;
        float r8014 = r8013 * r8013;
        float r8015 = im;
        float r8016 = r8015 * r8015;
        float r8017 = r8014 + r8016;
        float r8018 = sqrt(r8017);
        float r8019 = log(r8018);
        float r8020 = 10.0f;
        float r8021 = log(r8020);
        float r8022 = r8019 / r8021;
        return r8022;
}

double f_id(double re, double im) {
        double r8023 = re;
        double r8024 = r8023 * r8023;
        double r8025 = im;
        double r8026 = r8025 * r8025;
        double r8027 = r8024 + r8026;
        double r8028 = sqrt(r8027);
        double r8029 = log(r8028);
        double r8030 = 10.0;
        double r8031 = log(r8030);
        double r8032 = r8029 / r8031;
        return r8032;
}


double f_of(float re, float im) {
        float r8033 = 1.0f;
        float r8034 = 10.0f;
        float r8035 = log(r8034);
        float r8036 = sqrt(r8035);
        float r8037 = r8033 / r8036;
        float r8038 = re;
        float r8039 = im;
        float r8040 = hypot(r8038, r8039);
        float r8041 = log(r8040);
        float r8042 = r8037 * r8041;
        float r8043 = r8037 * r8042;
        return r8043;
}

double f_od(double re, double im) {
        double r8044 = 1.0;
        double r8045 = 10.0;
        double r8046 = log(r8045);
        double r8047 = sqrt(r8046);
        double r8048 = r8044 / r8047;
        double r8049 = re;
        double r8050 = im;
        double r8051 = hypot(r8049, r8050);
        double r8052 = log(r8051);
        double r8053 = r8048 * r8052;
        double r8054 = r8048 * r8053;
        return r8054;
}

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 r8055, r8056, r8057, r8058, r8059, r8060, r8061, r8062, r8063, r8064;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8055);
        mpfr_init(r8056);
        mpfr_init(r8057);
        mpfr_init(r8058);
        mpfr_init(r8059);
        mpfr_init(r8060);
        mpfr_init(r8061);
        mpfr_init_set_str(r8062, "10", 10, MPFR_RNDN);
        mpfr_init(r8063);
        mpfr_init(r8064);
}

double f_im(double re, double im) {
        mpfr_set_d(r8055, re, MPFR_RNDN);
        mpfr_mul(r8056, r8055, r8055, MPFR_RNDN);
        mpfr_set_d(r8057, im, MPFR_RNDN);
        mpfr_mul(r8058, r8057, r8057, MPFR_RNDN);
        mpfr_add(r8059, r8056, r8058, MPFR_RNDN);
        mpfr_sqrt(r8060, r8059, MPFR_RNDN);
        mpfr_log(r8061, r8060, MPFR_RNDN);
        ;
        mpfr_log(r8063, r8062, MPFR_RNDN);
        mpfr_div(r8064, r8061, r8063, MPFR_RNDN);
        return mpfr_get_d(r8064, MPFR_RNDN);
}

static mpfr_t r8065, r8066, r8067, r8068, r8069, r8070, r8071, r8072, r8073, r8074, r8075;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8065, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8066, "10", 10, MPFR_RNDN);
        mpfr_init(r8067);
        mpfr_init(r8068);
        mpfr_init(r8069);
        mpfr_init(r8070);
        mpfr_init(r8071);
        mpfr_init(r8072);
        mpfr_init(r8073);
        mpfr_init(r8074);
        mpfr_init(r8075);
}

double f_fm(double re, double im) {
        ;
        ;
        mpfr_log(r8067, r8066, MPFR_RNDN);
        mpfr_sqrt(r8068, r8067, MPFR_RNDN);
        mpfr_div(r8069, r8065, r8068, MPFR_RNDN);
        mpfr_set_d(r8070, re, MPFR_RNDN);
        mpfr_set_d(r8071, im, MPFR_RNDN);
        mpfr_hypot(r8072, r8070, r8071, MPFR_RNDN);
        mpfr_log(r8073, r8072, MPFR_RNDN);
        mpfr_mul(r8074, r8069, r8073, MPFR_RNDN);
        mpfr_mul(r8075, r8069, r8074, MPFR_RNDN);
        return mpfr_get_d(r8075, MPFR_RNDN);
}

static mpfr_t r8076, r8077, r8078, r8079, r8080, r8081, r8082, r8083, r8084, r8085, r8086;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8076, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8077, "10", 10, MPFR_RNDN);
        mpfr_init(r8078);
        mpfr_init(r8079);
        mpfr_init(r8080);
        mpfr_init(r8081);
        mpfr_init(r8082);
        mpfr_init(r8083);
        mpfr_init(r8084);
        mpfr_init(r8085);
        mpfr_init(r8086);
}

double f_dm(double re, double im) {
        ;
        ;
        mpfr_log(r8078, r8077, MPFR_RNDN);
        mpfr_sqrt(r8079, r8078, MPFR_RNDN);
        mpfr_div(r8080, r8076, r8079, MPFR_RNDN);
        mpfr_set_d(r8081, re, MPFR_RNDN);
        mpfr_set_d(r8082, im, MPFR_RNDN);
        mpfr_hypot(r8083, r8081, r8082, MPFR_RNDN);
        mpfr_log(r8084, r8083, MPFR_RNDN);
        mpfr_mul(r8085, r8080, r8084, MPFR_RNDN);
        mpfr_mul(r8086, r8080, r8085, MPFR_RNDN);
        return mpfr_get_d(r8086, MPFR_RNDN);
}

