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

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

double f_if(float v) {
        float r31168 = 1.0f;
        float r31169 = 5.0f;
        float r31170 = v;
        float r31171 = r31170 * r31170;
        float r31172 = r31169 * r31171;
        float r31173 = r31168 - r31172;
        float r31174 = r31171 - r31168;
        float r31175 = r31173 / r31174;
        float r31176 = acos(r31175);
        return r31176;
}

double f_id(double v) {
        double r31177 = 1.0;
        double r31178 = 5.0;
        double r31179 = v;
        double r31180 = r31179 * r31179;
        double r31181 = r31178 * r31180;
        double r31182 = r31177 - r31181;
        double r31183 = r31180 - r31177;
        double r31184 = r31182 / r31183;
        double r31185 = acos(r31184);
        return r31185;
}


double f_of(float v) {
        float r31186 = 4.0f;
        float r31187 = v;
        float r31188 = pow(r31187, r31186);
        float r31189 = r31187 * r31187;
        float r31190 = r31188 + r31189;
        float r31191 = r31186 * r31190;
        float r31192 = 1.0f;
        float r31193 = r31191 - r31192;
        float r31194 = acos(r31193);
        return r31194;
}

double f_od(double v) {
        double r31195 = 4.0;
        double r31196 = v;
        double r31197 = pow(r31196, r31195);
        double r31198 = r31196 * r31196;
        double r31199 = r31197 + r31198;
        double r31200 = r31195 * r31199;
        double r31201 = 1.0;
        double r31202 = r31200 - r31201;
        double r31203 = acos(r31202);
        return r31203;
}

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 r31204, r31205, r31206, r31207, r31208, r31209, r31210, r31211, r31212;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r31204, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r31205, "5", 10, MPFR_RNDN);
        mpfr_init(r31206);
        mpfr_init(r31207);
        mpfr_init(r31208);
        mpfr_init(r31209);
        mpfr_init(r31210);
        mpfr_init(r31211);
        mpfr_init(r31212);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r31206, v, MPFR_RNDN);
        mpfr_sqr(r31207, r31206, MPFR_RNDN);
        mpfr_mul(r31208, r31205, r31207, MPFR_RNDN);
        mpfr_sub(r31209, r31204, r31208, MPFR_RNDN);
        mpfr_sub(r31210, r31207, r31204, MPFR_RNDN);
        mpfr_div(r31211, r31209, r31210, MPFR_RNDN);
        mpfr_acos(r31212, r31211, MPFR_RNDN);
        return mpfr_get_d(r31212, MPFR_RNDN);
}

static mpfr_t r31213, r31214, r31215, r31216, r31217, r31218, r31219, r31220, r31221;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r31213, "4", 10, MPFR_RNDN);
        mpfr_init(r31214);
        mpfr_init(r31215);
        mpfr_init(r31216);
        mpfr_init(r31217);
        mpfr_init(r31218);
        mpfr_init_set_str(r31219, "1", 10, MPFR_RNDN);
        mpfr_init(r31220);
        mpfr_init(r31221);
}

double f_fm(double v) {
        ;
        mpfr_set_d(r31214, v, MPFR_RNDN);
        mpfr_pow(r31215, r31214, r31213, MPFR_RNDN);
        mpfr_sqr(r31216, r31214, MPFR_RNDN);
        mpfr_add(r31217, r31215, r31216, MPFR_RNDN);
        mpfr_mul(r31218, r31213, r31217, MPFR_RNDN);
        ;
        mpfr_sub(r31220, r31218, r31219, MPFR_RNDN);
        mpfr_acos(r31221, r31220, MPFR_RNDN);
        return mpfr_get_d(r31221, MPFR_RNDN);
}

static mpfr_t r31222, r31223, r31224, r31225, r31226, r31227, r31228, r31229, r31230;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r31222, "4", 10, MPFR_RNDN);
        mpfr_init(r31223);
        mpfr_init(r31224);
        mpfr_init(r31225);
        mpfr_init(r31226);
        mpfr_init(r31227);
        mpfr_init_set_str(r31228, "1", 10, MPFR_RNDN);
        mpfr_init(r31229);
        mpfr_init(r31230);
}

double f_dm(double v) {
        ;
        mpfr_set_d(r31223, v, MPFR_RNDN);
        mpfr_pow(r31224, r31223, r31222, MPFR_RNDN);
        mpfr_sqr(r31225, r31223, MPFR_RNDN);
        mpfr_add(r31226, r31224, r31225, MPFR_RNDN);
        mpfr_mul(r31227, r31222, r31226, MPFR_RNDN);
        ;
        mpfr_sub(r31229, r31227, r31228, MPFR_RNDN);
        mpfr_acos(r31230, r31229, MPFR_RNDN);
        return mpfr_get_d(r31230, MPFR_RNDN);
}

