#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 r30461473 = x;
        float r30461474 = 1;
        float r30461475 = B;
        float r30461476 = tan(r30461475);
        float r30461477 = r30461474 / r30461476;
        float r30461478 = r30461473 * r30461477;
        float r30461479 = -r30461478;
        float r30461480 = sin(r30461475);
        float r30461481 = r30461474 / r30461480;
        float r30461482 = r30461479 + r30461481;
        return r30461482;
}

double f_id(double B, double x) {
        double r30461483 = x;
        double r30461484 = 1;
        double r30461485 = B;
        double r30461486 = tan(r30461485);
        double r30461487 = r30461484 / r30461486;
        double r30461488 = r30461483 * r30461487;
        double r30461489 = -r30461488;
        double r30461490 = sin(r30461485);
        double r30461491 = r30461484 / r30461490;
        double r30461492 = r30461489 + r30461491;
        return r30461492;
}


double f_of(float B, float x) {
        float r30461493 = x;
        float r30461494 = 1;
        float r30461495 = B;
        float r30461496 = tan(r30461495);
        float r30461497 = r30461494 / r30461496;
        float r30461498 = r30461493 * r30461497;
        float r30461499 = -r30461498;
        float r30461500 = sin(r30461495);
        float r30461501 = r30461494 / r30461500;
        float r30461502 = r30461499 + r30461501;
        return r30461502;
}

double f_od(double B, double x) {
        double r30461503 = x;
        double r30461504 = 1;
        double r30461505 = B;
        double r30461506 = tan(r30461505);
        double r30461507 = r30461504 / r30461506;
        double r30461508 = r30461503 * r30461507;
        double r30461509 = -r30461508;
        double r30461510 = sin(r30461505);
        double r30461511 = r30461504 / r30461510;
        double r30461512 = r30461509 + r30461511;
        return r30461512;
}

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 r30461513, r30461514, r30461515, r30461516, r30461517, r30461518, r30461519, r30461520, r30461521, r30461522;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r30461513);
        mpfr_init_set_str(r30461514, "1", 10, MPFR_RNDN);
        mpfr_init(r30461515);
        mpfr_init(r30461516);
        mpfr_init(r30461517);
        mpfr_init(r30461518);
        mpfr_init(r30461519);
        mpfr_init(r30461520);
        mpfr_init(r30461521);
        mpfr_init(r30461522);
}

double f_im(double B, double x) {
        mpfr_set_d(r30461513, x, MPFR_RNDN);
        ;
        mpfr_set_d(r30461515, B, MPFR_RNDN);
        mpfr_tan(r30461516, r30461515, MPFR_RNDN);
        mpfr_div(r30461517, r30461514, r30461516, MPFR_RNDN);
        mpfr_mul(r30461518, r30461513, r30461517, MPFR_RNDN);
        mpfr_neg(r30461519, r30461518, MPFR_RNDN);
        mpfr_sin(r30461520, r30461515, MPFR_RNDN);
        mpfr_div(r30461521, r30461514, r30461520, MPFR_RNDN);
        mpfr_add(r30461522, r30461519, r30461521, MPFR_RNDN);
        return mpfr_get_d(r30461522, MPFR_RNDN);
}

static mpfr_t r30461523, r30461524, r30461525, r30461526, r30461527, r30461528, r30461529, r30461530, r30461531, r30461532;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r30461523);
        mpfr_init_set_str(r30461524, "1", 10, MPFR_RNDN);
        mpfr_init(r30461525);
        mpfr_init(r30461526);
        mpfr_init(r30461527);
        mpfr_init(r30461528);
        mpfr_init(r30461529);
        mpfr_init(r30461530);
        mpfr_init(r30461531);
        mpfr_init(r30461532);
}

double f_fm(double B, double x) {
        mpfr_set_d(r30461523, x, MPFR_RNDN);
        ;
        mpfr_set_d(r30461525, B, MPFR_RNDN);
        mpfr_tan(r30461526, r30461525, MPFR_RNDN);
        mpfr_div(r30461527, r30461524, r30461526, MPFR_RNDN);
        mpfr_mul(r30461528, r30461523, r30461527, MPFR_RNDN);
        mpfr_neg(r30461529, r30461528, MPFR_RNDN);
        mpfr_sin(r30461530, r30461525, MPFR_RNDN);
        mpfr_div(r30461531, r30461524, r30461530, MPFR_RNDN);
        mpfr_add(r30461532, r30461529, r30461531, MPFR_RNDN);
        return mpfr_get_d(r30461532, MPFR_RNDN);
}

static mpfr_t r30461533, r30461534, r30461535, r30461536, r30461537, r30461538, r30461539, r30461540, r30461541, r30461542;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r30461533);
        mpfr_init_set_str(r30461534, "1", 10, MPFR_RNDN);
        mpfr_init(r30461535);
        mpfr_init(r30461536);
        mpfr_init(r30461537);
        mpfr_init(r30461538);
        mpfr_init(r30461539);
        mpfr_init(r30461540);
        mpfr_init(r30461541);
        mpfr_init(r30461542);
}

double f_dm(double B, double x) {
        mpfr_set_d(r30461533, x, MPFR_RNDN);
        ;
        mpfr_set_d(r30461535, B, MPFR_RNDN);
        mpfr_tan(r30461536, r30461535, MPFR_RNDN);
        mpfr_div(r30461537, r30461534, r30461536, MPFR_RNDN);
        mpfr_mul(r30461538, r30461533, r30461537, MPFR_RNDN);
        mpfr_neg(r30461539, r30461538, MPFR_RNDN);
        mpfr_sin(r30461540, r30461535, MPFR_RNDN);
        mpfr_div(r30461541, r30461534, r30461540, MPFR_RNDN);
        mpfr_add(r30461542, r30461539, r30461541, MPFR_RNDN);
        return mpfr_get_d(r30461542, MPFR_RNDN);
}

