#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Falkner and Boettcher, Appendix B, 2";

double f_if(float v) {
        float r10654 = 2.0f;
        float r10655 = sqrt(r10654);
        float r10656 = 4.0f;
        float r10657 = r10655 / r10656;
        float r10658 = 1.0f;
        float r10659 = 3.0f;
        float r10660 = v;
        float r10661 = r10660 * r10660;
        float r10662 = r10659 * r10661;
        float r10663 = r10658 - r10662;
        float r10664 = sqrt(r10663);
        float r10665 = r10657 * r10664;
        float r10666 = r10658 - r10661;
        float r10667 = r10665 * r10666;
        return r10667;
}

double f_id(double v) {
        double r10668 = 2.0;
        double r10669 = sqrt(r10668);
        double r10670 = 4.0;
        double r10671 = r10669 / r10670;
        double r10672 = 1.0;
        double r10673 = 3.0;
        double r10674 = v;
        double r10675 = r10674 * r10674;
        double r10676 = r10673 * r10675;
        double r10677 = r10672 - r10676;
        double r10678 = sqrt(r10677);
        double r10679 = r10671 * r10678;
        double r10680 = r10672 - r10675;
        double r10681 = r10679 * r10680;
        return r10681;
}


double f_of(float v) {
        float r10682 = 2.0f;
        float r10683 = sqrt(r10682);
        float r10684 = 4.0f;
        float r10685 = r10683 / r10684;
        float r10686 = v;
        float r10687 = 3.0f;
        float r10688 = r10686 * r10687;
        float r10689 = -r10686;
        float r10690 = 1.0f;
        float r10691 = fma(r10688, r10689, r10690);
        float r10692 = cbrt(r10691);
        float r10693 = fabs(r10692);
        float r10694 = r10686 * r10686;
        float r10695 = r10694 * r10687;
        float r10696 = r10690 - r10695;
        float r10697 = cbrt(r10696);
        float r10698 = sqrt(r10697);
        float r10699 = r10693 * r10698;
        float r10700 = r10685 * r10699;
        float r10701 = r10690 - r10694;
        float r10702 = r10700 * r10701;
        return r10702;
}

double f_od(double v) {
        double r10703 = 2.0;
        double r10704 = sqrt(r10703);
        double r10705 = 4.0;
        double r10706 = r10704 / r10705;
        double r10707 = v;
        double r10708 = 3.0;
        double r10709 = r10707 * r10708;
        double r10710 = -r10707;
        double r10711 = 1.0;
        double r10712 = fma(r10709, r10710, r10711);
        double r10713 = cbrt(r10712);
        double r10714 = fabs(r10713);
        double r10715 = r10707 * r10707;
        double r10716 = r10715 * r10708;
        double r10717 = r10711 - r10716;
        double r10718 = cbrt(r10717);
        double r10719 = sqrt(r10718);
        double r10720 = r10714 * r10719;
        double r10721 = r10706 * r10720;
        double r10722 = r10711 - r10715;
        double r10723 = r10721 * r10722;
        return r10723;
}

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 r10724, r10725, r10726, r10727, r10728, r10729, r10730, r10731, r10732, r10733, r10734, r10735, r10736, r10737;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10724, "2", 10, MPFR_RNDN);
        mpfr_init(r10725);
        mpfr_init_set_str(r10726, "4", 10, MPFR_RNDN);
        mpfr_init(r10727);
        mpfr_init_set_str(r10728, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10729, "3", 10, MPFR_RNDN);
        mpfr_init(r10730);
        mpfr_init(r10731);
        mpfr_init(r10732);
        mpfr_init(r10733);
        mpfr_init(r10734);
        mpfr_init(r10735);
        mpfr_init(r10736);
        mpfr_init(r10737);
}

double f_im(double v) {
        ;
        mpfr_sqrt(r10725, r10724, MPFR_RNDN);
        ;
        mpfr_div(r10727, r10725, r10726, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r10730, v, MPFR_RNDN);
        mpfr_mul(r10731, r10730, r10730, MPFR_RNDN);
        mpfr_mul(r10732, r10729, r10731, MPFR_RNDN);
        mpfr_sub(r10733, r10728, r10732, MPFR_RNDN);
        mpfr_sqrt(r10734, r10733, MPFR_RNDN);
        mpfr_mul(r10735, r10727, r10734, MPFR_RNDN);
        mpfr_sub(r10736, r10728, r10731, MPFR_RNDN);
        mpfr_mul(r10737, r10735, r10736, MPFR_RNDN);
        return mpfr_get_d(r10737, MPFR_RNDN);
}

static mpfr_t r10738, r10739, r10740, r10741, r10742, r10743, r10744, r10745, r10746, r10747, r10748, r10749, r10750, r10751, r10752, r10753, r10754, r10755, r10756, r10757, r10758;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10738, "2", 10, MPFR_RNDN);
        mpfr_init(r10739);
        mpfr_init_set_str(r10740, "4", 10, MPFR_RNDN);
        mpfr_init(r10741);
        mpfr_init(r10742);
        mpfr_init_set_str(r10743, "3", 10, MPFR_RNDN);
        mpfr_init(r10744);
        mpfr_init(r10745);
        mpfr_init_set_str(r10746, "1", 10, MPFR_RNDN);
        mpfr_init(r10747);
        mpfr_init(r10748);
        mpfr_init(r10749);
        mpfr_init(r10750);
        mpfr_init(r10751);
        mpfr_init(r10752);
        mpfr_init(r10753);
        mpfr_init(r10754);
        mpfr_init(r10755);
        mpfr_init(r10756);
        mpfr_init(r10757);
        mpfr_init(r10758);
}

double f_fm(double v) {
        ;
        mpfr_sqrt(r10739, r10738, MPFR_RNDN);
        ;
        mpfr_div(r10741, r10739, r10740, MPFR_RNDN);
        mpfr_set_d(r10742, v, MPFR_RNDN);
        ;
        mpfr_mul(r10744, r10742, r10743, MPFR_RNDN);
        mpfr_neg(r10745, r10742, MPFR_RNDN);
        ;
        mpfr_fma(r10747, r10744, r10745, r10746, MPFR_RNDN);
        mpfr_cbrt(r10748, r10747, MPFR_RNDN);
        mpfr_abs(r10749, r10748, MPFR_RNDN);
        mpfr_mul(r10750, r10742, r10742, MPFR_RNDN);
        mpfr_mul(r10751, r10750, r10743, MPFR_RNDN);
        mpfr_sub(r10752, r10746, r10751, MPFR_RNDN);
        mpfr_cbrt(r10753, r10752, MPFR_RNDN);
        mpfr_sqrt(r10754, r10753, MPFR_RNDN);
        mpfr_mul(r10755, r10749, r10754, MPFR_RNDN);
        mpfr_mul(r10756, r10741, r10755, MPFR_RNDN);
        mpfr_sub(r10757, r10746, r10750, MPFR_RNDN);
        mpfr_mul(r10758, r10756, r10757, MPFR_RNDN);
        return mpfr_get_d(r10758, MPFR_RNDN);
}

static mpfr_t r10759, r10760, r10761, r10762, r10763, r10764, r10765, r10766, r10767, r10768, r10769, r10770, r10771, r10772, r10773, r10774, r10775, r10776, r10777, r10778, r10779;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10759, "2", 10, MPFR_RNDN);
        mpfr_init(r10760);
        mpfr_init_set_str(r10761, "4", 10, MPFR_RNDN);
        mpfr_init(r10762);
        mpfr_init(r10763);
        mpfr_init_set_str(r10764, "3", 10, MPFR_RNDN);
        mpfr_init(r10765);
        mpfr_init(r10766);
        mpfr_init_set_str(r10767, "1", 10, MPFR_RNDN);
        mpfr_init(r10768);
        mpfr_init(r10769);
        mpfr_init(r10770);
        mpfr_init(r10771);
        mpfr_init(r10772);
        mpfr_init(r10773);
        mpfr_init(r10774);
        mpfr_init(r10775);
        mpfr_init(r10776);
        mpfr_init(r10777);
        mpfr_init(r10778);
        mpfr_init(r10779);
}

double f_dm(double v) {
        ;
        mpfr_sqrt(r10760, r10759, MPFR_RNDN);
        ;
        mpfr_div(r10762, r10760, r10761, MPFR_RNDN);
        mpfr_set_d(r10763, v, MPFR_RNDN);
        ;
        mpfr_mul(r10765, r10763, r10764, MPFR_RNDN);
        mpfr_neg(r10766, r10763, MPFR_RNDN);
        ;
        mpfr_fma(r10768, r10765, r10766, r10767, MPFR_RNDN);
        mpfr_cbrt(r10769, r10768, MPFR_RNDN);
        mpfr_abs(r10770, r10769, MPFR_RNDN);
        mpfr_mul(r10771, r10763, r10763, MPFR_RNDN);
        mpfr_mul(r10772, r10771, r10764, MPFR_RNDN);
        mpfr_sub(r10773, r10767, r10772, MPFR_RNDN);
        mpfr_cbrt(r10774, r10773, MPFR_RNDN);
        mpfr_sqrt(r10775, r10774, MPFR_RNDN);
        mpfr_mul(r10776, r10770, r10775, MPFR_RNDN);
        mpfr_mul(r10777, r10762, r10776, MPFR_RNDN);
        mpfr_sub(r10778, r10767, r10771, MPFR_RNDN);
        mpfr_mul(r10779, r10777, r10778, MPFR_RNDN);
        return mpfr_get_d(r10779, MPFR_RNDN);
}

