#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 r19038 = x;
        float r19039 = 1.0f;
        float r19040 = B;
        float r19041 = tan(r19040);
        float r19042 = r19039 / r19041;
        float r19043 = r19038 * r19042;
        float r19044 = -r19043;
        float r19045 = sin(r19040);
        float r19046 = r19039 / r19045;
        float r19047 = r19044 + r19046;
        return r19047;
}

double f_id(double B, double x) {
        double r19048 = x;
        double r19049 = 1.0;
        double r19050 = B;
        double r19051 = tan(r19050);
        double r19052 = r19049 / r19051;
        double r19053 = r19048 * r19052;
        double r19054 = -r19053;
        double r19055 = sin(r19050);
        double r19056 = r19049 / r19055;
        double r19057 = r19054 + r19056;
        return r19057;
}


double f_of(float B, float x) {
        float r19058 = 1.0f;
        float r19059 = B;
        float r19060 = sin(r19059);
        float r19061 = r19058 / r19060;
        float r19062 = x;
        float r19063 = -r19062;
        float r19064 = r19063 / r19060;
        float r19065 = cos(r19059);
        float r19066 = r19064 * r19065;
        float r19067 = r19061 + r19066;
        return r19067;
}

double f_od(double B, double x) {
        double r19068 = 1.0;
        double r19069 = B;
        double r19070 = sin(r19069);
        double r19071 = r19068 / r19070;
        double r19072 = x;
        double r19073 = -r19072;
        double r19074 = r19073 / r19070;
        double r19075 = cos(r19069);
        double r19076 = r19074 * r19075;
        double r19077 = r19071 + r19076;
        return r19077;
}

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 r19078, r19079, r19080, r19081, r19082, r19083, r19084, r19085, r19086, r19087;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r19078);
        mpfr_init_set_str(r19079, "1", 10, MPFR_RNDN);
        mpfr_init(r19080);
        mpfr_init(r19081);
        mpfr_init(r19082);
        mpfr_init(r19083);
        mpfr_init(r19084);
        mpfr_init(r19085);
        mpfr_init(r19086);
        mpfr_init(r19087);
}

double f_im(double B, double x) {
        mpfr_set_d(r19078, x, MPFR_RNDN);
        ;
        mpfr_set_d(r19080, B, MPFR_RNDN);
        mpfr_tan(r19081, r19080, MPFR_RNDN);
        mpfr_div(r19082, r19079, r19081, MPFR_RNDN);
        mpfr_mul(r19083, r19078, r19082, MPFR_RNDN);
        mpfr_neg(r19084, r19083, MPFR_RNDN);
        mpfr_sin(r19085, r19080, MPFR_RNDN);
        mpfr_div(r19086, r19079, r19085, MPFR_RNDN);
        mpfr_add(r19087, r19084, r19086, MPFR_RNDN);
        return mpfr_get_d(r19087, MPFR_RNDN);
}

static mpfr_t r19088, r19089, r19090, r19091, r19092, r19093, r19094, r19095, r19096, r19097;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r19088, "1", 10, MPFR_RNDN);
        mpfr_init(r19089);
        mpfr_init(r19090);
        mpfr_init(r19091);
        mpfr_init(r19092);
        mpfr_init(r19093);
        mpfr_init(r19094);
        mpfr_init(r19095);
        mpfr_init(r19096);
        mpfr_init(r19097);
}

double f_fm(double B, double x) {
        ;
        mpfr_set_d(r19089, B, MPFR_RNDN);
        mpfr_sin(r19090, r19089, MPFR_RNDN);
        mpfr_div(r19091, r19088, r19090, MPFR_RNDN);
        mpfr_set_d(r19092, x, MPFR_RNDN);
        mpfr_neg(r19093, r19092, MPFR_RNDN);
        mpfr_div(r19094, r19093, r19090, MPFR_RNDN);
        mpfr_cos(r19095, r19089, MPFR_RNDN);
        mpfr_mul(r19096, r19094, r19095, MPFR_RNDN);
        mpfr_add(r19097, r19091, r19096, MPFR_RNDN);
        return mpfr_get_d(r19097, MPFR_RNDN);
}

static mpfr_t r19098, r19099, r19100, r19101, r19102, r19103, r19104, r19105, r19106, r19107;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r19098, "1", 10, MPFR_RNDN);
        mpfr_init(r19099);
        mpfr_init(r19100);
        mpfr_init(r19101);
        mpfr_init(r19102);
        mpfr_init(r19103);
        mpfr_init(r19104);
        mpfr_init(r19105);
        mpfr_init(r19106);
        mpfr_init(r19107);
}

double f_dm(double B, double x) {
        ;
        mpfr_set_d(r19099, B, MPFR_RNDN);
        mpfr_sin(r19100, r19099, MPFR_RNDN);
        mpfr_div(r19101, r19098, r19100, MPFR_RNDN);
        mpfr_set_d(r19102, x, MPFR_RNDN);
        mpfr_neg(r19103, r19102, MPFR_RNDN);
        mpfr_div(r19104, r19103, r19100, MPFR_RNDN);
        mpfr_cos(r19105, r19099, MPFR_RNDN);
        mpfr_mul(r19106, r19104, r19105, MPFR_RNDN);
        mpfr_add(r19107, r19101, r19106, MPFR_RNDN);
        return mpfr_get_d(r19107, MPFR_RNDN);
}

