#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 r33251 = 1;
        float r33252 = 5;
        float r33253 = v;
        float r33254 = r33253 * r33253;
        float r33255 = r33252 * r33254;
        float r33256 = r33251 - r33255;
        float r33257 = r33254 - r33251;
        float r33258 = r33256 / r33257;
        float r33259 = acos(r33258);
        return r33259;
}

double f_id(double v) {
        double r33260 = 1;
        double r33261 = 5;
        double r33262 = v;
        double r33263 = r33262 * r33262;
        double r33264 = r33261 * r33263;
        double r33265 = r33260 - r33264;
        double r33266 = r33263 - r33260;
        double r33267 = r33265 / r33266;
        double r33268 = acos(r33267);
        return r33268;
}


double f_of(float v) {
        float r33269 = 1;
        float r33270 = 5;
        float r33271 = v;
        float r33272 = r33271 * r33271;
        float r33273 = r33270 * r33272;
        float r33274 = r33269 - r33273;
        float r33275 = r33272 - r33269;
        float r33276 = r33274 / r33275;
        float r33277 = acos(r33276);
        return r33277;
}

double f_od(double v) {
        double r33278 = 1;
        double r33279 = 5;
        double r33280 = v;
        double r33281 = r33280 * r33280;
        double r33282 = r33279 * r33281;
        double r33283 = r33278 - r33282;
        double r33284 = r33281 - r33278;
        double r33285 = r33283 / r33284;
        double r33286 = acos(r33285);
        return r33286;
}

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 r33287, r33288, r33289, r33290, r33291, r33292, r33293, r33294, r33295;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33287, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33288, "5", 10, MPFR_RNDN);
        mpfr_init(r33289);
        mpfr_init(r33290);
        mpfr_init(r33291);
        mpfr_init(r33292);
        mpfr_init(r33293);
        mpfr_init(r33294);
        mpfr_init(r33295);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r33289, v, MPFR_RNDN);
        mpfr_mul(r33290, r33289, r33289, MPFR_RNDN);
        mpfr_mul(r33291, r33288, r33290, MPFR_RNDN);
        mpfr_sub(r33292, r33287, r33291, MPFR_RNDN);
        mpfr_sub(r33293, r33290, r33287, MPFR_RNDN);
        mpfr_div(r33294, r33292, r33293, MPFR_RNDN);
        mpfr_acos(r33295, r33294, MPFR_RNDN);
        return mpfr_get_d(r33295, MPFR_RNDN);
}

static mpfr_t r33296, r33297, r33298, r33299, r33300, r33301, r33302, r33303, r33304;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33296, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33297, "5", 10, MPFR_RNDN);
        mpfr_init(r33298);
        mpfr_init(r33299);
        mpfr_init(r33300);
        mpfr_init(r33301);
        mpfr_init(r33302);
        mpfr_init(r33303);
        mpfr_init(r33304);
}

double f_fm(double v) {
        ;
        ;
        mpfr_set_d(r33298, v, MPFR_RNDN);
        mpfr_mul(r33299, r33298, r33298, MPFR_RNDN);
        mpfr_mul(r33300, r33297, r33299, MPFR_RNDN);
        mpfr_sub(r33301, r33296, r33300, MPFR_RNDN);
        mpfr_sub(r33302, r33299, r33296, MPFR_RNDN);
        mpfr_div(r33303, r33301, r33302, MPFR_RNDN);
        mpfr_acos(r33304, r33303, MPFR_RNDN);
        return mpfr_get_d(r33304, MPFR_RNDN);
}

static mpfr_t r33305, r33306, r33307, r33308, r33309, r33310, r33311, r33312, r33313;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33305, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33306, "5", 10, MPFR_RNDN);
        mpfr_init(r33307);
        mpfr_init(r33308);
        mpfr_init(r33309);
        mpfr_init(r33310);
        mpfr_init(r33311);
        mpfr_init(r33312);
        mpfr_init(r33313);
}

double f_dm(double v) {
        ;
        ;
        mpfr_set_d(r33307, v, MPFR_RNDN);
        mpfr_mul(r33308, r33307, r33307, MPFR_RNDN);
        mpfr_mul(r33309, r33306, r33308, MPFR_RNDN);
        mpfr_sub(r33310, r33305, r33309, MPFR_RNDN);
        mpfr_sub(r33311, r33308, r33305, MPFR_RNDN);
        mpfr_div(r33312, r33310, r33311, MPFR_RNDN);
        mpfr_acos(r33313, r33312, MPFR_RNDN);
        return mpfr_get_d(r33313, MPFR_RNDN);
}

