#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 r30461691 = 1;
        float r30461692 = atan2(1.0, 0.0);
        float r30461693 = 4;
        float r30461694 = r30461692 / r30461693;
        float r30461695 = r30461691 / r30461694;
        float r30461696 = f;
        float r30461697 = r30461694 * r30461696;
        float r30461698 = exp(r30461697);
        float r30461699 = -r30461697;
        float r30461700 = exp(r30461699);
        float r30461701 = r30461698 + r30461700;
        float r30461702 = r30461698 - r30461700;
        float r30461703 = r30461701 / r30461702;
        float r30461704 = log(r30461703);
        float r30461705 = r30461695 * r30461704;
        float r30461706 = -r30461705;
        return r30461706;
}

double f_id(double f) {
        double r30461707 = 1;
        double r30461708 = atan2(1.0, 0.0);
        double r30461709 = 4;
        double r30461710 = r30461708 / r30461709;
        double r30461711 = r30461707 / r30461710;
        double r30461712 = f;
        double r30461713 = r30461710 * r30461712;
        double r30461714 = exp(r30461713);
        double r30461715 = -r30461713;
        double r30461716 = exp(r30461715);
        double r30461717 = r30461714 + r30461716;
        double r30461718 = r30461714 - r30461716;
        double r30461719 = r30461717 / r30461718;
        double r30461720 = log(r30461719);
        double r30461721 = r30461711 * r30461720;
        double r30461722 = -r30461721;
        return r30461722;
}


double f_of(float f) {
        float r30461723 = 1;
        float r30461724 = atan2(1.0, 0.0);
        float r30461725 = 4;
        float r30461726 = r30461724 / r30461725;
        float r30461727 = r30461723 / r30461726;
        float r30461728 = f;
        float r30461729 = r30461726 * r30461728;
        float r30461730 = exp(r30461729);
        float r30461731 = -r30461729;
        float r30461732 = exp(r30461731);
        float r30461733 = r30461730 + r30461732;
        float r30461734 = 1/61440;
        float r30461735 = 5;
        float r30461736 = pow(r30461724, r30461735);
        float r30461737 = pow(r30461728, r30461735);
        float r30461738 = r30461736 * r30461737;
        float r30461739 = r30461734 * r30461738;
        float r30461740 = 1/2;
        float r30461741 = r30461724 * r30461728;
        float r30461742 = r30461740 * r30461741;
        float r30461743 = 1/192;
        float r30461744 = 3;
        float r30461745 = pow(r30461724, r30461744);
        float r30461746 = pow(r30461728, r30461744);
        float r30461747 = r30461745 * r30461746;
        float r30461748 = r30461743 * r30461747;
        float r30461749 = r30461742 + r30461748;
        float r30461750 = r30461739 + r30461749;
        float r30461751 = r30461733 / r30461750;
        float r30461752 = sqrt(r30461751);
        float r30461753 = log(r30461752);
        float r30461754 = r30461753 + r30461753;
        float r30461755 = r30461727 * r30461754;
        float r30461756 = -r30461755;
        return r30461756;
}

double f_od(double f) {
        double r30461757 = 1;
        double r30461758 = atan2(1.0, 0.0);
        double r30461759 = 4;
        double r30461760 = r30461758 / r30461759;
        double r30461761 = r30461757 / r30461760;
        double r30461762 = f;
        double r30461763 = r30461760 * r30461762;
        double r30461764 = exp(r30461763);
        double r30461765 = -r30461763;
        double r30461766 = exp(r30461765);
        double r30461767 = r30461764 + r30461766;
        double r30461768 = 1/61440;
        double r30461769 = 5;
        double r30461770 = pow(r30461758, r30461769);
        double r30461771 = pow(r30461762, r30461769);
        double r30461772 = r30461770 * r30461771;
        double r30461773 = r30461768 * r30461772;
        double r30461774 = 1/2;
        double r30461775 = r30461758 * r30461762;
        double r30461776 = r30461774 * r30461775;
        double r30461777 = 1/192;
        double r30461778 = 3;
        double r30461779 = pow(r30461758, r30461778);
        double r30461780 = pow(r30461762, r30461778);
        double r30461781 = r30461779 * r30461780;
        double r30461782 = r30461777 * r30461781;
        double r30461783 = r30461776 + r30461782;
        double r30461784 = r30461773 + r30461783;
        double r30461785 = r30461767 / r30461784;
        double r30461786 = sqrt(r30461785);
        double r30461787 = log(r30461786);
        double r30461788 = r30461787 + r30461787;
        double r30461789 = r30461761 * r30461788;
        double r30461790 = -r30461789;
        return r30461790;
}

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 r30461791, r30461792, r30461793, r30461794, r30461795, r30461796, r30461797, r30461798, r30461799, r30461800, r30461801, r30461802, r30461803, r30461804, r30461805, r30461806;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r30461791, "1", 10, MPFR_RNDN);
        mpfr_init(r30461792);
        mpfr_init_set_str(r30461793, "4", 10, MPFR_RNDN);
        mpfr_init(r30461794);
        mpfr_init(r30461795);
        mpfr_init(r30461796);
        mpfr_init(r30461797);
        mpfr_init(r30461798);
        mpfr_init(r30461799);
        mpfr_init(r30461800);
        mpfr_init(r30461801);
        mpfr_init(r30461802);
        mpfr_init(r30461803);
        mpfr_init(r30461804);
        mpfr_init(r30461805);
        mpfr_init(r30461806);
}

double f_im(double f) {
        ;
        mpfr_const_pi(r30461792, MPFR_RNDN);
        ;
        mpfr_div(r30461794, r30461792, r30461793, MPFR_RNDN);
        mpfr_div(r30461795, r30461791, r30461794, MPFR_RNDN);
        mpfr_set_d(r30461796, f, MPFR_RNDN);
        mpfr_mul(r30461797, r30461794, r30461796, MPFR_RNDN);
        mpfr_exp(r30461798, r30461797, MPFR_RNDN);
        mpfr_neg(r30461799, r30461797, MPFR_RNDN);
        mpfr_exp(r30461800, r30461799, MPFR_RNDN);
        mpfr_add(r30461801, r30461798, r30461800, MPFR_RNDN);
        mpfr_sub(r30461802, r30461798, r30461800, MPFR_RNDN);
        mpfr_div(r30461803, r30461801, r30461802, MPFR_RNDN);
        mpfr_log(r30461804, r30461803, MPFR_RNDN);
        mpfr_mul(r30461805, r30461795, r30461804, MPFR_RNDN);
        mpfr_neg(r30461806, r30461805, MPFR_RNDN);
        return mpfr_get_d(r30461806, MPFR_RNDN);
}

static mpfr_t r30461807, r30461808, r30461809, r30461810, r30461811, r30461812, r30461813, r30461814, r30461815, r30461816, r30461817, r30461818, r30461819, r30461820, r30461821, r30461822, r30461823, r30461824, r30461825, r30461826, r30461827, r30461828, r30461829, r30461830, r30461831, r30461832, r30461833, r30461834, r30461835, r30461836, r30461837, r30461838, r30461839, r30461840;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r30461807, "1", 10, MPFR_RNDN);
        mpfr_init(r30461808);
        mpfr_init_set_str(r30461809, "4", 10, MPFR_RNDN);
        mpfr_init(r30461810);
        mpfr_init(r30461811);
        mpfr_init(r30461812);
        mpfr_init(r30461813);
        mpfr_init(r30461814);
        mpfr_init(r30461815);
        mpfr_init(r30461816);
        mpfr_init(r30461817);
        mpfr_init_set_str(r30461818, "1/61440", 10, MPFR_RNDN);
        mpfr_init_set_str(r30461819, "5", 10, MPFR_RNDN);
        mpfr_init(r30461820);
        mpfr_init(r30461821);
        mpfr_init(r30461822);
        mpfr_init(r30461823);
        mpfr_init_set_str(r30461824, "1/2", 10, MPFR_RNDN);
        mpfr_init(r30461825);
        mpfr_init(r30461826);
        mpfr_init_set_str(r30461827, "1/192", 10, MPFR_RNDN);
        mpfr_init_set_str(r30461828, "3", 10, MPFR_RNDN);
        mpfr_init(r30461829);
        mpfr_init(r30461830);
        mpfr_init(r30461831);
        mpfr_init(r30461832);
        mpfr_init(r30461833);
        mpfr_init(r30461834);
        mpfr_init(r30461835);
        mpfr_init(r30461836);
        mpfr_init(r30461837);
        mpfr_init(r30461838);
        mpfr_init(r30461839);
        mpfr_init(r30461840);
}

double f_fm(double f) {
        ;
        mpfr_const_pi(r30461808, MPFR_RNDN);
        ;
        mpfr_div(r30461810, r30461808, r30461809, MPFR_RNDN);
        mpfr_div(r30461811, r30461807, r30461810, MPFR_RNDN);
        mpfr_set_d(r30461812, f, MPFR_RNDN);
        mpfr_mul(r30461813, r30461810, r30461812, MPFR_RNDN);
        mpfr_exp(r30461814, r30461813, MPFR_RNDN);
        mpfr_neg(r30461815, r30461813, MPFR_RNDN);
        mpfr_exp(r30461816, r30461815, MPFR_RNDN);
        mpfr_add(r30461817, r30461814, r30461816, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r30461820, r30461808, r30461819, MPFR_RNDN);
        mpfr_pow(r30461821, r30461812, r30461819, MPFR_RNDN);
        mpfr_mul(r30461822, r30461820, r30461821, MPFR_RNDN);
        mpfr_mul(r30461823, r30461818, r30461822, MPFR_RNDN);
        ;
        mpfr_mul(r30461825, r30461808, r30461812, MPFR_RNDN);
        mpfr_mul(r30461826, r30461824, r30461825, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r30461829, r30461808, r30461828, MPFR_RNDN);
        mpfr_pow(r30461830, r30461812, r30461828, MPFR_RNDN);
        mpfr_mul(r30461831, r30461829, r30461830, MPFR_RNDN);
        mpfr_mul(r30461832, r30461827, r30461831, MPFR_RNDN);
        mpfr_add(r30461833, r30461826, r30461832, MPFR_RNDN);
        mpfr_add(r30461834, r30461823, r30461833, MPFR_RNDN);
        mpfr_div(r30461835, r30461817, r30461834, MPFR_RNDN);
        mpfr_sqrt(r30461836, r30461835, MPFR_RNDN);
        mpfr_log(r30461837, r30461836, MPFR_RNDN);
        mpfr_add(r30461838, r30461837, r30461837, MPFR_RNDN);
        mpfr_mul(r30461839, r30461811, r30461838, MPFR_RNDN);
        mpfr_neg(r30461840, r30461839, MPFR_RNDN);
        return mpfr_get_d(r30461840, MPFR_RNDN);
}

static mpfr_t r30461841, r30461842, r30461843, r30461844, r30461845, r30461846, r30461847, r30461848, r30461849, r30461850, r30461851, r30461852, r30461853, r30461854, r30461855, r30461856, r30461857, r30461858, r30461859, r30461860, r30461861, r30461862, r30461863, r30461864, r30461865, r30461866, r30461867, r30461868, r30461869, r30461870, r30461871, r30461872, r30461873, r30461874;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r30461841, "1", 10, MPFR_RNDN);
        mpfr_init(r30461842);
        mpfr_init_set_str(r30461843, "4", 10, MPFR_RNDN);
        mpfr_init(r30461844);
        mpfr_init(r30461845);
        mpfr_init(r30461846);
        mpfr_init(r30461847);
        mpfr_init(r30461848);
        mpfr_init(r30461849);
        mpfr_init(r30461850);
        mpfr_init(r30461851);
        mpfr_init_set_str(r30461852, "1/61440", 10, MPFR_RNDN);
        mpfr_init_set_str(r30461853, "5", 10, MPFR_RNDN);
        mpfr_init(r30461854);
        mpfr_init(r30461855);
        mpfr_init(r30461856);
        mpfr_init(r30461857);
        mpfr_init_set_str(r30461858, "1/2", 10, MPFR_RNDN);
        mpfr_init(r30461859);
        mpfr_init(r30461860);
        mpfr_init_set_str(r30461861, "1/192", 10, MPFR_RNDN);
        mpfr_init_set_str(r30461862, "3", 10, MPFR_RNDN);
        mpfr_init(r30461863);
        mpfr_init(r30461864);
        mpfr_init(r30461865);
        mpfr_init(r30461866);
        mpfr_init(r30461867);
        mpfr_init(r30461868);
        mpfr_init(r30461869);
        mpfr_init(r30461870);
        mpfr_init(r30461871);
        mpfr_init(r30461872);
        mpfr_init(r30461873);
        mpfr_init(r30461874);
}

double f_dm(double f) {
        ;
        mpfr_const_pi(r30461842, MPFR_RNDN);
        ;
        mpfr_div(r30461844, r30461842, r30461843, MPFR_RNDN);
        mpfr_div(r30461845, r30461841, r30461844, MPFR_RNDN);
        mpfr_set_d(r30461846, f, MPFR_RNDN);
        mpfr_mul(r30461847, r30461844, r30461846, MPFR_RNDN);
        mpfr_exp(r30461848, r30461847, MPFR_RNDN);
        mpfr_neg(r30461849, r30461847, MPFR_RNDN);
        mpfr_exp(r30461850, r30461849, MPFR_RNDN);
        mpfr_add(r30461851, r30461848, r30461850, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r30461854, r30461842, r30461853, MPFR_RNDN);
        mpfr_pow(r30461855, r30461846, r30461853, MPFR_RNDN);
        mpfr_mul(r30461856, r30461854, r30461855, MPFR_RNDN);
        mpfr_mul(r30461857, r30461852, r30461856, MPFR_RNDN);
        ;
        mpfr_mul(r30461859, r30461842, r30461846, MPFR_RNDN);
        mpfr_mul(r30461860, r30461858, r30461859, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r30461863, r30461842, r30461862, MPFR_RNDN);
        mpfr_pow(r30461864, r30461846, r30461862, MPFR_RNDN);
        mpfr_mul(r30461865, r30461863, r30461864, MPFR_RNDN);
        mpfr_mul(r30461866, r30461861, r30461865, MPFR_RNDN);
        mpfr_add(r30461867, r30461860, r30461866, MPFR_RNDN);
        mpfr_add(r30461868, r30461857, r30461867, MPFR_RNDN);
        mpfr_div(r30461869, r30461851, r30461868, MPFR_RNDN);
        mpfr_sqrt(r30461870, r30461869, MPFR_RNDN);
        mpfr_log(r30461871, r30461870, MPFR_RNDN);
        mpfr_add(r30461872, r30461871, r30461871, MPFR_RNDN);
        mpfr_mul(r30461873, r30461845, r30461872, MPFR_RNDN);
        mpfr_neg(r30461874, r30461873, MPFR_RNDN);
        return mpfr_get_d(r30461874, MPFR_RNDN);
}

