#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 r7888 = x;
        float r7889 = 1;
        float r7890 = B;
        float r7891 = tan(r7890);
        float r7892 = r7889 / r7891;
        float r7893 = r7888 * r7892;
        float r7894 = -r7893;
        float r7895 = sin(r7890);
        float r7896 = r7889 / r7895;
        float r7897 = r7894 + r7896;
        return r7897;
}

double f_id(double B, double x) {
        double r7898 = x;
        double r7899 = 1;
        double r7900 = B;
        double r7901 = tan(r7900);
        double r7902 = r7899 / r7901;
        double r7903 = r7898 * r7902;
        double r7904 = -r7903;
        double r7905 = sin(r7900);
        double r7906 = r7899 / r7905;
        double r7907 = r7904 + r7906;
        return r7907;
}


double f_of(float B, float x) {
        float r7908 = 1;
        float r7909 = B;
        float r7910 = sin(r7909);
        float r7911 = r7908 / r7910;
        float r7912 = x;
        float r7913 = cos(r7909);
        float r7914 = r7912 * r7913;
        float r7915 = r7914 / r7910;
        float r7916 = r7911 - r7915;
        return r7916;
}

double f_od(double B, double x) {
        double r7917 = 1;
        double r7918 = B;
        double r7919 = sin(r7918);
        double r7920 = r7917 / r7919;
        double r7921 = x;
        double r7922 = cos(r7918);
        double r7923 = r7921 * r7922;
        double r7924 = r7923 / r7919;
        double r7925 = r7920 - r7924;
        return r7925;
}

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 r7926, r7927, r7928, r7929, r7930, r7931, r7932, r7933, r7934, r7935;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r7926);
        mpfr_init_set_str(r7927, "1", 10, MPFR_RNDN);
        mpfr_init(r7928);
        mpfr_init(r7929);
        mpfr_init(r7930);
        mpfr_init(r7931);
        mpfr_init(r7932);
        mpfr_init(r7933);
        mpfr_init(r7934);
        mpfr_init(r7935);
}

double f_im(double B, double x) {
        mpfr_set_d(r7926, x, MPFR_RNDN);
        ;
        mpfr_set_d(r7928, B, MPFR_RNDN);
        mpfr_tan(r7929, r7928, MPFR_RNDN);
        mpfr_div(r7930, r7927, r7929, MPFR_RNDN);
        mpfr_mul(r7931, r7926, r7930, MPFR_RNDN);
        mpfr_neg(r7932, r7931, MPFR_RNDN);
        mpfr_sin(r7933, r7928, MPFR_RNDN);
        mpfr_div(r7934, r7927, r7933, MPFR_RNDN);
        mpfr_add(r7935, r7932, r7934, MPFR_RNDN);
        return mpfr_get_d(r7935, MPFR_RNDN);
}

static mpfr_t r7936, r7937, r7938, r7939, r7940, r7941, r7942, r7943, r7944;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7936, "1", 10, MPFR_RNDN);
        mpfr_init(r7937);
        mpfr_init(r7938);
        mpfr_init(r7939);
        mpfr_init(r7940);
        mpfr_init(r7941);
        mpfr_init(r7942);
        mpfr_init(r7943);
        mpfr_init(r7944);
}

double f_fm(double B, double x) {
        ;
        mpfr_set_d(r7937, B, MPFR_RNDN);
        mpfr_sin(r7938, r7937, MPFR_RNDN);
        mpfr_div(r7939, r7936, r7938, MPFR_RNDN);
        mpfr_set_d(r7940, x, MPFR_RNDN);
        mpfr_cos(r7941, r7937, MPFR_RNDN);
        mpfr_mul(r7942, r7940, r7941, MPFR_RNDN);
        mpfr_div(r7943, r7942, r7938, MPFR_RNDN);
        mpfr_sub(r7944, r7939, r7943, MPFR_RNDN);
        return mpfr_get_d(r7944, MPFR_RNDN);
}

static mpfr_t r7945, r7946, r7947, r7948, r7949, r7950, r7951, r7952, r7953;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7945, "1", 10, MPFR_RNDN);
        mpfr_init(r7946);
        mpfr_init(r7947);
        mpfr_init(r7948);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init(r7953);
}

double f_dm(double B, double x) {
        ;
        mpfr_set_d(r7946, B, MPFR_RNDN);
        mpfr_sin(r7947, r7946, MPFR_RNDN);
        mpfr_div(r7948, r7945, r7947, MPFR_RNDN);
        mpfr_set_d(r7949, x, MPFR_RNDN);
        mpfr_cos(r7950, r7946, MPFR_RNDN);
        mpfr_mul(r7951, r7949, r7950, MPFR_RNDN);
        mpfr_div(r7952, r7951, r7947, MPFR_RNDN);
        mpfr_sub(r7953, r7948, r7952, MPFR_RNDN);
        return mpfr_get_d(r7953, MPFR_RNDN);
}

