#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 r7775 = 1.0f;
        float r7776 = atan2(1.0, 0.0);
        float r7777 = 4.0f;
        float r7778 = r7776 / r7777;
        float r7779 = r7775 / r7778;
        float r7780 = f;
        float r7781 = r7778 * r7780;
        float r7782 = exp(r7781);
        float r7783 = -r7781;
        float r7784 = exp(r7783);
        float r7785 = r7782 + r7784;
        float r7786 = r7782 - r7784;
        float r7787 = r7785 / r7786;
        float r7788 = log(r7787);
        float r7789 = r7779 * r7788;
        float r7790 = -r7789;
        return r7790;
}

double f_id(double f) {
        double r7791 = 1.0;
        double r7792 = atan2(1.0, 0.0);
        double r7793 = 4.0;
        double r7794 = r7792 / r7793;
        double r7795 = r7791 / r7794;
        double r7796 = f;
        double r7797 = r7794 * r7796;
        double r7798 = exp(r7797);
        double r7799 = -r7797;
        double r7800 = exp(r7799);
        double r7801 = r7798 + r7800;
        double r7802 = r7798 - r7800;
        double r7803 = r7801 / r7802;
        double r7804 = log(r7803);
        double r7805 = r7795 * r7804;
        double r7806 = -r7805;
        return r7806;
}


double f_of(float f) {
        float r7807 = 1.0f;
        float r7808 = -r7807;
        float r7809 = atan2(1.0, 0.0);
        float r7810 = 4.0f;
        float r7811 = r7809 / r7810;
        float r7812 = r7808 / r7811;
        float r7813 = r7810 / r7809;
        float r7814 = log(r7813);
        float r7815 = f;
        float r7816 = 2.0f;
        float r7817 = pow(r7815, r7816);
        float r7818 = pow(r7809, r7816);
        float r7819 = r7817 * r7818;
        float r7820 = 0.020833333333333332f;
        float r7821 = r7819 * r7820;
        float r7822 = r7814 + r7821;
        float r7823 = log(r7815);
        float r7824 = pow(r7815, r7810);
        float r7825 = pow(r7809, r7810);
        float r7826 = r7824 * r7825;
        float r7827 = 0.00030381944444444445f;
        float r7828 = r7826 * r7827;
        float r7829 = r7823 + r7828;
        float r7830 = r7822 - r7829;
        float r7831 = r7812 * r7830;
        return r7831;
}

double f_od(double f) {
        double r7832 = 1.0;
        double r7833 = -r7832;
        double r7834 = atan2(1.0, 0.0);
        double r7835 = 4.0;
        double r7836 = r7834 / r7835;
        double r7837 = r7833 / r7836;
        double r7838 = r7835 / r7834;
        double r7839 = log(r7838);
        double r7840 = f;
        double r7841 = 2.0;
        double r7842 = pow(r7840, r7841);
        double r7843 = pow(r7834, r7841);
        double r7844 = r7842 * r7843;
        double r7845 = 0.020833333333333332;
        double r7846 = r7844 * r7845;
        double r7847 = r7839 + r7846;
        double r7848 = log(r7840);
        double r7849 = pow(r7840, r7835);
        double r7850 = pow(r7834, r7835);
        double r7851 = r7849 * r7850;
        double r7852 = 0.00030381944444444445;
        double r7853 = r7851 * r7852;
        double r7854 = r7848 + r7853;
        double r7855 = r7847 - r7854;
        double r7856 = r7837 * r7855;
        return r7856;
}

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 r7857, r7858, r7859, r7860, r7861, r7862, r7863, r7864, r7865, r7866, r7867, r7868, r7869, r7870, r7871, r7872;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r7857, "1", 10, MPFR_RNDN);
        mpfr_init(r7858);
        mpfr_init_set_str(r7859, "4", 10, MPFR_RNDN);
        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(r7870);
        mpfr_init(r7871);
        mpfr_init(r7872);
}

double f_im(double f) {
        ;
        mpfr_const_pi(r7858, MPFR_RNDN);
        ;
        mpfr_div(r7860, r7858, r7859, MPFR_RNDN);
        mpfr_div(r7861, r7857, r7860, MPFR_RNDN);
        mpfr_set_d(r7862, f, MPFR_RNDN);
        mpfr_mul(r7863, r7860, r7862, MPFR_RNDN);
        mpfr_exp(r7864, r7863, MPFR_RNDN);
        mpfr_neg(r7865, r7863, MPFR_RNDN);
        mpfr_exp(r7866, r7865, MPFR_RNDN);
        mpfr_add(r7867, r7864, r7866, MPFR_RNDN);
        mpfr_sub(r7868, r7864, r7866, MPFR_RNDN);
        mpfr_div(r7869, r7867, r7868, MPFR_RNDN);
        mpfr_log(r7870, r7869, MPFR_RNDN);
        mpfr_mul(r7871, r7861, r7870, MPFR_RNDN);
        mpfr_neg(r7872, r7871, MPFR_RNDN);
        return mpfr_get_d(r7872, MPFR_RNDN);
}

static mpfr_t r7873, r7874, r7875, r7876, r7877, r7878, r7879, r7880, r7881, r7882, r7883, r7884, r7885, r7886, r7887, r7888, r7889, r7890, r7891, r7892, r7893, r7894, r7895, r7896, r7897;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r7873, "1", 10, MPFR_RNDN);
        mpfr_init(r7874);
        mpfr_init(r7875);
        mpfr_init_set_str(r7876, "4", 10, MPFR_RNDN);
        mpfr_init(r7877);
        mpfr_init(r7878);
        mpfr_init(r7879);
        mpfr_init(r7880);
        mpfr_init(r7881);
        mpfr_init_set_str(r7882, "2", 10, MPFR_RNDN);
        mpfr_init(r7883);
        mpfr_init(r7884);
        mpfr_init(r7885);
        mpfr_init_set_str(r7886, "1/48", 10, MPFR_RNDN);
        mpfr_init(r7887);
        mpfr_init(r7888);
        mpfr_init(r7889);
        mpfr_init(r7890);
        mpfr_init(r7891);
        mpfr_init(r7892);
        mpfr_init_set_str(r7893, "7/23040", 10, MPFR_RNDN);
        mpfr_init(r7894);
        mpfr_init(r7895);
        mpfr_init(r7896);
        mpfr_init(r7897);
}

double f_fm(double f) {
        ;
        mpfr_neg(r7874, r7873, MPFR_RNDN);
        mpfr_const_pi(r7875, MPFR_RNDN);
        ;
        mpfr_div(r7877, r7875, r7876, MPFR_RNDN);
        mpfr_div(r7878, r7874, r7877, MPFR_RNDN);
        mpfr_div(r7879, r7876, r7875, MPFR_RNDN);
        mpfr_log(r7880, r7879, MPFR_RNDN);
        mpfr_set_d(r7881, f, MPFR_RNDN);
        ;
        mpfr_pow(r7883, r7881, r7882, MPFR_RNDN);
        mpfr_pow(r7884, r7875, r7882, MPFR_RNDN);
        mpfr_mul(r7885, r7883, r7884, MPFR_RNDN);
        ;
        mpfr_mul(r7887, r7885, r7886, MPFR_RNDN);
        mpfr_add(r7888, r7880, r7887, MPFR_RNDN);
        mpfr_log(r7889, r7881, MPFR_RNDN);
        mpfr_pow(r7890, r7881, r7876, MPFR_RNDN);
        mpfr_pow(r7891, r7875, r7876, MPFR_RNDN);
        mpfr_mul(r7892, r7890, r7891, MPFR_RNDN);
        ;
        mpfr_mul(r7894, r7892, r7893, MPFR_RNDN);
        mpfr_add(r7895, r7889, r7894, MPFR_RNDN);
        mpfr_sub(r7896, r7888, r7895, MPFR_RNDN);
        mpfr_mul(r7897, r7878, r7896, MPFR_RNDN);
        return mpfr_get_d(r7897, MPFR_RNDN);
}

static mpfr_t r7898, r7899, r7900, r7901, r7902, r7903, r7904, r7905, r7906, r7907, r7908, r7909, r7910, r7911, r7912, r7913, r7914, r7915, r7916, r7917, r7918, r7919, r7920, r7921, r7922;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r7898, "1", 10, MPFR_RNDN);
        mpfr_init(r7899);
        mpfr_init(r7900);
        mpfr_init_set_str(r7901, "4", 10, MPFR_RNDN);
        mpfr_init(r7902);
        mpfr_init(r7903);
        mpfr_init(r7904);
        mpfr_init(r7905);
        mpfr_init(r7906);
        mpfr_init_set_str(r7907, "2", 10, MPFR_RNDN);
        mpfr_init(r7908);
        mpfr_init(r7909);
        mpfr_init(r7910);
        mpfr_init_set_str(r7911, "1/48", 10, MPFR_RNDN);
        mpfr_init(r7912);
        mpfr_init(r7913);
        mpfr_init(r7914);
        mpfr_init(r7915);
        mpfr_init(r7916);
        mpfr_init(r7917);
        mpfr_init_set_str(r7918, "7/23040", 10, MPFR_RNDN);
        mpfr_init(r7919);
        mpfr_init(r7920);
        mpfr_init(r7921);
        mpfr_init(r7922);
}

double f_dm(double f) {
        ;
        mpfr_neg(r7899, r7898, MPFR_RNDN);
        mpfr_const_pi(r7900, MPFR_RNDN);
        ;
        mpfr_div(r7902, r7900, r7901, MPFR_RNDN);
        mpfr_div(r7903, r7899, r7902, MPFR_RNDN);
        mpfr_div(r7904, r7901, r7900, MPFR_RNDN);
        mpfr_log(r7905, r7904, MPFR_RNDN);
        mpfr_set_d(r7906, f, MPFR_RNDN);
        ;
        mpfr_pow(r7908, r7906, r7907, MPFR_RNDN);
        mpfr_pow(r7909, r7900, r7907, MPFR_RNDN);
        mpfr_mul(r7910, r7908, r7909, MPFR_RNDN);
        ;
        mpfr_mul(r7912, r7910, r7911, MPFR_RNDN);
        mpfr_add(r7913, r7905, r7912, MPFR_RNDN);
        mpfr_log(r7914, r7906, MPFR_RNDN);
        mpfr_pow(r7915, r7906, r7901, MPFR_RNDN);
        mpfr_pow(r7916, r7900, r7901, MPFR_RNDN);
        mpfr_mul(r7917, r7915, r7916, MPFR_RNDN);
        ;
        mpfr_mul(r7919, r7917, r7918, MPFR_RNDN);
        mpfr_add(r7920, r7914, r7919, MPFR_RNDN);
        mpfr_sub(r7921, r7913, r7920, MPFR_RNDN);
        mpfr_mul(r7922, r7903, r7921, MPFR_RNDN);
        return mpfr_get_d(r7922, MPFR_RNDN);
}

