#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 r10702 = 2.0f;
        float r10703 = sqrt(r10702);
        float r10704 = 4.0f;
        float r10705 = r10703 / r10704;
        float r10706 = 1.0f;
        float r10707 = 3.0f;
        float r10708 = v;
        float r10709 = r10708 * r10708;
        float r10710 = r10707 * r10709;
        float r10711 = r10706 - r10710;
        float r10712 = sqrt(r10711);
        float r10713 = r10705 * r10712;
        float r10714 = r10706 - r10709;
        float r10715 = r10713 * r10714;
        return r10715;
}

double f_id(double v) {
        double r10716 = 2.0;
        double r10717 = sqrt(r10716);
        double r10718 = 4.0;
        double r10719 = r10717 / r10718;
        double r10720 = 1.0;
        double r10721 = 3.0;
        double r10722 = v;
        double r10723 = r10722 * r10722;
        double r10724 = r10721 * r10723;
        double r10725 = r10720 - r10724;
        double r10726 = sqrt(r10725);
        double r10727 = r10719 * r10726;
        double r10728 = r10720 - r10723;
        double r10729 = r10727 * r10728;
        return r10729;
}


double f_of(float v) {
        float r10730 = 1.0f;
        float r10731 = v;
        float r10732 = r10731 * r10731;
        float r10733 = r10730 - r10732;
        float r10734 = 3.0f;
        float r10735 = r10732 * r10734;
        float r10736 = r10730 - r10735;
        float r10737 = sqrt(r10736);
        float r10738 = 2.0f;
        float r10739 = sqrt(r10738);
        float r10740 = 4.0f;
        float r10741 = r10739 / r10740;
        float r10742 = r10737 * r10741;
        float r10743 = exp(r10742);
        float r10744 = log(r10743);
        float r10745 = r10733 * r10744;
        return r10745;
}

double f_od(double v) {
        double r10746 = 1.0;
        double r10747 = v;
        double r10748 = r10747 * r10747;
        double r10749 = r10746 - r10748;
        double r10750 = 3.0;
        double r10751 = r10748 * r10750;
        double r10752 = r10746 - r10751;
        double r10753 = sqrt(r10752);
        double r10754 = 2.0;
        double r10755 = sqrt(r10754);
        double r10756 = 4.0;
        double r10757 = r10755 / r10756;
        double r10758 = r10753 * r10757;
        double r10759 = exp(r10758);
        double r10760 = log(r10759);
        double r10761 = r10749 * r10760;
        return r10761;
}

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 r10762, r10763, r10764, r10765, r10766, r10767, r10768, r10769, r10770, r10771, r10772, r10773, r10774, r10775;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10762, "2", 10, MPFR_RNDN);
        mpfr_init(r10763);
        mpfr_init_set_str(r10764, "4", 10, MPFR_RNDN);
        mpfr_init(r10765);
        mpfr_init_set_str(r10766, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10767, "3", 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);
}

double f_im(double v) {
        ;
        mpfr_sqrt(r10763, r10762, MPFR_RNDN);
        ;
        mpfr_div(r10765, r10763, r10764, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r10768, v, MPFR_RNDN);
        mpfr_mul(r10769, r10768, r10768, MPFR_RNDN);
        mpfr_mul(r10770, r10767, r10769, MPFR_RNDN);
        mpfr_sub(r10771, r10766, r10770, MPFR_RNDN);
        mpfr_sqrt(r10772, r10771, MPFR_RNDN);
        mpfr_mul(r10773, r10765, r10772, MPFR_RNDN);
        mpfr_sub(r10774, r10766, r10769, MPFR_RNDN);
        mpfr_mul(r10775, r10773, r10774, MPFR_RNDN);
        return mpfr_get_d(r10775, MPFR_RNDN);
}

static mpfr_t r10776, r10777, r10778, r10779, r10780, r10781, r10782, r10783, r10784, r10785, r10786, r10787, r10788, r10789, r10790, r10791;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10776, "1", 10, MPFR_RNDN);
        mpfr_init(r10777);
        mpfr_init(r10778);
        mpfr_init(r10779);
        mpfr_init_set_str(r10780, "3", 10, MPFR_RNDN);
        mpfr_init(r10781);
        mpfr_init(r10782);
        mpfr_init(r10783);
        mpfr_init_set_str(r10784, "2", 10, MPFR_RNDN);
        mpfr_init(r10785);
        mpfr_init_set_str(r10786, "4", 10, MPFR_RNDN);
        mpfr_init(r10787);
        mpfr_init(r10788);
        mpfr_init(r10789);
        mpfr_init(r10790);
        mpfr_init(r10791);
}

double f_fm(double v) {
        ;
        mpfr_set_d(r10777, v, MPFR_RNDN);
        mpfr_mul(r10778, r10777, r10777, MPFR_RNDN);
        mpfr_sub(r10779, r10776, r10778, MPFR_RNDN);
        ;
        mpfr_mul(r10781, r10778, r10780, MPFR_RNDN);
        mpfr_sub(r10782, r10776, r10781, MPFR_RNDN);
        mpfr_sqrt(r10783, r10782, MPFR_RNDN);
        ;
        mpfr_sqrt(r10785, r10784, MPFR_RNDN);
        ;
        mpfr_div(r10787, r10785, r10786, MPFR_RNDN);
        mpfr_mul(r10788, r10783, r10787, MPFR_RNDN);
        mpfr_exp(r10789, r10788, MPFR_RNDN);
        mpfr_log(r10790, r10789, MPFR_RNDN);
        mpfr_mul(r10791, r10779, r10790, MPFR_RNDN);
        return mpfr_get_d(r10791, MPFR_RNDN);
}

static mpfr_t r10792, r10793, r10794, r10795, r10796, r10797, r10798, r10799, r10800, r10801, r10802, r10803, r10804, r10805, r10806, r10807;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r10792, "1", 10, MPFR_RNDN);
        mpfr_init(r10793);
        mpfr_init(r10794);
        mpfr_init(r10795);
        mpfr_init_set_str(r10796, "3", 10, MPFR_RNDN);
        mpfr_init(r10797);
        mpfr_init(r10798);
        mpfr_init(r10799);
        mpfr_init_set_str(r10800, "2", 10, MPFR_RNDN);
        mpfr_init(r10801);
        mpfr_init_set_str(r10802, "4", 10, MPFR_RNDN);
        mpfr_init(r10803);
        mpfr_init(r10804);
        mpfr_init(r10805);
        mpfr_init(r10806);
        mpfr_init(r10807);
}

double f_dm(double v) {
        ;
        mpfr_set_d(r10793, v, MPFR_RNDN);
        mpfr_mul(r10794, r10793, r10793, MPFR_RNDN);
        mpfr_sub(r10795, r10792, r10794, MPFR_RNDN);
        ;
        mpfr_mul(r10797, r10794, r10796, MPFR_RNDN);
        mpfr_sub(r10798, r10792, r10797, MPFR_RNDN);
        mpfr_sqrt(r10799, r10798, MPFR_RNDN);
        ;
        mpfr_sqrt(r10801, r10800, MPFR_RNDN);
        ;
        mpfr_div(r10803, r10801, r10802, MPFR_RNDN);
        mpfr_mul(r10804, r10799, r10803, MPFR_RNDN);
        mpfr_exp(r10805, r10804, MPFR_RNDN);
        mpfr_log(r10806, r10805, MPFR_RNDN);
        mpfr_mul(r10807, r10795, r10806, MPFR_RNDN);
        return mpfr_get_d(r10807, MPFR_RNDN);
}

