#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 r8588 = im;
        float r8589 = re;
        float r8590 = atan2(r8588, r8589);
        float r8591 = 10.0f;
        float r8592 = log(r8591);
        float r8593 = r8590 / r8592;
        return r8593;
}

double f_id(double re, double im) {
        double r8594 = im;
        double r8595 = re;
        double r8596 = atan2(r8594, r8595);
        double r8597 = 10.0;
        double r8598 = log(r8597);
        double r8599 = r8596 / r8598;
        return r8599;
}


double f_of(float re, float im) {
        float r8600 = 1.0f;
        float r8601 = 10.0f;
        float r8602 = log(r8601);
        float r8603 = sqrt(r8602);
        float r8604 = r8600 / r8603;
        float r8605 = im;
        float r8606 = re;
        float r8607 = atan2(r8605, r8606);
        float r8608 = sqrt(r8604);
        float r8609 = r8607 * r8608;
        float r8610 = sqrt(r8608);
        float r8611 = r8609 * r8610;
        float r8612 = r8611 * r8610;
        float r8613 = r8604 * r8612;
        return r8613;
}

double f_od(double re, double im) {
        double r8614 = 1.0;
        double r8615 = 10.0;
        double r8616 = log(r8615);
        double r8617 = sqrt(r8616);
        double r8618 = r8614 / r8617;
        double r8619 = im;
        double r8620 = re;
        double r8621 = atan2(r8619, r8620);
        double r8622 = sqrt(r8618);
        double r8623 = r8621 * r8622;
        double r8624 = sqrt(r8622);
        double r8625 = r8623 * r8624;
        double r8626 = r8625 * r8624;
        double r8627 = r8618 * r8626;
        return r8627;
}

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 r8628, r8629, r8630, r8631, r8632, r8633;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8628);
        mpfr_init(r8629);
        mpfr_init(r8630);
        mpfr_init_set_str(r8631, "10", 10, MPFR_RNDN);
        mpfr_init(r8632);
        mpfr_init(r8633);
}

double f_im(double re, double im) {
        mpfr_set_d(r8628, im, MPFR_RNDN);
        mpfr_set_d(r8629, re, MPFR_RNDN);
        mpfr_atan2(r8630, r8628, r8629, MPFR_RNDN);
        ;
        mpfr_log(r8632, r8631, MPFR_RNDN);
        mpfr_div(r8633, r8630, r8632, MPFR_RNDN);
        return mpfr_get_d(r8633, MPFR_RNDN);
}

static mpfr_t r8634, r8635, r8636, r8637, r8638, r8639, r8640, r8641, r8642, r8643, r8644, r8645, r8646, r8647;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8634, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8635, "10", 10, MPFR_RNDN);
        mpfr_init(r8636);
        mpfr_init(r8637);
        mpfr_init(r8638);
        mpfr_init(r8639);
        mpfr_init(r8640);
        mpfr_init(r8641);
        mpfr_init(r8642);
        mpfr_init(r8643);
        mpfr_init(r8644);
        mpfr_init(r8645);
        mpfr_init(r8646);
        mpfr_init(r8647);
}

double f_fm(double re, double im) {
        ;
        ;
        mpfr_log(r8636, r8635, MPFR_RNDN);
        mpfr_sqrt(r8637, r8636, MPFR_RNDN);
        mpfr_div(r8638, r8634, r8637, MPFR_RNDN);
        mpfr_set_d(r8639, im, MPFR_RNDN);
        mpfr_set_d(r8640, re, MPFR_RNDN);
        mpfr_atan2(r8641, r8639, r8640, MPFR_RNDN);
        mpfr_sqrt(r8642, r8638, MPFR_RNDN);
        mpfr_mul(r8643, r8641, r8642, MPFR_RNDN);
        mpfr_sqrt(r8644, r8642, MPFR_RNDN);
        mpfr_mul(r8645, r8643, r8644, MPFR_RNDN);
        mpfr_mul(r8646, r8645, r8644, MPFR_RNDN);
        mpfr_mul(r8647, r8638, r8646, MPFR_RNDN);
        return mpfr_get_d(r8647, MPFR_RNDN);
}

static mpfr_t r8648, r8649, r8650, r8651, r8652, r8653, r8654, r8655, r8656, r8657, r8658, r8659, r8660, r8661;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8648, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8649, "10", 10, MPFR_RNDN);
        mpfr_init(r8650);
        mpfr_init(r8651);
        mpfr_init(r8652);
        mpfr_init(r8653);
        mpfr_init(r8654);
        mpfr_init(r8655);
        mpfr_init(r8656);
        mpfr_init(r8657);
        mpfr_init(r8658);
        mpfr_init(r8659);
        mpfr_init(r8660);
        mpfr_init(r8661);
}

double f_dm(double re, double im) {
        ;
        ;
        mpfr_log(r8650, r8649, MPFR_RNDN);
        mpfr_sqrt(r8651, r8650, MPFR_RNDN);
        mpfr_div(r8652, r8648, r8651, MPFR_RNDN);
        mpfr_set_d(r8653, im, MPFR_RNDN);
        mpfr_set_d(r8654, re, MPFR_RNDN);
        mpfr_atan2(r8655, r8653, r8654, MPFR_RNDN);
        mpfr_sqrt(r8656, r8652, MPFR_RNDN);
        mpfr_mul(r8657, r8655, r8656, MPFR_RNDN);
        mpfr_sqrt(r8658, r8656, MPFR_RNDN);
        mpfr_mul(r8659, r8657, r8658, MPFR_RNDN);
        mpfr_mul(r8660, r8659, r8658, MPFR_RNDN);
        mpfr_mul(r8661, r8652, r8660, MPFR_RNDN);
        return mpfr_get_d(r8661, MPFR_RNDN);
}

