#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 r7591 = x;
        float r7592 = 1.0f;
        float r7593 = B;
        float r7594 = tan(r7593);
        float r7595 = r7592 / r7594;
        float r7596 = r7591 * r7595;
        float r7597 = -r7596;
        float r7598 = F;
        float r7599 = sin(r7593);
        float r7600 = r7598 / r7599;
        float r7601 = r7598 * r7598;
        float r7602 = 2.0f;
        float r7603 = r7601 + r7602;
        float r7604 = r7602 * r7591;
        float r7605 = r7603 + r7604;
        float r7606 = r7592 / r7602;
        float r7607 = -r7606;
        float r7608 = pow(r7605, r7607);
        float r7609 = r7600 * r7608;
        float r7610 = r7597 + r7609;
        return r7610;
}

double f_id(double F, double B, double x) {
        double r7611 = x;
        double r7612 = 1.0;
        double r7613 = B;
        double r7614 = tan(r7613);
        double r7615 = r7612 / r7614;
        double r7616 = r7611 * r7615;
        double r7617 = -r7616;
        double r7618 = F;
        double r7619 = sin(r7613);
        double r7620 = r7618 / r7619;
        double r7621 = r7618 * r7618;
        double r7622 = 2.0;
        double r7623 = r7621 + r7622;
        double r7624 = r7622 * r7611;
        double r7625 = r7623 + r7624;
        double r7626 = r7612 / r7622;
        double r7627 = -r7626;
        double r7628 = pow(r7625, r7627);
        double r7629 = r7620 * r7628;
        double r7630 = r7617 + r7629;
        return r7630;
}


double f_of(float F, float B, float x) {
        float r7631 = F;
        float r7632 = -1668353.1281310604f;
        bool r7633 = r7631 <= r7632;
        float r7634 = 1.0f;
        float r7635 = B;
        float r7636 = sin(r7635);
        float r7637 = 2.0f;
        float r7638 = pow(r7631, r7637);
        float r7639 = r7636 * r7638;
        float r7640 = r7634 / r7639;
        float r7641 = r7634 / r7636;
        float r7642 = r7640 - r7641;
        float r7643 = x;
        float r7644 = tan(r7635);
        float r7645 = r7643 / r7644;
        float r7646 = r7642 - r7645;
        float r7647 = 467300.3104261082f;
        bool r7648 = r7631 <= r7647;
        float r7649 = r7637 * r7643;
        float r7650 = r7631 * r7631;
        float r7651 = r7637 + r7650;
        float r7652 = r7649 + r7651;
        float r7653 = r7634 / r7637;
        float r7654 = pow(r7652, r7653);
        float r7655 = r7654 * r7636;
        float r7656 = r7631 / r7655;
        float r7657 = r7656 - r7645;
        float r7658 = r7641 - r7640;
        float r7659 = r7658 - r7645;
        float r7660 = r7648 ? r7657 : r7659;
        float r7661 = r7633 ? r7646 : r7660;
        return r7661;
}

double f_od(double F, double B, double x) {
        double r7662 = F;
        double r7663 = -1668353.1281310604;
        bool r7664 = r7662 <= r7663;
        double r7665 = 1.0;
        double r7666 = B;
        double r7667 = sin(r7666);
        double r7668 = 2.0;
        double r7669 = pow(r7662, r7668);
        double r7670 = r7667 * r7669;
        double r7671 = r7665 / r7670;
        double r7672 = r7665 / r7667;
        double r7673 = r7671 - r7672;
        double r7674 = x;
        double r7675 = tan(r7666);
        double r7676 = r7674 / r7675;
        double r7677 = r7673 - r7676;
        double r7678 = 467300.3104261082;
        bool r7679 = r7662 <= r7678;
        double r7680 = r7668 * r7674;
        double r7681 = r7662 * r7662;
        double r7682 = r7668 + r7681;
        double r7683 = r7680 + r7682;
        double r7684 = r7665 / r7668;
        double r7685 = pow(r7683, r7684);
        double r7686 = r7685 * r7667;
        double r7687 = r7662 / r7686;
        double r7688 = r7687 - r7676;
        double r7689 = r7672 - r7671;
        double r7690 = r7689 - r7676;
        double r7691 = r7679 ? r7688 : r7690;
        double r7692 = r7664 ? r7677 : r7691;
        return r7692;
}

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 r7693, r7694, r7695, r7696, r7697, r7698, r7699, r7700, r7701, r7702, r7703, r7704, r7705, r7706, r7707, r7708, r7709, r7710, r7711, r7712;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r7693);
        mpfr_init_set_str(r7694, "1", 10, MPFR_RNDN);
        mpfr_init(r7695);
        mpfr_init(r7696);
        mpfr_init(r7697);
        mpfr_init(r7698);
        mpfr_init(r7699);
        mpfr_init(r7700);
        mpfr_init(r7701);
        mpfr_init(r7702);
        mpfr_init(r7703);
        mpfr_init_set_str(r7704, "2", 10, MPFR_RNDN);
        mpfr_init(r7705);
        mpfr_init(r7706);
        mpfr_init(r7707);
        mpfr_init(r7708);
        mpfr_init(r7709);
        mpfr_init(r7710);
        mpfr_init(r7711);
        mpfr_init(r7712);
}

double f_im(double F, double B, double x) {
        mpfr_set_d(r7693, x, MPFR_RNDN);
        ;
        mpfr_set_d(r7695, B, MPFR_RNDN);
        mpfr_tan(r7696, r7695, MPFR_RNDN);
        mpfr_div(r7697, r7694, r7696, MPFR_RNDN);
        mpfr_mul(r7698, r7693, r7697, MPFR_RNDN);
        mpfr_neg(r7699, r7698, MPFR_RNDN);
        mpfr_set_d(r7700, F, MPFR_RNDN);
        mpfr_sin(r7701, r7695, MPFR_RNDN);
        mpfr_div(r7702, r7700, r7701, MPFR_RNDN);
        mpfr_mul(r7703, r7700, r7700, MPFR_RNDN);
        ;
        mpfr_add(r7705, r7703, r7704, MPFR_RNDN);
        mpfr_mul(r7706, r7704, r7693, MPFR_RNDN);
        mpfr_add(r7707, r7705, r7706, MPFR_RNDN);
        mpfr_div(r7708, r7694, r7704, MPFR_RNDN);
        mpfr_neg(r7709, r7708, MPFR_RNDN);
        mpfr_pow(r7710, r7707, r7709, MPFR_RNDN);
        mpfr_mul(r7711, r7702, r7710, MPFR_RNDN);
        mpfr_add(r7712, r7699, r7711, MPFR_RNDN);
        return mpfr_get_d(r7712, MPFR_RNDN);
}

static mpfr_t r7713, r7714, r7715, r7716, r7717, r7718, r7719, r7720, r7721, r7722, r7723, r7724, r7725, r7726, r7727, r7728, r7729, r7730, r7731, r7732, r7733, r7734, r7735, r7736, r7737, r7738, r7739, r7740, r7741, r7742, r7743;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r7713);
        mpfr_init_set_str(r7714, "-1668353.1281310604", 10, MPFR_RNDN);
        mpfr_init(r7715);
        mpfr_init_set_str(r7716, "1", 10, MPFR_RNDN);
        mpfr_init(r7717);
        mpfr_init(r7718);
        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_set_str(r7729, "467300.3104261082", 10, MPFR_RNDN);
        mpfr_init(r7730);
        mpfr_init(r7731);
        mpfr_init(r7732);
        mpfr_init(r7733);
        mpfr_init(r7734);
        mpfr_init(r7735);
        mpfr_init(r7736);
        mpfr_init(r7737);
        mpfr_init(r7738);
        mpfr_init(r7739);
        mpfr_init(r7740);
        mpfr_init(r7741);
        mpfr_init(r7742);
        mpfr_init(r7743);
}

double f_fm(double F, double B, double x) {
        mpfr_set_d(r7713, F, MPFR_RNDN);
        ;
        mpfr_set_si(r7715, mpfr_cmp(r7713, r7714) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r7717, B, MPFR_RNDN);
        mpfr_sin(r7718, r7717, MPFR_RNDN);
        ;
        mpfr_pow(r7720, r7713, r7719, MPFR_RNDN);
        mpfr_mul(r7721, r7718, r7720, MPFR_RNDN);
        mpfr_div(r7722, r7716, r7721, MPFR_RNDN);
        mpfr_div(r7723, r7716, r7718, MPFR_RNDN);
        mpfr_sub(r7724, r7722, r7723, MPFR_RNDN);
        mpfr_set_d(r7725, x, MPFR_RNDN);
        mpfr_tan(r7726, r7717, MPFR_RNDN);
        mpfr_div(r7727, r7725, r7726, MPFR_RNDN);
        mpfr_sub(r7728, r7724, r7727, MPFR_RNDN);
        ;
        mpfr_set_si(r7730, mpfr_cmp(r7713, r7729) <= 0, MPFR_RNDN);
        mpfr_mul(r7731, r7719, r7725, MPFR_RNDN);
        mpfr_mul(r7732, r7713, r7713, MPFR_RNDN);
        mpfr_add(r7733, r7719, r7732, MPFR_RNDN);
        mpfr_add(r7734, r7731, r7733, MPFR_RNDN);
        mpfr_div(r7735, r7716, r7719, MPFR_RNDN);
        mpfr_pow(r7736, r7734, r7735, MPFR_RNDN);
        mpfr_mul(r7737, r7736, r7718, MPFR_RNDN);
        mpfr_div(r7738, r7713, r7737, MPFR_RNDN);
        mpfr_sub(r7739, r7738, r7727, MPFR_RNDN);
        mpfr_sub(r7740, r7723, r7722, MPFR_RNDN);
        mpfr_sub(r7741, r7740, r7727, MPFR_RNDN);
        if (mpfr_get_si(r7730, MPFR_RNDN)) { mpfr_set(r7742, r7739, MPFR_RNDN); } else { mpfr_set(r7742, r7741, MPFR_RNDN); };
        if (mpfr_get_si(r7715, MPFR_RNDN)) { mpfr_set(r7743, r7728, MPFR_RNDN); } else { mpfr_set(r7743, r7742, MPFR_RNDN); };
        return mpfr_get_d(r7743, MPFR_RNDN);
}

static mpfr_t r7744, r7745, r7746, r7747, r7748, r7749, r7750, r7751, r7752, r7753, r7754, r7755, r7756, r7757, r7758, r7759, r7760, r7761, r7762, r7763, r7764, r7765, r7766, r7767, r7768, r7769, r7770, r7771, r7772, r7773, r7774;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r7744);
        mpfr_init_set_str(r7745, "-1668353.1281310604", 10, MPFR_RNDN);
        mpfr_init(r7746);
        mpfr_init_set_str(r7747, "1", 10, MPFR_RNDN);
        mpfr_init(r7748);
        mpfr_init(r7749);
        mpfr_init_set_str(r7750, "2", 10, MPFR_RNDN);
        mpfr_init(r7751);
        mpfr_init(r7752);
        mpfr_init(r7753);
        mpfr_init(r7754);
        mpfr_init(r7755);
        mpfr_init(r7756);
        mpfr_init(r7757);
        mpfr_init(r7758);
        mpfr_init(r7759);
        mpfr_init_set_str(r7760, "467300.3104261082", 10, MPFR_RNDN);
        mpfr_init(r7761);
        mpfr_init(r7762);
        mpfr_init(r7763);
        mpfr_init(r7764);
        mpfr_init(r7765);
        mpfr_init(r7766);
        mpfr_init(r7767);
        mpfr_init(r7768);
        mpfr_init(r7769);
        mpfr_init(r7770);
        mpfr_init(r7771);
        mpfr_init(r7772);
        mpfr_init(r7773);
        mpfr_init(r7774);
}

double f_dm(double F, double B, double x) {
        mpfr_set_d(r7744, F, MPFR_RNDN);
        ;
        mpfr_set_si(r7746, mpfr_cmp(r7744, r7745) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r7748, B, MPFR_RNDN);
        mpfr_sin(r7749, r7748, MPFR_RNDN);
        ;
        mpfr_pow(r7751, r7744, r7750, MPFR_RNDN);
        mpfr_mul(r7752, r7749, r7751, MPFR_RNDN);
        mpfr_div(r7753, r7747, r7752, MPFR_RNDN);
        mpfr_div(r7754, r7747, r7749, MPFR_RNDN);
        mpfr_sub(r7755, r7753, r7754, MPFR_RNDN);
        mpfr_set_d(r7756, x, MPFR_RNDN);
        mpfr_tan(r7757, r7748, MPFR_RNDN);
        mpfr_div(r7758, r7756, r7757, MPFR_RNDN);
        mpfr_sub(r7759, r7755, r7758, MPFR_RNDN);
        ;
        mpfr_set_si(r7761, mpfr_cmp(r7744, r7760) <= 0, MPFR_RNDN);
        mpfr_mul(r7762, r7750, r7756, MPFR_RNDN);
        mpfr_mul(r7763, r7744, r7744, MPFR_RNDN);
        mpfr_add(r7764, r7750, r7763, MPFR_RNDN);
        mpfr_add(r7765, r7762, r7764, MPFR_RNDN);
        mpfr_div(r7766, r7747, r7750, MPFR_RNDN);
        mpfr_pow(r7767, r7765, r7766, MPFR_RNDN);
        mpfr_mul(r7768, r7767, r7749, MPFR_RNDN);
        mpfr_div(r7769, r7744, r7768, MPFR_RNDN);
        mpfr_sub(r7770, r7769, r7758, MPFR_RNDN);
        mpfr_sub(r7771, r7754, r7753, MPFR_RNDN);
        mpfr_sub(r7772, r7771, r7758, MPFR_RNDN);
        if (mpfr_get_si(r7761, MPFR_RNDN)) { mpfr_set(r7773, r7770, MPFR_RNDN); } else { mpfr_set(r7773, r7772, MPFR_RNDN); };
        if (mpfr_get_si(r7746, MPFR_RNDN)) { mpfr_set(r7774, r7759, MPFR_RNDN); } else { mpfr_set(r7774, r7773, MPFR_RNDN); };
        return mpfr_get_d(r7774, MPFR_RNDN);
}

