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

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

double f_if(float re, float im) {
        float r8134 = im;
        float r8135 = re;
        float r8136 = atan2(r8134, r8135);
        float r8137 = 10.0f;
        float r8138 = log(r8137);
        float r8139 = r8136 / r8138;
        return r8139;
}

double f_id(double re, double im) {
        double r8140 = im;
        double r8141 = re;
        double r8142 = atan2(r8140, r8141);
        double r8143 = 10.0;
        double r8144 = log(r8143);
        double r8145 = r8142 / r8144;
        return r8145;
}


double f_of(float re, float im) {
        float r8146 = 1.0f;
        float r8147 = 10.0f;
        float r8148 = log(r8147);
        float r8149 = sqrt(r8148);
        float r8150 = r8146 / r8149;
        float r8151 = sqrt(r8150);
        float r8152 = sqrt(r8151);
        float r8153 = im;
        float r8154 = re;
        float r8155 = atan2(r8153, r8154);
        float r8156 = r8155 * r8150;
        float r8157 = r8151 * r8156;
        float r8158 = r8157 * r8152;
        float r8159 = r8152 * r8158;
        return r8159;
}

double f_od(double re, double im) {
        double r8160 = 1.0;
        double r8161 = 10.0;
        double r8162 = log(r8161);
        double r8163 = sqrt(r8162);
        double r8164 = r8160 / r8163;
        double r8165 = sqrt(r8164);
        double r8166 = sqrt(r8165);
        double r8167 = im;
        double r8168 = re;
        double r8169 = atan2(r8167, r8168);
        double r8170 = r8169 * r8164;
        double r8171 = r8165 * r8170;
        double r8172 = r8171 * r8166;
        double r8173 = r8166 * r8172;
        return r8173;
}

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 r8174, r8175, r8176, r8177, r8178, r8179;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8174);
        mpfr_init(r8175);
        mpfr_init(r8176);
        mpfr_init_set_str(r8177, "10", 10, MPFR_RNDN);
        mpfr_init(r8178);
        mpfr_init(r8179);
}

double f_im(double re, double im) {
        mpfr_set_d(r8174, im, MPFR_RNDN);
        mpfr_set_d(r8175, re, MPFR_RNDN);
        mpfr_atan2(r8176, r8174, r8175, MPFR_RNDN);
        ;
        mpfr_log(r8178, r8177, MPFR_RNDN);
        mpfr_div(r8179, r8176, r8178, MPFR_RNDN);
        return mpfr_get_d(r8179, MPFR_RNDN);
}

static mpfr_t r8180, r8181, r8182, r8183, r8184, r8185, r8186, r8187, r8188, r8189, r8190, r8191, r8192, r8193;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8180, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8181, "10", 10, MPFR_RNDN);
        mpfr_init(r8182);
        mpfr_init(r8183);
        mpfr_init(r8184);
        mpfr_init(r8185);
        mpfr_init(r8186);
        mpfr_init(r8187);
        mpfr_init(r8188);
        mpfr_init(r8189);
        mpfr_init(r8190);
        mpfr_init(r8191);
        mpfr_init(r8192);
        mpfr_init(r8193);
}

double f_fm(double re, double im) {
        ;
        ;
        mpfr_log(r8182, r8181, MPFR_RNDN);
        mpfr_sqrt(r8183, r8182, MPFR_RNDN);
        mpfr_div(r8184, r8180, r8183, MPFR_RNDN);
        mpfr_sqrt(r8185, r8184, MPFR_RNDN);
        mpfr_sqrt(r8186, r8185, MPFR_RNDN);
        mpfr_set_d(r8187, im, MPFR_RNDN);
        mpfr_set_d(r8188, re, MPFR_RNDN);
        mpfr_atan2(r8189, r8187, r8188, MPFR_RNDN);
        mpfr_mul(r8190, r8189, r8184, MPFR_RNDN);
        mpfr_mul(r8191, r8185, r8190, MPFR_RNDN);
        mpfr_mul(r8192, r8191, r8186, MPFR_RNDN);
        mpfr_mul(r8193, r8186, r8192, MPFR_RNDN);
        return mpfr_get_d(r8193, MPFR_RNDN);
}

static mpfr_t r8194, r8195, r8196, r8197, r8198, r8199, r8200, r8201, r8202, r8203, r8204, r8205, r8206, r8207;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8194, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8195, "10", 10, MPFR_RNDN);
        mpfr_init(r8196);
        mpfr_init(r8197);
        mpfr_init(r8198);
        mpfr_init(r8199);
        mpfr_init(r8200);
        mpfr_init(r8201);
        mpfr_init(r8202);
        mpfr_init(r8203);
        mpfr_init(r8204);
        mpfr_init(r8205);
        mpfr_init(r8206);
        mpfr_init(r8207);
}

double f_dm(double re, double im) {
        ;
        ;
        mpfr_log(r8196, r8195, MPFR_RNDN);
        mpfr_sqrt(r8197, r8196, MPFR_RNDN);
        mpfr_div(r8198, r8194, r8197, MPFR_RNDN);
        mpfr_sqrt(r8199, r8198, MPFR_RNDN);
        mpfr_sqrt(r8200, r8199, MPFR_RNDN);
        mpfr_set_d(r8201, im, MPFR_RNDN);
        mpfr_set_d(r8202, re, MPFR_RNDN);
        mpfr_atan2(r8203, r8201, r8202, MPFR_RNDN);
        mpfr_mul(r8204, r8203, r8198, MPFR_RNDN);
        mpfr_mul(r8205, r8199, r8204, MPFR_RNDN);
        mpfr_mul(r8206, r8205, r8200, MPFR_RNDN);
        mpfr_mul(r8207, r8200, r8206, MPFR_RNDN);
        return mpfr_get_d(r8207, MPFR_RNDN);
}

