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

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

double f_if(float B, float x) {
        float r7659 = x;
        float r7660 = 1.0f;
        float r7661 = B;
        float r7662 = tan(r7661);
        float r7663 = r7660 / r7662;
        float r7664 = r7659 * r7663;
        float r7665 = -r7664;
        float r7666 = sin(r7661);
        float r7667 = r7660 / r7666;
        float r7668 = r7665 + r7667;
        return r7668;
}

double f_id(double B, double x) {
        double r7669 = x;
        double r7670 = 1.0;
        double r7671 = B;
        double r7672 = tan(r7671);
        double r7673 = r7670 / r7672;
        double r7674 = r7669 * r7673;
        double r7675 = -r7674;
        double r7676 = sin(r7671);
        double r7677 = r7670 / r7676;
        double r7678 = r7675 + r7677;
        return r7678;
}


double f_of(float B, float x) {
        float r7679 = 1.0f;
        float r7680 = B;
        float r7681 = sin(r7680);
        float r7682 = r7679 / r7681;
        float r7683 = x;
        float r7684 = tan(r7680);
        float r7685 = r7683 / r7684;
        float r7686 = r7682 - r7685;
        return r7686;
}

double f_od(double B, double x) {
        double r7687 = 1.0;
        double r7688 = B;
        double r7689 = sin(r7688);
        double r7690 = r7687 / r7689;
        double r7691 = x;
        double r7692 = tan(r7688);
        double r7693 = r7691 / r7692;
        double r7694 = r7690 - r7693;
        return r7694;
}

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 r7695, r7696, r7697, r7698, r7699, r7700, r7701, r7702, r7703, r7704;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r7695);
        mpfr_init_set_str(r7696, "1", 10, MPFR_RNDN);
        mpfr_init(r7697);
        mpfr_init(r7698);
        mpfr_init(r7699);
        mpfr_init(r7700);
        mpfr_init(r7701);
        mpfr_init(r7702);
        mpfr_init(r7703);
        mpfr_init(r7704);
}

double f_im(double B, double x) {
        mpfr_set_d(r7695, x, MPFR_RNDN);
        ;
        mpfr_set_d(r7697, B, MPFR_RNDN);
        mpfr_tan(r7698, r7697, MPFR_RNDN);
        mpfr_div(r7699, r7696, r7698, MPFR_RNDN);
        mpfr_mul(r7700, r7695, r7699, MPFR_RNDN);
        mpfr_neg(r7701, r7700, MPFR_RNDN);
        mpfr_sin(r7702, r7697, MPFR_RNDN);
        mpfr_div(r7703, r7696, r7702, MPFR_RNDN);
        mpfr_add(r7704, r7701, r7703, MPFR_RNDN);
        return mpfr_get_d(r7704, MPFR_RNDN);
}

static mpfr_t r7705, r7706, r7707, r7708, r7709, r7710, r7711, r7712;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7705, "1", 10, MPFR_RNDN);
        mpfr_init(r7706);
        mpfr_init(r7707);
        mpfr_init(r7708);
        mpfr_init(r7709);
        mpfr_init(r7710);
        mpfr_init(r7711);
        mpfr_init(r7712);
}

double f_fm(double B, double x) {
        ;
        mpfr_set_d(r7706, B, MPFR_RNDN);
        mpfr_sin(r7707, r7706, MPFR_RNDN);
        mpfr_div(r7708, r7705, r7707, MPFR_RNDN);
        mpfr_set_d(r7709, x, MPFR_RNDN);
        mpfr_tan(r7710, r7706, MPFR_RNDN);
        mpfr_div(r7711, r7709, r7710, MPFR_RNDN);
        mpfr_sub(r7712, r7708, r7711, MPFR_RNDN);
        return mpfr_get_d(r7712, MPFR_RNDN);
}

static mpfr_t r7713, r7714, r7715, r7716, r7717, r7718, r7719, r7720;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7713, "1", 10, MPFR_RNDN);
        mpfr_init(r7714);
        mpfr_init(r7715);
        mpfr_init(r7716);
        mpfr_init(r7717);
        mpfr_init(r7718);
        mpfr_init(r7719);
        mpfr_init(r7720);
}

double f_dm(double B, double x) {
        ;
        mpfr_set_d(r7714, B, MPFR_RNDN);
        mpfr_sin(r7715, r7714, MPFR_RNDN);
        mpfr_div(r7716, r7713, r7715, MPFR_RNDN);
        mpfr_set_d(r7717, x, MPFR_RNDN);
        mpfr_tan(r7718, r7714, MPFR_RNDN);
        mpfr_div(r7719, r7717, r7718, MPFR_RNDN);
        mpfr_sub(r7720, r7716, r7719, MPFR_RNDN);
        return mpfr_get_d(r7720, MPFR_RNDN);
}

