#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 r18275 = x;
        float r18276 = 1.0f;
        float r18277 = B;
        float r18278 = tan(r18277);
        float r18279 = r18276 / r18278;
        float r18280 = r18275 * r18279;
        float r18281 = -r18280;
        float r18282 = F;
        float r18283 = sin(r18277);
        float r18284 = r18282 / r18283;
        float r18285 = r18282 * r18282;
        float r18286 = 2.0f;
        float r18287 = r18285 + r18286;
        float r18288 = r18286 * r18275;
        float r18289 = r18287 + r18288;
        float r18290 = r18276 / r18286;
        float r18291 = -r18290;
        float r18292 = pow(r18289, r18291);
        float r18293 = r18284 * r18292;
        float r18294 = r18281 + r18293;
        return r18294;
}

double f_id(double F, double B, double x) {
        double r18295 = x;
        double r18296 = 1.0;
        double r18297 = B;
        double r18298 = tan(r18297);
        double r18299 = r18296 / r18298;
        double r18300 = r18295 * r18299;
        double r18301 = -r18300;
        double r18302 = F;
        double r18303 = sin(r18297);
        double r18304 = r18302 / r18303;
        double r18305 = r18302 * r18302;
        double r18306 = 2.0;
        double r18307 = r18305 + r18306;
        double r18308 = r18306 * r18295;
        double r18309 = r18307 + r18308;
        double r18310 = r18296 / r18306;
        double r18311 = -r18310;
        double r18312 = pow(r18309, r18311);
        double r18313 = r18304 * r18312;
        double r18314 = r18301 + r18313;
        return r18314;
}


double f_of(float F, float B, float x) {
        float r18315 = x;
        float r18316 = -r18315;
        float r18317 = B;
        float r18318 = tan(r18317);
        float r18319 = r18316 / r18318;
        float r18320 = F;
        float r18321 = r18320 * r18320;
        float r18322 = 2.0f;
        float r18323 = r18315 + r18322;
        float r18324 = r18323 + r18315;
        float r18325 = r18321 + r18324;
        float r18326 = 1.0f;
        float r18327 = r18326 / r18322;
        float r18328 = -r18327;
        float r18329 = pow(r18325, r18328);
        float r18330 = sin(r18317);
        float r18331 = r18329 / r18330;
        float r18332 = r18326 / r18320;
        float r18333 = r18331 / r18332;
        float r18334 = r18319 + r18333;
        return r18334;
}

double f_od(double F, double B, double x) {
        double r18335 = x;
        double r18336 = -r18335;
        double r18337 = B;
        double r18338 = tan(r18337);
        double r18339 = r18336 / r18338;
        double r18340 = F;
        double r18341 = r18340 * r18340;
        double r18342 = 2.0;
        double r18343 = r18335 + r18342;
        double r18344 = r18343 + r18335;
        double r18345 = r18341 + r18344;
        double r18346 = 1.0;
        double r18347 = r18346 / r18342;
        double r18348 = -r18347;
        double r18349 = pow(r18345, r18348);
        double r18350 = sin(r18337);
        double r18351 = r18349 / r18350;
        double r18352 = r18346 / r18340;
        double r18353 = r18351 / r18352;
        double r18354 = r18339 + r18353;
        return r18354;
}

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 r18355, r18356, r18357, r18358, r18359, r18360, r18361, r18362, r18363, r18364, r18365, r18366, r18367, r18368, r18369, r18370, r18371, r18372, r18373, r18374;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r18355);
        mpfr_init_set_str(r18356, "1", 10, MPFR_RNDN);
        mpfr_init(r18357);
        mpfr_init(r18358);
        mpfr_init(r18359);
        mpfr_init(r18360);
        mpfr_init(r18361);
        mpfr_init(r18362);
        mpfr_init(r18363);
        mpfr_init(r18364);
        mpfr_init(r18365);
        mpfr_init_set_str(r18366, "2", 10, MPFR_RNDN);
        mpfr_init(r18367);
        mpfr_init(r18368);
        mpfr_init(r18369);
        mpfr_init(r18370);
        mpfr_init(r18371);
        mpfr_init(r18372);
        mpfr_init(r18373);
        mpfr_init(r18374);
}

double f_im(double F, double B, double x) {
        mpfr_set_d(r18355, x, MPFR_RNDN);
        ;
        mpfr_set_d(r18357, B, MPFR_RNDN);
        mpfr_tan(r18358, r18357, MPFR_RNDN);
        mpfr_div(r18359, r18356, r18358, MPFR_RNDN);
        mpfr_mul(r18360, r18355, r18359, MPFR_RNDN);
        mpfr_neg(r18361, r18360, MPFR_RNDN);
        mpfr_set_d(r18362, F, MPFR_RNDN);
        mpfr_sin(r18363, r18357, MPFR_RNDN);
        mpfr_div(r18364, r18362, r18363, MPFR_RNDN);
        mpfr_sqr(r18365, r18362, MPFR_RNDN);
        ;
        mpfr_add(r18367, r18365, r18366, MPFR_RNDN);
        mpfr_mul(r18368, r18366, r18355, MPFR_RNDN);
        mpfr_add(r18369, r18367, r18368, MPFR_RNDN);
        mpfr_div(r18370, r18356, r18366, MPFR_RNDN);
        mpfr_neg(r18371, r18370, MPFR_RNDN);
        mpfr_pow(r18372, r18369, r18371, MPFR_RNDN);
        mpfr_mul(r18373, r18364, r18372, MPFR_RNDN);
        mpfr_add(r18374, r18361, r18373, MPFR_RNDN);
        return mpfr_get_d(r18374, MPFR_RNDN);
}

static mpfr_t r18375, r18376, r18377, r18378, r18379, r18380, r18381, r18382, r18383, r18384, r18385, r18386, r18387, r18388, r18389, r18390, r18391, r18392, r18393, r18394;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r18375);
        mpfr_init(r18376);
        mpfr_init(r18377);
        mpfr_init(r18378);
        mpfr_init(r18379);
        mpfr_init(r18380);
        mpfr_init(r18381);
        mpfr_init_set_str(r18382, "2", 10, MPFR_RNDN);
        mpfr_init(r18383);
        mpfr_init(r18384);
        mpfr_init(r18385);
        mpfr_init_set_str(r18386, "1", 10, MPFR_RNDN);
        mpfr_init(r18387);
        mpfr_init(r18388);
        mpfr_init(r18389);
        mpfr_init(r18390);
        mpfr_init(r18391);
        mpfr_init(r18392);
        mpfr_init(r18393);
        mpfr_init(r18394);
}

double f_fm(double F, double B, double x) {
        mpfr_set_d(r18375, x, MPFR_RNDN);
        mpfr_neg(r18376, r18375, MPFR_RNDN);
        mpfr_set_d(r18377, B, MPFR_RNDN);
        mpfr_tan(r18378, r18377, MPFR_RNDN);
        mpfr_div(r18379, r18376, r18378, MPFR_RNDN);
        mpfr_set_d(r18380, F, MPFR_RNDN);
        mpfr_mul(r18381, r18380, r18380, MPFR_RNDN);
        ;
        mpfr_add(r18383, r18375, r18382, MPFR_RNDN);
        mpfr_add(r18384, r18383, r18375, MPFR_RNDN);
        mpfr_add(r18385, r18381, r18384, MPFR_RNDN);
        ;
        mpfr_div(r18387, r18386, r18382, MPFR_RNDN);
        mpfr_neg(r18388, r18387, MPFR_RNDN);
        mpfr_pow(r18389, r18385, r18388, MPFR_RNDN);
        mpfr_sin(r18390, r18377, MPFR_RNDN);
        mpfr_div(r18391, r18389, r18390, MPFR_RNDN);
        mpfr_div(r18392, r18386, r18380, MPFR_RNDN);
        mpfr_div(r18393, r18391, r18392, MPFR_RNDN);
        mpfr_add(r18394, r18379, r18393, MPFR_RNDN);
        return mpfr_get_d(r18394, MPFR_RNDN);
}

static mpfr_t r18395, r18396, r18397, r18398, r18399, r18400, r18401, r18402, r18403, r18404, r18405, r18406, r18407, r18408, r18409, r18410, r18411, r18412, r18413, r18414;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r18395);
        mpfr_init(r18396);
        mpfr_init(r18397);
        mpfr_init(r18398);
        mpfr_init(r18399);
        mpfr_init(r18400);
        mpfr_init(r18401);
        mpfr_init_set_str(r18402, "2", 10, MPFR_RNDN);
        mpfr_init(r18403);
        mpfr_init(r18404);
        mpfr_init(r18405);
        mpfr_init_set_str(r18406, "1", 10, MPFR_RNDN);
        mpfr_init(r18407);
        mpfr_init(r18408);
        mpfr_init(r18409);
        mpfr_init(r18410);
        mpfr_init(r18411);
        mpfr_init(r18412);
        mpfr_init(r18413);
        mpfr_init(r18414);
}

double f_dm(double F, double B, double x) {
        mpfr_set_d(r18395, x, MPFR_RNDN);
        mpfr_neg(r18396, r18395, MPFR_RNDN);
        mpfr_set_d(r18397, B, MPFR_RNDN);
        mpfr_tan(r18398, r18397, MPFR_RNDN);
        mpfr_div(r18399, r18396, r18398, MPFR_RNDN);
        mpfr_set_d(r18400, F, MPFR_RNDN);
        mpfr_mul(r18401, r18400, r18400, MPFR_RNDN);
        ;
        mpfr_add(r18403, r18395, r18402, MPFR_RNDN);
        mpfr_add(r18404, r18403, r18395, MPFR_RNDN);
        mpfr_add(r18405, r18401, r18404, MPFR_RNDN);
        ;
        mpfr_div(r18407, r18406, r18402, MPFR_RNDN);
        mpfr_neg(r18408, r18407, MPFR_RNDN);
        mpfr_pow(r18409, r18405, r18408, MPFR_RNDN);
        mpfr_sin(r18410, r18397, MPFR_RNDN);
        mpfr_div(r18411, r18409, r18410, MPFR_RNDN);
        mpfr_div(r18412, r18406, r18400, MPFR_RNDN);
        mpfr_div(r18413, r18411, r18412, MPFR_RNDN);
        mpfr_add(r18414, r18399, r18413, MPFR_RNDN);
        return mpfr_get_d(r18414, MPFR_RNDN);
}

