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

char *name = "VandenBroeck and Keller, Equation (20)";

double f_if(float f) {
        float r7731 = 1.0f;
        float r7732 = atan2(1.0, 0.0);
        float r7733 = 4.0f;
        float r7734 = r7732 / r7733;
        float r7735 = r7731 / r7734;
        float r7736 = f;
        float r7737 = r7734 * r7736;
        float r7738 = exp(r7737);
        float r7739 = -r7737;
        float r7740 = exp(r7739);
        float r7741 = r7738 + r7740;
        float r7742 = r7738 - r7740;
        float r7743 = r7741 / r7742;
        float r7744 = log(r7743);
        float r7745 = r7735 * r7744;
        float r7746 = -r7745;
        return r7746;
}

double f_id(double f) {
        double r7747 = 1.0;
        double r7748 = atan2(1.0, 0.0);
        double r7749 = 4.0;
        double r7750 = r7748 / r7749;
        double r7751 = r7747 / r7750;
        double r7752 = f;
        double r7753 = r7750 * r7752;
        double r7754 = exp(r7753);
        double r7755 = -r7753;
        double r7756 = exp(r7755);
        double r7757 = r7754 + r7756;
        double r7758 = r7754 - r7756;
        double r7759 = r7757 / r7758;
        double r7760 = log(r7759);
        double r7761 = r7751 * r7760;
        double r7762 = -r7761;
        return r7762;
}


double f_of(float f) {
        float r7763 = 4.0f;
        float r7764 = atan2(1.0, 0.0);
        float r7765 = r7763 / r7764;
        float r7766 = cbrt(r7765);
        float r7767 = r7766 * r7766;
        float r7768 = log(r7767);
        float r7769 = r7765 * r7768;
        float r7770 = log(r7766);
        float r7771 = f;
        float r7772 = log(r7771);
        float r7773 = r7770 - r7772;
        float r7774 = r7765 * r7773;
        float r7775 = r7769 + r7774;
        float r7776 = 0.0012152777777777778f;
        float r7777 = r7764 * r7776;
        float r7778 = r7764 * r7777;
        float r7779 = pow(r7771, r7763);
        float r7780 = r7779 * r7764;
        float r7781 = r7778 * r7780;
        float r7782 = 0.08333333333333333f;
        float r7783 = r7782 * r7764;
        float r7784 = r7771 * r7771;
        float r7785 = r7783 * r7784;
        float r7786 = r7781 - r7785;
        float r7787 = r7775 - r7786;
        float r7788 = -r7787;
        return r7788;
}

double f_od(double f) {
        double r7789 = 4.0;
        double r7790 = atan2(1.0, 0.0);
        double r7791 = r7789 / r7790;
        double r7792 = cbrt(r7791);
        double r7793 = r7792 * r7792;
        double r7794 = log(r7793);
        double r7795 = r7791 * r7794;
        double r7796 = log(r7792);
        double r7797 = f;
        double r7798 = log(r7797);
        double r7799 = r7796 - r7798;
        double r7800 = r7791 * r7799;
        double r7801 = r7795 + r7800;
        double r7802 = 0.0012152777777777778;
        double r7803 = r7790 * r7802;
        double r7804 = r7790 * r7803;
        double r7805 = pow(r7797, r7789);
        double r7806 = r7805 * r7790;
        double r7807 = r7804 * r7806;
        double r7808 = 0.08333333333333333;
        double r7809 = r7808 * r7790;
        double r7810 = r7797 * r7797;
        double r7811 = r7809 * r7810;
        double r7812 = r7807 - r7811;
        double r7813 = r7801 - r7812;
        double r7814 = -r7813;
        return r7814;
}

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 r7815, r7816, r7817, r7818, r7819, r7820, r7821, r7822, r7823, r7824, r7825, r7826, r7827, r7828, r7829, r7830;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r7815, "1", 10, MPFR_RNDN);
        mpfr_init(r7816);
        mpfr_init_set_str(r7817, "4", 10, MPFR_RNDN);
        mpfr_init(r7818);
        mpfr_init(r7819);
        mpfr_init(r7820);
        mpfr_init(r7821);
        mpfr_init(r7822);
        mpfr_init(r7823);
        mpfr_init(r7824);
        mpfr_init(r7825);
        mpfr_init(r7826);
        mpfr_init(r7827);
        mpfr_init(r7828);
        mpfr_init(r7829);
        mpfr_init(r7830);
}

double f_im(double f) {
        ;
        mpfr_const_pi(r7816, MPFR_RNDN);
        ;
        mpfr_div(r7818, r7816, r7817, MPFR_RNDN);
        mpfr_div(r7819, r7815, r7818, MPFR_RNDN);
        mpfr_set_d(r7820, f, MPFR_RNDN);
        mpfr_mul(r7821, r7818, r7820, MPFR_RNDN);
        mpfr_exp(r7822, r7821, MPFR_RNDN);
        mpfr_neg(r7823, r7821, MPFR_RNDN);
        mpfr_exp(r7824, r7823, MPFR_RNDN);
        mpfr_add(r7825, r7822, r7824, MPFR_RNDN);
        mpfr_sub(r7826, r7822, r7824, MPFR_RNDN);
        mpfr_div(r7827, r7825, r7826, MPFR_RNDN);
        mpfr_log(r7828, r7827, MPFR_RNDN);
        mpfr_mul(r7829, r7819, r7828, MPFR_RNDN);
        mpfr_neg(r7830, r7829, MPFR_RNDN);
        return mpfr_get_d(r7830, MPFR_RNDN);
}

static mpfr_t r7831, r7832, r7833, r7834, r7835, r7836, r7837, r7838, r7839, r7840, r7841, r7842, r7843, r7844, r7845, r7846, r7847, r7848, r7849, r7850, r7851, r7852, r7853, r7854, r7855, r7856;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r7831, "4", 10, MPFR_RNDN);
        mpfr_init(r7832);
        mpfr_init(r7833);
        mpfr_init(r7834);
        mpfr_init(r7835);
        mpfr_init(r7836);
        mpfr_init(r7837);
        mpfr_init(r7838);
        mpfr_init(r7839);
        mpfr_init(r7840);
        mpfr_init(r7841);
        mpfr_init(r7842);
        mpfr_init(r7843);
        mpfr_init_set_str(r7844, "7/5760", 10, MPFR_RNDN);
        mpfr_init(r7845);
        mpfr_init(r7846);
        mpfr_init(r7847);
        mpfr_init(r7848);
        mpfr_init(r7849);
        mpfr_init_set_str(r7850, "1/12", 10, MPFR_RNDN);
        mpfr_init(r7851);
        mpfr_init(r7852);
        mpfr_init(r7853);
        mpfr_init(r7854);
        mpfr_init(r7855);
        mpfr_init(r7856);
}

double f_fm(double f) {
        ;
        mpfr_const_pi(r7832, MPFR_RNDN);
        mpfr_div(r7833, r7831, r7832, MPFR_RNDN);
        mpfr_cbrt(r7834, r7833, MPFR_RNDN);
        mpfr_mul(r7835, r7834, r7834, MPFR_RNDN);
        mpfr_log(r7836, r7835, MPFR_RNDN);
        mpfr_mul(r7837, r7833, r7836, MPFR_RNDN);
        mpfr_log(r7838, r7834, MPFR_RNDN);
        mpfr_set_d(r7839, f, MPFR_RNDN);
        mpfr_log(r7840, r7839, MPFR_RNDN);
        mpfr_sub(r7841, r7838, r7840, MPFR_RNDN);
        mpfr_mul(r7842, r7833, r7841, MPFR_RNDN);
        mpfr_add(r7843, r7837, r7842, MPFR_RNDN);
        ;
        mpfr_mul(r7845, r7832, r7844, MPFR_RNDN);
        mpfr_mul(r7846, r7832, r7845, MPFR_RNDN);
        mpfr_pow(r7847, r7839, r7831, MPFR_RNDN);
        mpfr_mul(r7848, r7847, r7832, MPFR_RNDN);
        mpfr_mul(r7849, r7846, r7848, MPFR_RNDN);
        ;
        mpfr_mul(r7851, r7850, r7832, MPFR_RNDN);
        mpfr_mul(r7852, r7839, r7839, MPFR_RNDN);
        mpfr_mul(r7853, r7851, r7852, MPFR_RNDN);
        mpfr_sub(r7854, r7849, r7853, MPFR_RNDN);
        mpfr_sub(r7855, r7843, r7854, MPFR_RNDN);
        mpfr_neg(r7856, r7855, MPFR_RNDN);
        return mpfr_get_d(r7856, MPFR_RNDN);
}

static mpfr_t r7857, r7858, r7859, r7860, r7861, r7862, r7863, r7864, r7865, r7866, r7867, r7868, r7869, r7870, r7871, r7872, r7873, r7874, r7875, r7876, r7877, r7878, r7879, r7880, r7881, r7882;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r7857, "4", 10, MPFR_RNDN);
        mpfr_init(r7858);
        mpfr_init(r7859);
        mpfr_init(r7860);
        mpfr_init(r7861);
        mpfr_init(r7862);
        mpfr_init(r7863);
        mpfr_init(r7864);
        mpfr_init(r7865);
        mpfr_init(r7866);
        mpfr_init(r7867);
        mpfr_init(r7868);
        mpfr_init(r7869);
        mpfr_init_set_str(r7870, "7/5760", 10, MPFR_RNDN);
        mpfr_init(r7871);
        mpfr_init(r7872);
        mpfr_init(r7873);
        mpfr_init(r7874);
        mpfr_init(r7875);
        mpfr_init_set_str(r7876, "1/12", 10, MPFR_RNDN);
        mpfr_init(r7877);
        mpfr_init(r7878);
        mpfr_init(r7879);
        mpfr_init(r7880);
        mpfr_init(r7881);
        mpfr_init(r7882);
}

double f_dm(double f) {
        ;
        mpfr_const_pi(r7858, MPFR_RNDN);
        mpfr_div(r7859, r7857, r7858, MPFR_RNDN);
        mpfr_cbrt(r7860, r7859, MPFR_RNDN);
        mpfr_mul(r7861, r7860, r7860, MPFR_RNDN);
        mpfr_log(r7862, r7861, MPFR_RNDN);
        mpfr_mul(r7863, r7859, r7862, MPFR_RNDN);
        mpfr_log(r7864, r7860, MPFR_RNDN);
        mpfr_set_d(r7865, f, MPFR_RNDN);
        mpfr_log(r7866, r7865, MPFR_RNDN);
        mpfr_sub(r7867, r7864, r7866, MPFR_RNDN);
        mpfr_mul(r7868, r7859, r7867, MPFR_RNDN);
        mpfr_add(r7869, r7863, r7868, MPFR_RNDN);
        ;
        mpfr_mul(r7871, r7858, r7870, MPFR_RNDN);
        mpfr_mul(r7872, r7858, r7871, MPFR_RNDN);
        mpfr_pow(r7873, r7865, r7857, MPFR_RNDN);
        mpfr_mul(r7874, r7873, r7858, MPFR_RNDN);
        mpfr_mul(r7875, r7872, r7874, MPFR_RNDN);
        ;
        mpfr_mul(r7877, r7876, r7858, MPFR_RNDN);
        mpfr_mul(r7878, r7865, r7865, MPFR_RNDN);
        mpfr_mul(r7879, r7877, r7878, MPFR_RNDN);
        mpfr_sub(r7880, r7875, r7879, MPFR_RNDN);
        mpfr_sub(r7881, r7869, r7880, MPFR_RNDN);
        mpfr_neg(r7882, r7881, MPFR_RNDN);
        return mpfr_get_d(r7882, MPFR_RNDN);
}

