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

double f_id(double re, double im) {
        double r8090 = im;
        double r8091 = re;
        double r8092 = atan2(r8090, r8091);
        double r8093 = 10.0;
        double r8094 = log(r8093);
        double r8095 = r8092 / r8094;
        return r8095;
}


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

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

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 r8124, r8125, r8126, r8127, r8128, r8129;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8124);
        mpfr_init(r8125);
        mpfr_init(r8126);
        mpfr_init_set_str(r8127, "10", 10, MPFR_RNDN);
        mpfr_init(r8128);
        mpfr_init(r8129);
}

double f_im(double re, double im) {
        mpfr_set_d(r8124, im, MPFR_RNDN);
        mpfr_set_d(r8125, re, MPFR_RNDN);
        mpfr_atan2(r8126, r8124, r8125, MPFR_RNDN);
        ;
        mpfr_log(r8128, r8127, MPFR_RNDN);
        mpfr_div(r8129, r8126, r8128, MPFR_RNDN);
        return mpfr_get_d(r8129, MPFR_RNDN);
}

static mpfr_t r8130, r8131, r8132, r8133, r8134, r8135, r8136, r8137, r8138, r8139, r8140, r8141, r8142, r8143;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8130, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8131, "10", 10, MPFR_RNDN);
        mpfr_init(r8132);
        mpfr_init(r8133);
        mpfr_init(r8134);
        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);
}

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

static mpfr_t r8144, r8145, r8146, r8147, r8148, r8149, r8150, r8151, r8152, r8153, r8154, r8155, r8156, r8157;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8144, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8145, "10", 10, MPFR_RNDN);
        mpfr_init(r8146);
        mpfr_init(r8147);
        mpfr_init(r8148);
        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);
}

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

