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

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


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

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

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

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

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

static mpfr_t r7699, r7700, r7701, r7702, r7703, r7704, r7705, r7706, r7707, r7708, r7709, r7710, r7711, r7712, r7713, r7714;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7699, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r7700, "2", 10, MPFR_RNDN);
        mpfr_init(r7701);
        mpfr_init(r7702);
        mpfr_init(r7703);
        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);
}

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

static mpfr_t r7715, r7716, r7717, r7718, r7719, r7720, r7721, r7722, r7723, r7724, r7725, r7726, r7727, r7728, r7729, r7730;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r7715, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r7716, "2", 10, MPFR_RNDN);
        mpfr_init(r7717);
        mpfr_init(r7718);
        mpfr_init(r7719);
        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);
}

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

