#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 r25140 = 1;
        float r25141 = 5;
        float r25142 = v;
        float r25143 = r25142 * r25142;
        float r25144 = r25141 * r25143;
        float r25145 = r25140 - r25144;
        float r25146 = r25143 - r25140;
        float r25147 = r25145 / r25146;
        float r25148 = acos(r25147);
        return r25148;
}

double f_id(double v) {
        double r25149 = 1;
        double r25150 = 5;
        double r25151 = v;
        double r25152 = r25151 * r25151;
        double r25153 = r25150 * r25152;
        double r25154 = r25149 - r25153;
        double r25155 = r25152 - r25149;
        double r25156 = r25154 / r25155;
        double r25157 = acos(r25156);
        return r25157;
}


double f_of(float v) {
        float r25158 = exp(1.0);
        float r25159 = 1;
        float r25160 = 5;
        float r25161 = v;
        float r25162 = r25161 * r25161;
        float r25163 = r25160 * r25162;
        float r25164 = r25159 - r25163;
        float r25165 = r25162 - r25159;
        float r25166 = r25164 / r25165;
        float r25167 = acos(r25166);
        float r25168 = log(r25167);
        float r25169 = pow(r25158, r25168);
        return r25169;
}

double f_od(double v) {
        double r25170 = exp(1.0);
        double r25171 = 1;
        double r25172 = 5;
        double r25173 = v;
        double r25174 = r25173 * r25173;
        double r25175 = r25172 * r25174;
        double r25176 = r25171 - r25175;
        double r25177 = r25174 - r25171;
        double r25178 = r25176 / r25177;
        double r25179 = acos(r25178);
        double r25180 = log(r25179);
        double r25181 = pow(r25170, r25180);
        return r25181;
}

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 r25182, r25183, r25184, r25185, r25186, r25187, r25188, r25189, r25190;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25182, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25183, "5", 10, MPFR_RNDN);
        mpfr_init(r25184);
        mpfr_init(r25185);
        mpfr_init(r25186);
        mpfr_init(r25187);
        mpfr_init(r25188);
        mpfr_init(r25189);
        mpfr_init(r25190);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r25184, v, MPFR_RNDN);
        mpfr_mul(r25185, r25184, r25184, MPFR_RNDN);
        mpfr_mul(r25186, r25183, r25185, MPFR_RNDN);
        mpfr_sub(r25187, r25182, r25186, MPFR_RNDN);
        mpfr_sub(r25188, r25185, r25182, MPFR_RNDN);
        mpfr_div(r25189, r25187, r25188, MPFR_RNDN);
        mpfr_acos(r25190, r25189, MPFR_RNDN);
        return mpfr_get_d(r25190, MPFR_RNDN);
}

static mpfr_t r25191, r25192, r25193, r25194, r25195, r25196, r25197, r25198, r25199, r25200, r25201, r25202;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r25191);
        mpfr_init_set_str(r25192, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25193, "5", 10, MPFR_RNDN);
        mpfr_init(r25194);
        mpfr_init(r25195);
        mpfr_init(r25196);
        mpfr_init(r25197);
        mpfr_init(r25198);
        mpfr_init(r25199);
        mpfr_init(r25200);
        mpfr_init(r25201);
        mpfr_init(r25202);
}

double f_fm(double v) {
        mpfr_set_si(r25191, 1, MPFR_RNDN), mpfr_const_exp(r25191, r25191, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r25194, v, MPFR_RNDN);
        mpfr_mul(r25195, r25194, r25194, MPFR_RNDN);
        mpfr_mul(r25196, r25193, r25195, MPFR_RNDN);
        mpfr_sub(r25197, r25192, r25196, MPFR_RNDN);
        mpfr_sub(r25198, r25195, r25192, MPFR_RNDN);
        mpfr_div(r25199, r25197, r25198, MPFR_RNDN);
        mpfr_acos(r25200, r25199, MPFR_RNDN);
        mpfr_log(r25201, r25200, MPFR_RNDN);
        mpfr_pow(r25202, r25191, r25201, MPFR_RNDN);
        return mpfr_get_d(r25202, MPFR_RNDN);
}

static mpfr_t r25203, r25204, r25205, r25206, r25207, r25208, r25209, r25210, r25211, r25212, r25213, r25214;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r25203);
        mpfr_init_set_str(r25204, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25205, "5", 10, MPFR_RNDN);
        mpfr_init(r25206);
        mpfr_init(r25207);
        mpfr_init(r25208);
        mpfr_init(r25209);
        mpfr_init(r25210);
        mpfr_init(r25211);
        mpfr_init(r25212);
        mpfr_init(r25213);
        mpfr_init(r25214);
}

double f_dm(double v) {
        mpfr_set_si(r25203, 1, MPFR_RNDN), mpfr_const_exp(r25203, r25203, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r25206, v, MPFR_RNDN);
        mpfr_mul(r25207, r25206, r25206, MPFR_RNDN);
        mpfr_mul(r25208, r25205, r25207, MPFR_RNDN);
        mpfr_sub(r25209, r25204, r25208, MPFR_RNDN);
        mpfr_sub(r25210, r25207, r25204, MPFR_RNDN);
        mpfr_div(r25211, r25209, r25210, MPFR_RNDN);
        mpfr_acos(r25212, r25211, MPFR_RNDN);
        mpfr_log(r25213, r25212, MPFR_RNDN);
        mpfr_pow(r25214, r25203, r25213, MPFR_RNDN);
        return mpfr_get_d(r25214, MPFR_RNDN);
}

