#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 r8610 = im;
        float r8611 = re;
        float r8612 = atan2(r8610, r8611);
        float r8613 = 10.0f;
        float r8614 = log(r8613);
        float r8615 = r8612 / r8614;
        return r8615;
}

double f_id(double re, double im) {
        double r8616 = im;
        double r8617 = re;
        double r8618 = atan2(r8616, r8617);
        double r8619 = 10.0;
        double r8620 = log(r8619);
        double r8621 = r8618 / r8620;
        return r8621;
}


double f_of(float re, float im) {
        float r8622 = 1.0f;
        float r8623 = 10.0f;
        float r8624 = log(r8623);
        float r8625 = sqrt(r8624);
        float r8626 = r8622 / r8625;
        float r8627 = sqrt(r8626);
        float r8628 = im;
        float r8629 = re;
        float r8630 = atan2(r8628, r8629);
        float r8631 = r8626 * r8630;
        float r8632 = r8627 * r8631;
        float r8633 = sqrt(r8627);
        float r8634 = r8632 * r8633;
        float r8635 = r8634 * r8633;
        return r8635;
}

double f_od(double re, double im) {
        double r8636 = 1.0;
        double r8637 = 10.0;
        double r8638 = log(r8637);
        double r8639 = sqrt(r8638);
        double r8640 = r8636 / r8639;
        double r8641 = sqrt(r8640);
        double r8642 = im;
        double r8643 = re;
        double r8644 = atan2(r8642, r8643);
        double r8645 = r8640 * r8644;
        double r8646 = r8641 * r8645;
        double r8647 = sqrt(r8641);
        double r8648 = r8646 * r8647;
        double r8649 = r8648 * r8647;
        return r8649;
}

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 r8650, r8651, r8652, r8653, r8654, r8655;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8650);
        mpfr_init(r8651);
        mpfr_init(r8652);
        mpfr_init_set_str(r8653, "10", 10, MPFR_RNDN);
        mpfr_init(r8654);
        mpfr_init(r8655);
}

double f_im(double re, double im) {
        mpfr_set_d(r8650, im, MPFR_RNDN);
        mpfr_set_d(r8651, re, MPFR_RNDN);
        mpfr_atan2(r8652, r8650, r8651, MPFR_RNDN);
        ;
        mpfr_log(r8654, r8653, MPFR_RNDN);
        mpfr_div(r8655, r8652, r8654, MPFR_RNDN);
        return mpfr_get_d(r8655, MPFR_RNDN);
}

static mpfr_t r8656, r8657, r8658, r8659, r8660, r8661, r8662, r8663, r8664, r8665, r8666, r8667, r8668, r8669;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8656, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8657, "10", 10, MPFR_RNDN);
        mpfr_init(r8658);
        mpfr_init(r8659);
        mpfr_init(r8660);
        mpfr_init(r8661);
        mpfr_init(r8662);
        mpfr_init(r8663);
        mpfr_init(r8664);
        mpfr_init(r8665);
        mpfr_init(r8666);
        mpfr_init(r8667);
        mpfr_init(r8668);
        mpfr_init(r8669);
}

double f_fm(double re, double im) {
        ;
        ;
        mpfr_log(r8658, r8657, MPFR_RNDN);
        mpfr_sqrt(r8659, r8658, MPFR_RNDN);
        mpfr_div(r8660, r8656, r8659, MPFR_RNDN);
        mpfr_sqrt(r8661, r8660, MPFR_RNDN);
        mpfr_set_d(r8662, im, MPFR_RNDN);
        mpfr_set_d(r8663, re, MPFR_RNDN);
        mpfr_atan2(r8664, r8662, r8663, MPFR_RNDN);
        mpfr_mul(r8665, r8660, r8664, MPFR_RNDN);
        mpfr_mul(r8666, r8661, r8665, MPFR_RNDN);
        mpfr_sqrt(r8667, r8661, MPFR_RNDN);
        mpfr_mul(r8668, r8666, r8667, MPFR_RNDN);
        mpfr_mul(r8669, r8668, r8667, MPFR_RNDN);
        return mpfr_get_d(r8669, MPFR_RNDN);
}

static mpfr_t r8670, r8671, r8672, r8673, r8674, r8675, r8676, r8677, r8678, r8679, r8680, r8681, r8682, r8683;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8670, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8671, "10", 10, MPFR_RNDN);
        mpfr_init(r8672);
        mpfr_init(r8673);
        mpfr_init(r8674);
        mpfr_init(r8675);
        mpfr_init(r8676);
        mpfr_init(r8677);
        mpfr_init(r8678);
        mpfr_init(r8679);
        mpfr_init(r8680);
        mpfr_init(r8681);
        mpfr_init(r8682);
        mpfr_init(r8683);
}

double f_dm(double re, double im) {
        ;
        ;
        mpfr_log(r8672, r8671, MPFR_RNDN);
        mpfr_sqrt(r8673, r8672, MPFR_RNDN);
        mpfr_div(r8674, r8670, r8673, MPFR_RNDN);
        mpfr_sqrt(r8675, r8674, MPFR_RNDN);
        mpfr_set_d(r8676, im, MPFR_RNDN);
        mpfr_set_d(r8677, re, MPFR_RNDN);
        mpfr_atan2(r8678, r8676, r8677, MPFR_RNDN);
        mpfr_mul(r8679, r8674, r8678, MPFR_RNDN);
        mpfr_mul(r8680, r8675, r8679, MPFR_RNDN);
        mpfr_sqrt(r8681, r8675, MPFR_RNDN);
        mpfr_mul(r8682, r8680, r8681, MPFR_RNDN);
        mpfr_mul(r8683, r8682, r8681, MPFR_RNDN);
        return mpfr_get_d(r8683, MPFR_RNDN);
}

