#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "math.log/2 on complex, real part";

double f_if(float re, float im, float base) {
        float r8684 = re;
        float r8685 = r8684 * r8684;
        float r8686 = im;
        float r8687 = r8686 * r8686;
        float r8688 = r8685 + r8687;
        float r8689 = sqrt(r8688);
        float r8690 = log(r8689);
        float r8691 = base;
        float r8692 = log(r8691);
        float r8693 = r8690 * r8692;
        float r8694 = atan2(r8686, r8684);
        float r8695 = 0.0f;
        float r8696 = r8694 * r8695;
        float r8697 = r8693 + r8696;
        float r8698 = r8692 * r8692;
        float r8699 = r8695 * r8695;
        float r8700 = r8698 + r8699;
        float r8701 = r8697 / r8700;
        return r8701;
}

double f_id(double re, double im, double base) {
        double r8702 = re;
        double r8703 = r8702 * r8702;
        double r8704 = im;
        double r8705 = r8704 * r8704;
        double r8706 = r8703 + r8705;
        double r8707 = sqrt(r8706);
        double r8708 = log(r8707);
        double r8709 = base;
        double r8710 = log(r8709);
        double r8711 = r8708 * r8710;
        double r8712 = atan2(r8704, r8702);
        double r8713 = 0.0;
        double r8714 = r8712 * r8713;
        double r8715 = r8711 + r8714;
        double r8716 = r8710 * r8710;
        double r8717 = r8713 * r8713;
        double r8718 = r8716 + r8717;
        double r8719 = r8715 / r8718;
        return r8719;
}


double f_of(float re, float im, float base) {
        float r8720 = re;
        float r8721 = -3.128434757515767e+93f;
        bool r8722 = r8720 <= r8721;
        float r8723 = base;
        float r8724 = log(r8723);
        float r8725 = -r8720;
        float r8726 = log(r8725);
        float r8727 = r8724 * r8726;
        float r8728 = r8724 * r8724;
        float r8729 = r8727 / r8728;
        float r8730 = -4.59995512849691e-275f;
        bool r8731 = r8720 <= r8730;
        float r8732 = im;
        float r8733 = r8732 * r8732;
        float r8734 = r8720 * r8720;
        float r8735 = r8733 + r8734;
        float r8736 = sqrt(r8735);
        float r8737 = log(r8736);
        float r8738 = r8737 / r8724;
        float r8739 = 3.318561597151413e-216f;
        bool r8740 = r8720 <= r8739;
        float r8741 = log(r8732);
        float r8742 = r8741 / r8724;
        float r8743 = 4.6787337147058096e+92f;
        bool r8744 = r8720 <= r8743;
        float r8745 = log(r8720);
        float r8746 = r8745 / r8724;
        float r8747 = r8744 ? r8738 : r8746;
        float r8748 = r8740 ? r8742 : r8747;
        float r8749 = r8731 ? r8738 : r8748;
        float r8750 = r8722 ? r8729 : r8749;
        return r8750;
}

double f_od(double re, double im, double base) {
        double r8751 = re;
        double r8752 = -3.128434757515767e+93;
        bool r8753 = r8751 <= r8752;
        double r8754 = base;
        double r8755 = log(r8754);
        double r8756 = -r8751;
        double r8757 = log(r8756);
        double r8758 = r8755 * r8757;
        double r8759 = r8755 * r8755;
        double r8760 = r8758 / r8759;
        double r8761 = -4.59995512849691e-275;
        bool r8762 = r8751 <= r8761;
        double r8763 = im;
        double r8764 = r8763 * r8763;
        double r8765 = r8751 * r8751;
        double r8766 = r8764 + r8765;
        double r8767 = sqrt(r8766);
        double r8768 = log(r8767);
        double r8769 = r8768 / r8755;
        double r8770 = 3.318561597151413e-216;
        bool r8771 = r8751 <= r8770;
        double r8772 = log(r8763);
        double r8773 = r8772 / r8755;
        double r8774 = 4.6787337147058096e+92;
        bool r8775 = r8751 <= r8774;
        double r8776 = log(r8751);
        double r8777 = r8776 / r8755;
        double r8778 = r8775 ? r8769 : r8777;
        double r8779 = r8771 ? r8773 : r8778;
        double r8780 = r8762 ? r8769 : r8779;
        double r8781 = r8753 ? r8760 : r8780;
        return r8781;
}

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 r8782, r8783, r8784, r8785, r8786, r8787, r8788, r8789, r8790, r8791, r8792, r8793, r8794, r8795, r8796, r8797, r8798, r8799;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8782);
        mpfr_init(r8783);
        mpfr_init(r8784);
        mpfr_init(r8785);
        mpfr_init(r8786);
        mpfr_init(r8787);
        mpfr_init(r8788);
        mpfr_init(r8789);
        mpfr_init(r8790);
        mpfr_init(r8791);
        mpfr_init(r8792);
        mpfr_init_set_str(r8793, "0", 10, MPFR_RNDN);
        mpfr_init(r8794);
        mpfr_init(r8795);
        mpfr_init(r8796);
        mpfr_init(r8797);
        mpfr_init(r8798);
        mpfr_init(r8799);
}

double f_im(double re, double im, double base) {
        mpfr_set_d(r8782, re, MPFR_RNDN);
        mpfr_mul(r8783, r8782, r8782, MPFR_RNDN);
        mpfr_set_d(r8784, im, MPFR_RNDN);
        mpfr_mul(r8785, r8784, r8784, MPFR_RNDN);
        mpfr_add(r8786, r8783, r8785, MPFR_RNDN);
        mpfr_sqrt(r8787, r8786, MPFR_RNDN);
        mpfr_log(r8788, r8787, MPFR_RNDN);
        mpfr_set_d(r8789, base, MPFR_RNDN);
        mpfr_log(r8790, r8789, MPFR_RNDN);
        mpfr_mul(r8791, r8788, r8790, MPFR_RNDN);
        mpfr_atan2(r8792, r8784, r8782, MPFR_RNDN);
        ;
        mpfr_mul(r8794, r8792, r8793, MPFR_RNDN);
        mpfr_add(r8795, r8791, r8794, MPFR_RNDN);
        mpfr_mul(r8796, r8790, r8790, MPFR_RNDN);
        mpfr_mul(r8797, r8793, r8793, MPFR_RNDN);
        mpfr_add(r8798, r8796, r8797, MPFR_RNDN);
        mpfr_div(r8799, r8795, r8798, MPFR_RNDN);
        return mpfr_get_d(r8799, MPFR_RNDN);
}

static mpfr_t r8800, r8801, r8802, r8803, r8804, r8805, r8806, r8807, r8808, r8809, r8810, r8811, r8812, r8813, r8814, r8815, r8816, r8817, r8818, r8819, r8820, r8821, r8822, r8823, r8824, r8825, r8826, r8827, r8828, r8829, r8830;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8800);
        mpfr_init_set_str(r8801, "-3.128434757515767e+93", 10, MPFR_RNDN);
        mpfr_init(r8802);
        mpfr_init(r8803);
        mpfr_init(r8804);
        mpfr_init(r8805);
        mpfr_init(r8806);
        mpfr_init(r8807);
        mpfr_init(r8808);
        mpfr_init(r8809);
        mpfr_init_set_str(r8810, "-4.59995512849691e-275", 10, MPFR_RNDN);
        mpfr_init(r8811);
        mpfr_init(r8812);
        mpfr_init(r8813);
        mpfr_init(r8814);
        mpfr_init(r8815);
        mpfr_init(r8816);
        mpfr_init(r8817);
        mpfr_init(r8818);
        mpfr_init_set_str(r8819, "3.318561597151413e-216", 10, MPFR_RNDN);
        mpfr_init(r8820);
        mpfr_init(r8821);
        mpfr_init(r8822);
        mpfr_init_set_str(r8823, "4.6787337147058096e+92", 10, MPFR_RNDN);
        mpfr_init(r8824);
        mpfr_init(r8825);
        mpfr_init(r8826);
        mpfr_init(r8827);
        mpfr_init(r8828);
        mpfr_init(r8829);
        mpfr_init(r8830);
}

double f_fm(double re, double im, double base) {
        mpfr_set_d(r8800, re, MPFR_RNDN);
        ;
        mpfr_set_si(r8802, mpfr_cmp(r8800, r8801) <= 0, MPFR_RNDN);
        mpfr_set_d(r8803, base, MPFR_RNDN);
        mpfr_log(r8804, r8803, MPFR_RNDN);
        mpfr_neg(r8805, r8800, MPFR_RNDN);
        mpfr_log(r8806, r8805, MPFR_RNDN);
        mpfr_mul(r8807, r8804, r8806, MPFR_RNDN);
        mpfr_mul(r8808, r8804, r8804, MPFR_RNDN);
        mpfr_div(r8809, r8807, r8808, MPFR_RNDN);
        ;
        mpfr_set_si(r8811, mpfr_cmp(r8800, r8810) <= 0, MPFR_RNDN);
        mpfr_set_d(r8812, im, MPFR_RNDN);
        mpfr_mul(r8813, r8812, r8812, MPFR_RNDN);
        mpfr_mul(r8814, r8800, r8800, MPFR_RNDN);
        mpfr_add(r8815, r8813, r8814, MPFR_RNDN);
        mpfr_sqrt(r8816, r8815, MPFR_RNDN);
        mpfr_log(r8817, r8816, MPFR_RNDN);
        mpfr_div(r8818, r8817, r8804, MPFR_RNDN);
        ;
        mpfr_set_si(r8820, mpfr_cmp(r8800, r8819) <= 0, MPFR_RNDN);
        mpfr_log(r8821, r8812, MPFR_RNDN);
        mpfr_div(r8822, r8821, r8804, MPFR_RNDN);
        ;
        mpfr_set_si(r8824, mpfr_cmp(r8800, r8823) <= 0, MPFR_RNDN);
        mpfr_log(r8825, r8800, MPFR_RNDN);
        mpfr_div(r8826, r8825, r8804, MPFR_RNDN);
        if (mpfr_get_si(r8824, MPFR_RNDN)) { mpfr_set(r8827, r8818, MPFR_RNDN); } else { mpfr_set(r8827, r8826, MPFR_RNDN); };
        if (mpfr_get_si(r8820, MPFR_RNDN)) { mpfr_set(r8828, r8822, MPFR_RNDN); } else { mpfr_set(r8828, r8827, MPFR_RNDN); };
        if (mpfr_get_si(r8811, MPFR_RNDN)) { mpfr_set(r8829, r8818, MPFR_RNDN); } else { mpfr_set(r8829, r8828, MPFR_RNDN); };
        if (mpfr_get_si(r8802, MPFR_RNDN)) { mpfr_set(r8830, r8809, MPFR_RNDN); } else { mpfr_set(r8830, r8829, MPFR_RNDN); };
        return mpfr_get_d(r8830, MPFR_RNDN);
}

static mpfr_t r8831, r8832, r8833, r8834, r8835, r8836, r8837, r8838, r8839, r8840, r8841, r8842, r8843, r8844, r8845, r8846, r8847, r8848, r8849, r8850, r8851, r8852, r8853, r8854, r8855, r8856, r8857, r8858, r8859, r8860, r8861;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8831);
        mpfr_init_set_str(r8832, "-3.128434757515767e+93", 10, MPFR_RNDN);
        mpfr_init(r8833);
        mpfr_init(r8834);
        mpfr_init(r8835);
        mpfr_init(r8836);
        mpfr_init(r8837);
        mpfr_init(r8838);
        mpfr_init(r8839);
        mpfr_init(r8840);
        mpfr_init_set_str(r8841, "-4.59995512849691e-275", 10, MPFR_RNDN);
        mpfr_init(r8842);
        mpfr_init(r8843);
        mpfr_init(r8844);
        mpfr_init(r8845);
        mpfr_init(r8846);
        mpfr_init(r8847);
        mpfr_init(r8848);
        mpfr_init(r8849);
        mpfr_init_set_str(r8850, "3.318561597151413e-216", 10, MPFR_RNDN);
        mpfr_init(r8851);
        mpfr_init(r8852);
        mpfr_init(r8853);
        mpfr_init_set_str(r8854, "4.6787337147058096e+92", 10, MPFR_RNDN);
        mpfr_init(r8855);
        mpfr_init(r8856);
        mpfr_init(r8857);
        mpfr_init(r8858);
        mpfr_init(r8859);
        mpfr_init(r8860);
        mpfr_init(r8861);
}

double f_dm(double re, double im, double base) {
        mpfr_set_d(r8831, re, MPFR_RNDN);
        ;
        mpfr_set_si(r8833, mpfr_cmp(r8831, r8832) <= 0, MPFR_RNDN);
        mpfr_set_d(r8834, base, MPFR_RNDN);
        mpfr_log(r8835, r8834, MPFR_RNDN);
        mpfr_neg(r8836, r8831, MPFR_RNDN);
        mpfr_log(r8837, r8836, MPFR_RNDN);
        mpfr_mul(r8838, r8835, r8837, MPFR_RNDN);
        mpfr_mul(r8839, r8835, r8835, MPFR_RNDN);
        mpfr_div(r8840, r8838, r8839, MPFR_RNDN);
        ;
        mpfr_set_si(r8842, mpfr_cmp(r8831, r8841) <= 0, MPFR_RNDN);
        mpfr_set_d(r8843, im, MPFR_RNDN);
        mpfr_mul(r8844, r8843, r8843, MPFR_RNDN);
        mpfr_mul(r8845, r8831, r8831, MPFR_RNDN);
        mpfr_add(r8846, r8844, r8845, MPFR_RNDN);
        mpfr_sqrt(r8847, r8846, MPFR_RNDN);
        mpfr_log(r8848, r8847, MPFR_RNDN);
        mpfr_div(r8849, r8848, r8835, MPFR_RNDN);
        ;
        mpfr_set_si(r8851, mpfr_cmp(r8831, r8850) <= 0, MPFR_RNDN);
        mpfr_log(r8852, r8843, MPFR_RNDN);
        mpfr_div(r8853, r8852, r8835, MPFR_RNDN);
        ;
        mpfr_set_si(r8855, mpfr_cmp(r8831, r8854) <= 0, MPFR_RNDN);
        mpfr_log(r8856, r8831, MPFR_RNDN);
        mpfr_div(r8857, r8856, r8835, MPFR_RNDN);
        if (mpfr_get_si(r8855, MPFR_RNDN)) { mpfr_set(r8858, r8849, MPFR_RNDN); } else { mpfr_set(r8858, r8857, MPFR_RNDN); };
        if (mpfr_get_si(r8851, MPFR_RNDN)) { mpfr_set(r8859, r8853, MPFR_RNDN); } else { mpfr_set(r8859, r8858, MPFR_RNDN); };
        if (mpfr_get_si(r8842, MPFR_RNDN)) { mpfr_set(r8860, r8849, MPFR_RNDN); } else { mpfr_set(r8860, r8859, MPFR_RNDN); };
        if (mpfr_get_si(r8833, MPFR_RNDN)) { mpfr_set(r8861, r8840, MPFR_RNDN); } else { mpfr_set(r8861, r8860, MPFR_RNDN); };
        return mpfr_get_d(r8861, MPFR_RNDN);
}

