#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 r7610 = x;
        float r7611 = 1.0f;
        float r7612 = B;
        float r7613 = tan(r7612);
        float r7614 = r7611 / r7613;
        float r7615 = r7610 * r7614;
        float r7616 = -r7615;
        float r7617 = F;
        float r7618 = sin(r7612);
        float r7619 = r7617 / r7618;
        float r7620 = r7617 * r7617;
        float r7621 = 2.0f;
        float r7622 = r7620 + r7621;
        float r7623 = r7621 * r7610;
        float r7624 = r7622 + r7623;
        float r7625 = r7611 / r7621;
        float r7626 = -r7625;
        float r7627 = pow(r7624, r7626);
        float r7628 = r7619 * r7627;
        float r7629 = r7616 + r7628;
        return r7629;
}

double f_id(double F, double B, double x) {
        double r7630 = x;
        double r7631 = 1.0;
        double r7632 = B;
        double r7633 = tan(r7632);
        double r7634 = r7631 / r7633;
        double r7635 = r7630 * r7634;
        double r7636 = -r7635;
        double r7637 = F;
        double r7638 = sin(r7632);
        double r7639 = r7637 / r7638;
        double r7640 = r7637 * r7637;
        double r7641 = 2.0;
        double r7642 = r7640 + r7641;
        double r7643 = r7641 * r7630;
        double r7644 = r7642 + r7643;
        double r7645 = r7631 / r7641;
        double r7646 = -r7645;
        double r7647 = pow(r7644, r7646);
        double r7648 = r7639 * r7647;
        double r7649 = r7636 + r7648;
        return r7649;
}


double f_of(float F, float B, float x) {
        float r7650 = 1.0f;
        float r7651 = 2.0f;
        float r7652 = x;
        float r7653 = F;
        float r7654 = fma(r7653, r7653, r7651);
        float r7655 = fma(r7651, r7652, r7654);
        float r7656 = r7650 / r7651;
        float r7657 = pow(r7655, r7656);
        float r7658 = r7650 / r7657;
        float r7659 = B;
        float r7660 = sin(r7659);
        float r7661 = r7653 / r7660;
        float r7662 = -r7652;
        float r7663 = tan(r7659);
        float r7664 = r7662 / r7663;
        float r7665 = fma(r7658, r7661, r7664);
        return r7665;
}

double f_od(double F, double B, double x) {
        double r7666 = 1.0;
        double r7667 = 2.0;
        double r7668 = x;
        double r7669 = F;
        double r7670 = fma(r7669, r7669, r7667);
        double r7671 = fma(r7667, r7668, r7670);
        double r7672 = r7666 / r7667;
        double r7673 = pow(r7671, r7672);
        double r7674 = r7666 / r7673;
        double r7675 = B;
        double r7676 = sin(r7675);
        double r7677 = r7669 / r7676;
        double r7678 = -r7668;
        double r7679 = tan(r7675);
        double r7680 = r7678 / r7679;
        double r7681 = fma(r7674, r7677, r7680);
        return r7681;
}

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 r7682, r7683, r7684, r7685, r7686, r7687, r7688, r7689, r7690, r7691, r7692, r7693, r7694, r7695, r7696, r7697, r7698, r7699, r7700, r7701;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r7682);
        mpfr_init_set_str(r7683, "1", 10, MPFR_RNDN);
        mpfr_init(r7684);
        mpfr_init(r7685);
        mpfr_init(r7686);
        mpfr_init(r7687);
        mpfr_init(r7688);
        mpfr_init(r7689);
        mpfr_init(r7690);
        mpfr_init(r7691);
        mpfr_init(r7692);
        mpfr_init_set_str(r7693, "2", 10, MPFR_RNDN);
        mpfr_init(r7694);
        mpfr_init(r7695);
        mpfr_init(r7696);
        mpfr_init(r7697);
        mpfr_init(r7698);
        mpfr_init(r7699);
        mpfr_init(r7700);
        mpfr_init(r7701);
}

double f_im(double F, double B, double x) {
        mpfr_set_d(r7682, x, MPFR_RNDN);
        ;
        mpfr_set_d(r7684, B, MPFR_RNDN);
        mpfr_tan(r7685, r7684, MPFR_RNDN);
        mpfr_div(r7686, r7683, r7685, MPFR_RNDN);
        mpfr_mul(r7687, r7682, r7686, MPFR_RNDN);
        mpfr_neg(r7688, r7687, MPFR_RNDN);
        mpfr_set_d(r7689, F, MPFR_RNDN);
        mpfr_sin(r7690, r7684, MPFR_RNDN);
        mpfr_div(r7691, r7689, r7690, MPFR_RNDN);
        mpfr_mul(r7692, r7689, r7689, MPFR_RNDN);
        ;
        mpfr_add(r7694, r7692, r7693, MPFR_RNDN);
        mpfr_mul(r7695, r7693, r7682, MPFR_RNDN);
        mpfr_add(r7696, r7694, r7695, MPFR_RNDN);
        mpfr_div(r7697, r7683, r7693, MPFR_RNDN);
        mpfr_neg(r7698, r7697, MPFR_RNDN);
        mpfr_pow(r7699, r7696, r7698, MPFR_RNDN);
        mpfr_mul(r7700, r7691, r7699, MPFR_RNDN);
        mpfr_add(r7701, r7688, r7700, MPFR_RNDN);
        return mpfr_get_d(r7701, MPFR_RNDN);
}

static mpfr_t r7702, r7703, r7704, r7705, r7706, r7707, r7708, r7709, r7710, r7711, r7712, r7713, r7714, r7715, r7716, r7717;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7702, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r7703, "2", 10, MPFR_RNDN);
        mpfr_init(r7704);
        mpfr_init(r7705);
        mpfr_init(r7706);
        mpfr_init(r7707);
        mpfr_init(r7708);
        mpfr_init(r7709);
        mpfr_init(r7710);
        mpfr_init(r7711);
        mpfr_init(r7712);
        mpfr_init(r7713);
        mpfr_init(r7714);
        mpfr_init(r7715);
        mpfr_init(r7716);
        mpfr_init(r7717);
}

double f_fm(double F, double B, double x) {
        ;
        ;
        mpfr_set_d(r7704, x, MPFR_RNDN);
        mpfr_set_d(r7705, F, MPFR_RNDN);
        mpfr_fma(r7706, r7705, r7705, r7703, MPFR_RNDN);
        mpfr_fma(r7707, r7703, r7704, r7706, MPFR_RNDN);
        mpfr_div(r7708, r7702, r7703, MPFR_RNDN);
        mpfr_pow(r7709, r7707, r7708, MPFR_RNDN);
        mpfr_div(r7710, r7702, r7709, MPFR_RNDN);
        mpfr_set_d(r7711, B, MPFR_RNDN);
        mpfr_sin(r7712, r7711, MPFR_RNDN);
        mpfr_div(r7713, r7705, r7712, MPFR_RNDN);
        mpfr_neg(r7714, r7704, MPFR_RNDN);
        mpfr_tan(r7715, r7711, MPFR_RNDN);
        mpfr_div(r7716, r7714, r7715, MPFR_RNDN);
        mpfr_fma(r7717, r7710, r7713, r7716, MPFR_RNDN);
        return mpfr_get_d(r7717, MPFR_RNDN);
}

static mpfr_t r7718, r7719, r7720, r7721, r7722, r7723, r7724, r7725, r7726, r7727, r7728, r7729, r7730, r7731, r7732, r7733;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7718, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r7719, "2", 10, MPFR_RNDN);
        mpfr_init(r7720);
        mpfr_init(r7721);
        mpfr_init(r7722);
        mpfr_init(r7723);
        mpfr_init(r7724);
        mpfr_init(r7725);
        mpfr_init(r7726);
        mpfr_init(r7727);
        mpfr_init(r7728);
        mpfr_init(r7729);
        mpfr_init(r7730);
        mpfr_init(r7731);
        mpfr_init(r7732);
        mpfr_init(r7733);
}

double f_dm(double F, double B, double x) {
        ;
        ;
        mpfr_set_d(r7720, x, MPFR_RNDN);
        mpfr_set_d(r7721, F, MPFR_RNDN);
        mpfr_fma(r7722, r7721, r7721, r7719, MPFR_RNDN);
        mpfr_fma(r7723, r7719, r7720, r7722, MPFR_RNDN);
        mpfr_div(r7724, r7718, r7719, MPFR_RNDN);
        mpfr_pow(r7725, r7723, r7724, MPFR_RNDN);
        mpfr_div(r7726, r7718, r7725, MPFR_RNDN);
        mpfr_set_d(r7727, B, MPFR_RNDN);
        mpfr_sin(r7728, r7727, MPFR_RNDN);
        mpfr_div(r7729, r7721, r7728, MPFR_RNDN);
        mpfr_neg(r7730, r7720, MPFR_RNDN);
        mpfr_tan(r7731, r7727, MPFR_RNDN);
        mpfr_div(r7732, r7730, r7731, MPFR_RNDN);
        mpfr_fma(r7733, r7726, r7729, r7732, MPFR_RNDN);
        return mpfr_get_d(r7733, MPFR_RNDN);
}

