#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 r30464682 = 2;
        float r30464683 = sqrt(r30464682);
        float r30464684 = 4;
        float r30464685 = r30464683 / r30464684;
        float r30464686 = 1;
        float r30464687 = 3;
        float r30464688 = v;
        float r30464689 = r30464688 * r30464688;
        float r30464690 = r30464687 * r30464689;
        float r30464691 = r30464686 - r30464690;
        float r30464692 = sqrt(r30464691);
        float r30464693 = r30464685 * r30464692;
        float r30464694 = r30464686 - r30464689;
        float r30464695 = r30464693 * r30464694;
        return r30464695;
}

double f_id(double v) {
        double r30464696 = 2;
        double r30464697 = sqrt(r30464696);
        double r30464698 = 4;
        double r30464699 = r30464697 / r30464698;
        double r30464700 = 1;
        double r30464701 = 3;
        double r30464702 = v;
        double r30464703 = r30464702 * r30464702;
        double r30464704 = r30464701 * r30464703;
        double r30464705 = r30464700 - r30464704;
        double r30464706 = sqrt(r30464705);
        double r30464707 = r30464699 * r30464706;
        double r30464708 = r30464700 - r30464703;
        double r30464709 = r30464707 * r30464708;
        return r30464709;
}


double f_of(float v) {
        float r30464710 = 2;
        float r30464711 = sqrt(r30464710);
        float r30464712 = 4;
        float r30464713 = r30464711 / r30464712;
        float r30464714 = 1;
        float r30464715 = 3;
        float r30464716 = v;
        float r30464717 = r30464716 * r30464716;
        float r30464718 = r30464715 * r30464717;
        float r30464719 = r30464714 - r30464718;
        float r30464720 = sqrt(r30464719);
        float r30464721 = r30464713 * r30464720;
        float r30464722 = r30464714 - r30464717;
        float r30464723 = r30464721 * r30464722;
        return r30464723;
}

double f_od(double v) {
        double r30464724 = 2;
        double r30464725 = sqrt(r30464724);
        double r30464726 = 4;
        double r30464727 = r30464725 / r30464726;
        double r30464728 = 1;
        double r30464729 = 3;
        double r30464730 = v;
        double r30464731 = r30464730 * r30464730;
        double r30464732 = r30464729 * r30464731;
        double r30464733 = r30464728 - r30464732;
        double r30464734 = sqrt(r30464733);
        double r30464735 = r30464727 * r30464734;
        double r30464736 = r30464728 - r30464731;
        double r30464737 = r30464735 * r30464736;
        return r30464737;
}

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 r30464738, r30464739, r30464740, r30464741, r30464742, r30464743, r30464744, r30464745, r30464746, r30464747, r30464748, r30464749, r30464750, r30464751;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30464738, "2", 10, MPFR_RNDN);
        mpfr_init(r30464739);
        mpfr_init_set_str(r30464740, "4", 10, MPFR_RNDN);
        mpfr_init(r30464741);
        mpfr_init_set_str(r30464742, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464743, "3", 10, MPFR_RNDN);
        mpfr_init(r30464744);
        mpfr_init(r30464745);
        mpfr_init(r30464746);
        mpfr_init(r30464747);
        mpfr_init(r30464748);
        mpfr_init(r30464749);
        mpfr_init(r30464750);
        mpfr_init(r30464751);
}

double f_im(double v) {
        ;
        mpfr_sqrt(r30464739, r30464738, MPFR_RNDN);
        ;
        mpfr_div(r30464741, r30464739, r30464740, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r30464744, v, MPFR_RNDN);
        mpfr_mul(r30464745, r30464744, r30464744, MPFR_RNDN);
        mpfr_mul(r30464746, r30464743, r30464745, MPFR_RNDN);
        mpfr_sub(r30464747, r30464742, r30464746, MPFR_RNDN);
        mpfr_sqrt(r30464748, r30464747, MPFR_RNDN);
        mpfr_mul(r30464749, r30464741, r30464748, MPFR_RNDN);
        mpfr_sub(r30464750, r30464742, r30464745, MPFR_RNDN);
        mpfr_mul(r30464751, r30464749, r30464750, MPFR_RNDN);
        return mpfr_get_d(r30464751, MPFR_RNDN);
}

static mpfr_t r30464752, r30464753, r30464754, r30464755, r30464756, r30464757, r30464758, r30464759, r30464760, r30464761, r30464762, r30464763, r30464764, r30464765;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30464752, "2", 10, MPFR_RNDN);
        mpfr_init(r30464753);
        mpfr_init_set_str(r30464754, "4", 10, MPFR_RNDN);
        mpfr_init(r30464755);
        mpfr_init_set_str(r30464756, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464757, "3", 10, MPFR_RNDN);
        mpfr_init(r30464758);
        mpfr_init(r30464759);
        mpfr_init(r30464760);
        mpfr_init(r30464761);
        mpfr_init(r30464762);
        mpfr_init(r30464763);
        mpfr_init(r30464764);
        mpfr_init(r30464765);
}

double f_fm(double v) {
        ;
        mpfr_sqrt(r30464753, r30464752, MPFR_RNDN);
        ;
        mpfr_div(r30464755, r30464753, r30464754, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r30464758, v, MPFR_RNDN);
        mpfr_mul(r30464759, r30464758, r30464758, MPFR_RNDN);
        mpfr_mul(r30464760, r30464757, r30464759, MPFR_RNDN);
        mpfr_sub(r30464761, r30464756, r30464760, MPFR_RNDN);
        mpfr_sqrt(r30464762, r30464761, MPFR_RNDN);
        mpfr_mul(r30464763, r30464755, r30464762, MPFR_RNDN);
        mpfr_sub(r30464764, r30464756, r30464759, MPFR_RNDN);
        mpfr_mul(r30464765, r30464763, r30464764, MPFR_RNDN);
        return mpfr_get_d(r30464765, MPFR_RNDN);
}

static mpfr_t r30464766, r30464767, r30464768, r30464769, r30464770, r30464771, r30464772, r30464773, r30464774, r30464775, r30464776, r30464777, r30464778, r30464779;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30464766, "2", 10, MPFR_RNDN);
        mpfr_init(r30464767);
        mpfr_init_set_str(r30464768, "4", 10, MPFR_RNDN);
        mpfr_init(r30464769);
        mpfr_init_set_str(r30464770, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464771, "3", 10, MPFR_RNDN);
        mpfr_init(r30464772);
        mpfr_init(r30464773);
        mpfr_init(r30464774);
        mpfr_init(r30464775);
        mpfr_init(r30464776);
        mpfr_init(r30464777);
        mpfr_init(r30464778);
        mpfr_init(r30464779);
}

double f_dm(double v) {
        ;
        mpfr_sqrt(r30464767, r30464766, MPFR_RNDN);
        ;
        mpfr_div(r30464769, r30464767, r30464768, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r30464772, v, MPFR_RNDN);
        mpfr_mul(r30464773, r30464772, r30464772, MPFR_RNDN);
        mpfr_mul(r30464774, r30464771, r30464773, MPFR_RNDN);
        mpfr_sub(r30464775, r30464770, r30464774, MPFR_RNDN);
        mpfr_sqrt(r30464776, r30464775, MPFR_RNDN);
        mpfr_mul(r30464777, r30464769, r30464776, MPFR_RNDN);
        mpfr_sub(r30464778, r30464770, r30464773, MPFR_RNDN);
        mpfr_mul(r30464779, r30464777, r30464778, MPFR_RNDN);
        return mpfr_get_d(r30464779, MPFR_RNDN);
}

