#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 r8087 = im;
        float r8088 = re;
        float r8089 = atan2(r8087, r8088);
        float r8090 = 10.0f;
        float r8091 = log(r8090);
        float r8092 = r8089 / r8091;
        return r8092;
}

double f_id(double re, double im) {
        double r8093 = im;
        double r8094 = re;
        double r8095 = atan2(r8093, r8094);
        double r8096 = 10.0;
        double r8097 = log(r8096);
        double r8098 = r8095 / r8097;
        return r8098;
}


double f_of(float re, float im) {
        float r8099 = 1.0f;
        float r8100 = 10.0f;
        float r8101 = log(r8100);
        float r8102 = sqrt(r8101);
        float r8103 = r8099 / r8102;
        float r8104 = im;
        float r8105 = re;
        float r8106 = atan2(r8104, r8105);
        float r8107 = sqrt(r8103);
        float r8108 = r8106 * r8107;
        float r8109 = sqrt(r8107);
        float r8110 = r8108 * r8109;
        float r8111 = r8110 * r8109;
        float r8112 = r8103 * r8111;
        return r8112;
}

double f_od(double re, double im) {
        double r8113 = 1.0;
        double r8114 = 10.0;
        double r8115 = log(r8114);
        double r8116 = sqrt(r8115);
        double r8117 = r8113 / r8116;
        double r8118 = im;
        double r8119 = re;
        double r8120 = atan2(r8118, r8119);
        double r8121 = sqrt(r8117);
        double r8122 = r8120 * r8121;
        double r8123 = sqrt(r8121);
        double r8124 = r8122 * r8123;
        double r8125 = r8124 * r8123;
        double r8126 = r8117 * r8125;
        return r8126;
}

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 r8127, r8128, r8129, r8130, r8131, r8132;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8127);
        mpfr_init(r8128);
        mpfr_init(r8129);
        mpfr_init_set_str(r8130, "10", 10, MPFR_RNDN);
        mpfr_init(r8131);
        mpfr_init(r8132);
}

double f_im(double re, double im) {
        mpfr_set_d(r8127, im, MPFR_RNDN);
        mpfr_set_d(r8128, re, MPFR_RNDN);
        mpfr_atan2(r8129, r8127, r8128, MPFR_RNDN);
        ;
        mpfr_log(r8131, r8130, MPFR_RNDN);
        mpfr_div(r8132, r8129, r8131, MPFR_RNDN);
        return mpfr_get_d(r8132, MPFR_RNDN);
}

static mpfr_t r8133, r8134, r8135, r8136, r8137, r8138, r8139, r8140, r8141, r8142, r8143, r8144, r8145, r8146;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8133, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8134, "10", 10, MPFR_RNDN);
        mpfr_init(r8135);
        mpfr_init(r8136);
        mpfr_init(r8137);
        mpfr_init(r8138);
        mpfr_init(r8139);
        mpfr_init(r8140);
        mpfr_init(r8141);
        mpfr_init(r8142);
        mpfr_init(r8143);
        mpfr_init(r8144);
        mpfr_init(r8145);
        mpfr_init(r8146);
}

double f_fm(double re, double im) {
        ;
        ;
        mpfr_log(r8135, r8134, MPFR_RNDN);
        mpfr_sqrt(r8136, r8135, MPFR_RNDN);
        mpfr_div(r8137, r8133, r8136, MPFR_RNDN);
        mpfr_set_d(r8138, im, MPFR_RNDN);
        mpfr_set_d(r8139, re, MPFR_RNDN);
        mpfr_atan2(r8140, r8138, r8139, MPFR_RNDN);
        mpfr_sqrt(r8141, r8137, MPFR_RNDN);
        mpfr_mul(r8142, r8140, r8141, MPFR_RNDN);
        mpfr_sqrt(r8143, r8141, MPFR_RNDN);
        mpfr_mul(r8144, r8142, r8143, MPFR_RNDN);
        mpfr_mul(r8145, r8144, r8143, MPFR_RNDN);
        mpfr_mul(r8146, r8137, r8145, MPFR_RNDN);
        return mpfr_get_d(r8146, MPFR_RNDN);
}

static mpfr_t r8147, r8148, r8149, r8150, r8151, r8152, r8153, r8154, r8155, r8156, r8157, r8158, r8159, r8160;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8147, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8148, "10", 10, MPFR_RNDN);
        mpfr_init(r8149);
        mpfr_init(r8150);
        mpfr_init(r8151);
        mpfr_init(r8152);
        mpfr_init(r8153);
        mpfr_init(r8154);
        mpfr_init(r8155);
        mpfr_init(r8156);
        mpfr_init(r8157);
        mpfr_init(r8158);
        mpfr_init(r8159);
        mpfr_init(r8160);
}

double f_dm(double re, double im) {
        ;
        ;
        mpfr_log(r8149, r8148, MPFR_RNDN);
        mpfr_sqrt(r8150, r8149, MPFR_RNDN);
        mpfr_div(r8151, r8147, r8150, MPFR_RNDN);
        mpfr_set_d(r8152, im, MPFR_RNDN);
        mpfr_set_d(r8153, re, MPFR_RNDN);
        mpfr_atan2(r8154, r8152, r8153, MPFR_RNDN);
        mpfr_sqrt(r8155, r8151, MPFR_RNDN);
        mpfr_mul(r8156, r8154, r8155, MPFR_RNDN);
        mpfr_sqrt(r8157, r8155, MPFR_RNDN);
        mpfr_mul(r8158, r8156, r8157, MPFR_RNDN);
        mpfr_mul(r8159, r8158, r8157, MPFR_RNDN);
        mpfr_mul(r8160, r8151, r8159, MPFR_RNDN);
        return mpfr_get_d(r8160, MPFR_RNDN);
}

