#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 r9003 = im;
        float r9004 = re;
        float r9005 = atan2(r9003, r9004);
        float r9006 = 10;
        float r9007 = log(r9006);
        float r9008 = r9005 / r9007;
        return r9008;
}

double f_id(double re, double im) {
        double r9009 = im;
        double r9010 = re;
        double r9011 = atan2(r9009, r9010);
        double r9012 = 10;
        double r9013 = log(r9012);
        double r9014 = r9011 / r9013;
        return r9014;
}


double f_of(float re, float im) {
        float r9015 = 1;
        float r9016 = 10;
        float r9017 = log(r9016);
        float r9018 = sqrt(r9017);
        float r9019 = r9015 / r9018;
        float r9020 = im;
        float r9021 = re;
        float r9022 = atan2(r9020, r9021);
        float r9023 = r9022 * r9019;
        float r9024 = r9019 * r9023;
        return r9024;
}

double f_od(double re, double im) {
        double r9025 = 1;
        double r9026 = 10;
        double r9027 = log(r9026);
        double r9028 = sqrt(r9027);
        double r9029 = r9025 / r9028;
        double r9030 = im;
        double r9031 = re;
        double r9032 = atan2(r9030, r9031);
        double r9033 = r9032 * r9029;
        double r9034 = r9029 * r9033;
        return r9034;
}

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 r9035, r9036, r9037, r9038, r9039, r9040;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9035);
        mpfr_init(r9036);
        mpfr_init(r9037);
        mpfr_init_set_str(r9038, "10", 10, MPFR_RNDN);
        mpfr_init(r9039);
        mpfr_init(r9040);
}

double f_im(double re, double im) {
        mpfr_set_d(r9035, im, MPFR_RNDN);
        mpfr_set_d(r9036, re, MPFR_RNDN);
        mpfr_atan2(r9037, r9035, r9036, MPFR_RNDN);
        ;
        mpfr_log(r9039, r9038, MPFR_RNDN);
        mpfr_div(r9040, r9037, r9039, MPFR_RNDN);
        return mpfr_get_d(r9040, MPFR_RNDN);
}

static mpfr_t r9041, r9042, r9043, r9044, r9045, r9046, r9047, r9048, r9049, r9050;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9041, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r9042, "10", 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(r9050);
}

double f_fm(double re, double im) {
        ;
        ;
        mpfr_log(r9043, r9042, MPFR_RNDN);
        mpfr_sqrt(r9044, r9043, MPFR_RNDN);
        mpfr_div(r9045, r9041, r9044, MPFR_RNDN);
        mpfr_set_d(r9046, im, MPFR_RNDN);
        mpfr_set_d(r9047, re, MPFR_RNDN);
        mpfr_atan2(r9048, r9046, r9047, MPFR_RNDN);
        mpfr_mul(r9049, r9048, r9045, MPFR_RNDN);
        mpfr_mul(r9050, r9045, r9049, MPFR_RNDN);
        return mpfr_get_d(r9050, MPFR_RNDN);
}

static mpfr_t r9051, r9052, r9053, r9054, r9055, r9056, r9057, r9058, r9059, r9060;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9051, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r9052, "10", 10, MPFR_RNDN);
        mpfr_init(r9053);
        mpfr_init(r9054);
        mpfr_init(r9055);
        mpfr_init(r9056);
        mpfr_init(r9057);
        mpfr_init(r9058);
        mpfr_init(r9059);
        mpfr_init(r9060);
}

double f_dm(double re, double im) {
        ;
        ;
        mpfr_log(r9053, r9052, MPFR_RNDN);
        mpfr_sqrt(r9054, r9053, MPFR_RNDN);
        mpfr_div(r9055, r9051, r9054, MPFR_RNDN);
        mpfr_set_d(r9056, im, MPFR_RNDN);
        mpfr_set_d(r9057, re, MPFR_RNDN);
        mpfr_atan2(r9058, r9056, r9057, MPFR_RNDN);
        mpfr_mul(r9059, r9058, r9055, MPFR_RNDN);
        mpfr_mul(r9060, r9055, r9059, MPFR_RNDN);
        return mpfr_get_d(r9060, MPFR_RNDN);
}

