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

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

double f_if(float F, float B, float x) {
        float r7721 = x;
        float r7722 = 1.0f;
        float r7723 = B;
        float r7724 = tan(r7723);
        float r7725 = r7722 / r7724;
        float r7726 = r7721 * r7725;
        float r7727 = -r7726;
        float r7728 = F;
        float r7729 = sin(r7723);
        float r7730 = r7728 / r7729;
        float r7731 = r7728 * r7728;
        float r7732 = 2.0f;
        float r7733 = r7731 + r7732;
        float r7734 = r7732 * r7721;
        float r7735 = r7733 + r7734;
        float r7736 = r7722 / r7732;
        float r7737 = -r7736;
        float r7738 = pow(r7735, r7737);
        float r7739 = r7730 * r7738;
        float r7740 = r7727 + r7739;
        return r7740;
}

double f_id(double F, double B, double x) {
        double r7741 = x;
        double r7742 = 1.0;
        double r7743 = B;
        double r7744 = tan(r7743);
        double r7745 = r7742 / r7744;
        double r7746 = r7741 * r7745;
        double r7747 = -r7746;
        double r7748 = F;
        double r7749 = sin(r7743);
        double r7750 = r7748 / r7749;
        double r7751 = r7748 * r7748;
        double r7752 = 2.0;
        double r7753 = r7751 + r7752;
        double r7754 = r7752 * r7741;
        double r7755 = r7753 + r7754;
        double r7756 = r7742 / r7752;
        double r7757 = -r7756;
        double r7758 = pow(r7755, r7757);
        double r7759 = r7750 * r7758;
        double r7760 = r7747 + r7759;
        return r7760;
}


double f_of(float F, float B, float x) {
        float r7761 = 2.0f;
        float r7762 = x;
        float r7763 = F;
        float r7764 = fma(r7763, r7763, r7761);
        float r7765 = fma(r7761, r7762, r7764);
        float r7766 = -1.0f;
        float r7767 = pow(r7765, r7766);
        float r7768 = 1.0f;
        float r7769 = r7768 / r7761;
        float r7770 = pow(r7767, r7769);
        float r7771 = B;
        float r7772 = sin(r7771);
        float r7773 = r7768 / r7772;
        float r7774 = r7763 * r7773;
        float r7775 = -r7762;
        float r7776 = tan(r7771);
        float r7777 = r7775 / r7776;
        float r7778 = fma(r7770, r7774, r7777);
        return r7778;
}

double f_od(double F, double B, double x) {
        double r7779 = 2.0;
        double r7780 = x;
        double r7781 = F;
        double r7782 = fma(r7781, r7781, r7779);
        double r7783 = fma(r7779, r7780, r7782);
        double r7784 = -1.0;
        double r7785 = pow(r7783, r7784);
        double r7786 = 1.0;
        double r7787 = r7786 / r7779;
        double r7788 = pow(r7785, r7787);
        double r7789 = B;
        double r7790 = sin(r7789);
        double r7791 = r7786 / r7790;
        double r7792 = r7781 * r7791;
        double r7793 = -r7780;
        double r7794 = tan(r7789);
        double r7795 = r7793 / r7794;
        double r7796 = fma(r7788, r7792, r7795);
        return r7796;
}

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 r7797, r7798, r7799, r7800, r7801, r7802, r7803, r7804, r7805, r7806, r7807, r7808, r7809, r7810, r7811, r7812, r7813, r7814, r7815, r7816;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r7797);
        mpfr_init_set_str(r7798, "1", 10, MPFR_RNDN);
        mpfr_init(r7799);
        mpfr_init(r7800);
        mpfr_init(r7801);
        mpfr_init(r7802);
        mpfr_init(r7803);
        mpfr_init(r7804);
        mpfr_init(r7805);
        mpfr_init(r7806);
        mpfr_init(r7807);
        mpfr_init_set_str(r7808, "2", 10, MPFR_RNDN);
        mpfr_init(r7809);
        mpfr_init(r7810);
        mpfr_init(r7811);
        mpfr_init(r7812);
        mpfr_init(r7813);
        mpfr_init(r7814);
        mpfr_init(r7815);
        mpfr_init(r7816);
}

double f_im(double F, double B, double x) {
        mpfr_set_d(r7797, x, MPFR_RNDN);
        ;
        mpfr_set_d(r7799, B, MPFR_RNDN);
        mpfr_tan(r7800, r7799, MPFR_RNDN);
        mpfr_div(r7801, r7798, r7800, MPFR_RNDN);
        mpfr_mul(r7802, r7797, r7801, MPFR_RNDN);
        mpfr_neg(r7803, r7802, MPFR_RNDN);
        mpfr_set_d(r7804, F, MPFR_RNDN);
        mpfr_sin(r7805, r7799, MPFR_RNDN);
        mpfr_div(r7806, r7804, r7805, MPFR_RNDN);
        mpfr_mul(r7807, r7804, r7804, MPFR_RNDN);
        ;
        mpfr_add(r7809, r7807, r7808, MPFR_RNDN);
        mpfr_mul(r7810, r7808, r7797, MPFR_RNDN);
        mpfr_add(r7811, r7809, r7810, MPFR_RNDN);
        mpfr_div(r7812, r7798, r7808, MPFR_RNDN);
        mpfr_neg(r7813, r7812, MPFR_RNDN);
        mpfr_pow(r7814, r7811, r7813, MPFR_RNDN);
        mpfr_mul(r7815, r7806, r7814, MPFR_RNDN);
        mpfr_add(r7816, r7803, r7815, MPFR_RNDN);
        return mpfr_get_d(r7816, MPFR_RNDN);
}

static mpfr_t r7817, r7818, r7819, r7820, r7821, r7822, r7823, r7824, r7825, r7826, r7827, r7828, r7829, r7830, r7831, r7832, r7833, r7834;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7817, "2", 10, MPFR_RNDN);
        mpfr_init(r7818);
        mpfr_init(r7819);
        mpfr_init(r7820);
        mpfr_init(r7821);
        mpfr_init_set_str(r7822, "-1", 10, MPFR_RNDN);
        mpfr_init(r7823);
        mpfr_init_set_str(r7824, "1", 10, MPFR_RNDN);
        mpfr_init(r7825);
        mpfr_init(r7826);
        mpfr_init(r7827);
        mpfr_init(r7828);
        mpfr_init(r7829);
        mpfr_init(r7830);
        mpfr_init(r7831);
        mpfr_init(r7832);
        mpfr_init(r7833);
        mpfr_init(r7834);
}

double f_fm(double F, double B, double x) {
        ;
        mpfr_set_d(r7818, x, MPFR_RNDN);
        mpfr_set_d(r7819, F, MPFR_RNDN);
        mpfr_fma(r7820, r7819, r7819, r7817, MPFR_RNDN);
        mpfr_fma(r7821, r7817, r7818, r7820, MPFR_RNDN);
        ;
        mpfr_pow(r7823, r7821, r7822, MPFR_RNDN);
        ;
        mpfr_div(r7825, r7824, r7817, MPFR_RNDN);
        mpfr_pow(r7826, r7823, r7825, MPFR_RNDN);
        mpfr_set_d(r7827, B, MPFR_RNDN);
        mpfr_sin(r7828, r7827, MPFR_RNDN);
        mpfr_div(r7829, r7824, r7828, MPFR_RNDN);
        mpfr_mul(r7830, r7819, r7829, MPFR_RNDN);
        mpfr_neg(r7831, r7818, MPFR_RNDN);
        mpfr_tan(r7832, r7827, MPFR_RNDN);
        mpfr_div(r7833, r7831, r7832, MPFR_RNDN);
        mpfr_fma(r7834, r7826, r7830, r7833, MPFR_RNDN);
        return mpfr_get_d(r7834, MPFR_RNDN);
}

static mpfr_t r7835, r7836, r7837, r7838, r7839, r7840, r7841, r7842, r7843, r7844, r7845, r7846, r7847, r7848, r7849, r7850, r7851, r7852;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7835, "2", 10, MPFR_RNDN);
        mpfr_init(r7836);
        mpfr_init(r7837);
        mpfr_init(r7838);
        mpfr_init(r7839);
        mpfr_init_set_str(r7840, "-1", 10, MPFR_RNDN);
        mpfr_init(r7841);
        mpfr_init_set_str(r7842, "1", 10, MPFR_RNDN);
        mpfr_init(r7843);
        mpfr_init(r7844);
        mpfr_init(r7845);
        mpfr_init(r7846);
        mpfr_init(r7847);
        mpfr_init(r7848);
        mpfr_init(r7849);
        mpfr_init(r7850);
        mpfr_init(r7851);
        mpfr_init(r7852);
}

double f_dm(double F, double B, double x) {
        ;
        mpfr_set_d(r7836, x, MPFR_RNDN);
        mpfr_set_d(r7837, F, MPFR_RNDN);
        mpfr_fma(r7838, r7837, r7837, r7835, MPFR_RNDN);
        mpfr_fma(r7839, r7835, r7836, r7838, MPFR_RNDN);
        ;
        mpfr_pow(r7841, r7839, r7840, MPFR_RNDN);
        ;
        mpfr_div(r7843, r7842, r7835, MPFR_RNDN);
        mpfr_pow(r7844, r7841, r7843, MPFR_RNDN);
        mpfr_set_d(r7845, B, MPFR_RNDN);
        mpfr_sin(r7846, r7845, MPFR_RNDN);
        mpfr_div(r7847, r7842, r7846, MPFR_RNDN);
        mpfr_mul(r7848, r7837, r7847, MPFR_RNDN);
        mpfr_neg(r7849, r7836, MPFR_RNDN);
        mpfr_tan(r7850, r7845, MPFR_RNDN);
        mpfr_div(r7851, r7849, r7850, MPFR_RNDN);
        mpfr_fma(r7852, r7844, r7848, r7851, MPFR_RNDN);
        return mpfr_get_d(r7852, MPFR_RNDN);
}

