#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 r8687 = im;
        float r8688 = re;
        float r8689 = atan2(r8687, r8688);
        float r8690 = 10;
        float r8691 = log(r8690);
        float r8692 = r8689 / r8691;
        return r8692;
}

double f_id(double re, double im) {
        double r8693 = im;
        double r8694 = re;
        double r8695 = atan2(r8693, r8694);
        double r8696 = 10;
        double r8697 = log(r8696);
        double r8698 = r8695 / r8697;
        return r8698;
}


double f_of(float re, float im) {
        float r8699 = 1;
        float r8700 = 10;
        float r8701 = log(r8700);
        float r8702 = sqrt(r8701);
        float r8703 = r8699 / r8702;
        float r8704 = im;
        float r8705 = re;
        float r8706 = atan2(r8704, r8705);
        float r8707 = r8706 * r8703;
        float r8708 = r8703 * r8707;
        return r8708;
}

double f_od(double re, double im) {
        double r8709 = 1;
        double r8710 = 10;
        double r8711 = log(r8710);
        double r8712 = sqrt(r8711);
        double r8713 = r8709 / r8712;
        double r8714 = im;
        double r8715 = re;
        double r8716 = atan2(r8714, r8715);
        double r8717 = r8716 * r8713;
        double r8718 = r8713 * r8717;
        return r8718;
}

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 r8719, r8720, r8721, r8722, r8723, r8724;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8719);
        mpfr_init(r8720);
        mpfr_init(r8721);
        mpfr_init_set_str(r8722, "10", 10, MPFR_RNDN);
        mpfr_init(r8723);
        mpfr_init(r8724);
}

double f_im(double re, double im) {
        mpfr_set_d(r8719, im, MPFR_RNDN);
        mpfr_set_d(r8720, re, MPFR_RNDN);
        mpfr_atan2(r8721, r8719, r8720, MPFR_RNDN);
        ;
        mpfr_log(r8723, r8722, MPFR_RNDN);
        mpfr_div(r8724, r8721, r8723, MPFR_RNDN);
        return mpfr_get_d(r8724, MPFR_RNDN);
}

static mpfr_t r8725, r8726, r8727, r8728, r8729, r8730, r8731, r8732, r8733, r8734;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8725, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8726, "10", 10, MPFR_RNDN);
        mpfr_init(r8727);
        mpfr_init(r8728);
        mpfr_init(r8729);
        mpfr_init(r8730);
        mpfr_init(r8731);
        mpfr_init(r8732);
        mpfr_init(r8733);
        mpfr_init(r8734);
}

double f_fm(double re, double im) {
        ;
        ;
        mpfr_log(r8727, r8726, MPFR_RNDN);
        mpfr_sqrt(r8728, r8727, MPFR_RNDN);
        mpfr_div(r8729, r8725, r8728, MPFR_RNDN);
        mpfr_set_d(r8730, im, MPFR_RNDN);
        mpfr_set_d(r8731, re, MPFR_RNDN);
        mpfr_atan2(r8732, r8730, r8731, MPFR_RNDN);
        mpfr_mul(r8733, r8732, r8729, MPFR_RNDN);
        mpfr_mul(r8734, r8729, r8733, MPFR_RNDN);
        return mpfr_get_d(r8734, MPFR_RNDN);
}

static mpfr_t r8735, r8736, r8737, r8738, r8739, r8740, r8741, r8742, r8743, r8744;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8735, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8736, "10", 10, MPFR_RNDN);
        mpfr_init(r8737);
        mpfr_init(r8738);
        mpfr_init(r8739);
        mpfr_init(r8740);
        mpfr_init(r8741);
        mpfr_init(r8742);
        mpfr_init(r8743);
        mpfr_init(r8744);
}

double f_dm(double re, double im) {
        ;
        ;
        mpfr_log(r8737, r8736, MPFR_RNDN);
        mpfr_sqrt(r8738, r8737, MPFR_RNDN);
        mpfr_div(r8739, r8735, r8738, MPFR_RNDN);
        mpfr_set_d(r8740, im, MPFR_RNDN);
        mpfr_set_d(r8741, re, MPFR_RNDN);
        mpfr_atan2(r8742, r8740, r8741, MPFR_RNDN);
        mpfr_mul(r8743, r8742, r8739, MPFR_RNDN);
        mpfr_mul(r8744, r8739, r8743, MPFR_RNDN);
        return mpfr_get_d(r8744, MPFR_RNDN);
}

