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

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


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

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

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

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r7695);
        mpfr_init_set_str(r7696, "1", 10, MPFR_RNDN);
        mpfr_init(r7697);
        mpfr_init(r7698);
        mpfr_init(r7699);
        mpfr_init(r7700);
        mpfr_init(r7701);
        mpfr_init(r7702);
        mpfr_init(r7703);
        mpfr_init(r7704);
        mpfr_init(r7705);
        mpfr_init_set_str(r7706, "2", 10, MPFR_RNDN);
        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_im(double F, double B, double x) {
        mpfr_set_d(r7695, x, MPFR_RNDN);
        ;
        mpfr_set_d(r7697, B, MPFR_RNDN);
        mpfr_tan(r7698, r7697, MPFR_RNDN);
        mpfr_div(r7699, r7696, r7698, MPFR_RNDN);
        mpfr_mul(r7700, r7695, r7699, MPFR_RNDN);
        mpfr_neg(r7701, r7700, MPFR_RNDN);
        mpfr_set_d(r7702, F, MPFR_RNDN);
        mpfr_sin(r7703, r7697, MPFR_RNDN);
        mpfr_div(r7704, r7702, r7703, MPFR_RNDN);
        mpfr_mul(r7705, r7702, r7702, MPFR_RNDN);
        ;
        mpfr_add(r7707, r7705, r7706, MPFR_RNDN);
        mpfr_mul(r7708, r7706, r7695, MPFR_RNDN);
        mpfr_add(r7709, r7707, r7708, MPFR_RNDN);
        mpfr_div(r7710, r7696, r7706, MPFR_RNDN);
        mpfr_neg(r7711, r7710, MPFR_RNDN);
        mpfr_pow(r7712, r7709, r7711, MPFR_RNDN);
        mpfr_mul(r7713, r7704, r7712, MPFR_RNDN);
        mpfr_add(r7714, r7701, 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, r7731, r7732, r7733, r7734, r7735, r7736, r7737, r7738, r7739, r7740, r7741, r7742, r7743, r7744, r7745;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r7715);
        mpfr_init_set_str(r7716, "-1.3523016690045893e+19", 10, MPFR_RNDN);
        mpfr_init(r7717);
        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_set_str(r7730, "307.29004633516365", 10, MPFR_RNDN);
        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);
        mpfr_init(r7744);
        mpfr_init(r7745);
}

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

static mpfr_t 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, r7775, r7776;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r7746);
        mpfr_init_set_str(r7747, "-1.3523016690045893e+19", 10, MPFR_RNDN);
        mpfr_init(r7748);
        mpfr_init_set_str(r7749, "1", 10, MPFR_RNDN);
        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(r7760);
        mpfr_init_set_str(r7761, "307.29004633516365", 10, MPFR_RNDN);
        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);
        mpfr_init(r7775);
        mpfr_init(r7776);
}

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

