#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 r32978 = 1;
        float r32979 = 5;
        float r32980 = v;
        float r32981 = r32980 * r32980;
        float r32982 = r32979 * r32981;
        float r32983 = r32978 - r32982;
        float r32984 = r32981 - r32978;
        float r32985 = r32983 / r32984;
        float r32986 = acos(r32985);
        return r32986;
}

double f_id(double v) {
        double r32987 = 1;
        double r32988 = 5;
        double r32989 = v;
        double r32990 = r32989 * r32989;
        double r32991 = r32988 * r32990;
        double r32992 = r32987 - r32991;
        double r32993 = r32990 - r32987;
        double r32994 = r32992 / r32993;
        double r32995 = acos(r32994);
        return r32995;
}


double f_of(float v) {
        float r32996 = 1;
        float r32997 = 5;
        float r32998 = v;
        float r32999 = r32998 * r32998;
        float r33000 = r32997 * r32999;
        float r33001 = r32996 - r33000;
        float r33002 = r32999 - r32996;
        float r33003 = r33001 / r33002;
        float r33004 = acos(r33003);
        float r33005 = sqrt(r33004);
        float r33006 = sqrt(r33005);
        float r33007 = r33005 * r33006;
        float r33008 = cbrt(r33006);
        float r33009 = r33008 * r33008;
        float r33010 = r33007 * r33009;
        float r33011 = r33010 * r33008;
        return r33011;
}

double f_od(double v) {
        double r33012 = 1;
        double r33013 = 5;
        double r33014 = v;
        double r33015 = r33014 * r33014;
        double r33016 = r33013 * r33015;
        double r33017 = r33012 - r33016;
        double r33018 = r33015 - r33012;
        double r33019 = r33017 / r33018;
        double r33020 = acos(r33019);
        double r33021 = sqrt(r33020);
        double r33022 = sqrt(r33021);
        double r33023 = r33021 * r33022;
        double r33024 = cbrt(r33022);
        double r33025 = r33024 * r33024;
        double r33026 = r33023 * r33025;
        double r33027 = r33026 * r33024;
        return r33027;
}

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 r33028, r33029, r33030, r33031, r33032, r33033, r33034, r33035, r33036;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33028, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33029, "5", 10, MPFR_RNDN);
        mpfr_init(r33030);
        mpfr_init(r33031);
        mpfr_init(r33032);
        mpfr_init(r33033);
        mpfr_init(r33034);
        mpfr_init(r33035);
        mpfr_init(r33036);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r33030, v, MPFR_RNDN);
        mpfr_mul(r33031, r33030, r33030, MPFR_RNDN);
        mpfr_mul(r33032, r33029, r33031, MPFR_RNDN);
        mpfr_sub(r33033, r33028, r33032, MPFR_RNDN);
        mpfr_sub(r33034, r33031, r33028, MPFR_RNDN);
        mpfr_div(r33035, r33033, r33034, MPFR_RNDN);
        mpfr_acos(r33036, r33035, MPFR_RNDN);
        return mpfr_get_d(r33036, MPFR_RNDN);
}

static mpfr_t r33037, r33038, r33039, r33040, r33041, r33042, r33043, r33044, r33045, r33046, r33047, r33048, r33049, r33050, r33051, r33052;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33037, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33038, "5", 10, MPFR_RNDN);
        mpfr_init(r33039);
        mpfr_init(r33040);
        mpfr_init(r33041);
        mpfr_init(r33042);
        mpfr_init(r33043);
        mpfr_init(r33044);
        mpfr_init(r33045);
        mpfr_init(r33046);
        mpfr_init(r33047);
        mpfr_init(r33048);
        mpfr_init(r33049);
        mpfr_init(r33050);
        mpfr_init(r33051);
        mpfr_init(r33052);
}

double f_fm(double v) {
        ;
        ;
        mpfr_set_d(r33039, v, MPFR_RNDN);
        mpfr_mul(r33040, r33039, r33039, MPFR_RNDN);
        mpfr_mul(r33041, r33038, r33040, MPFR_RNDN);
        mpfr_sub(r33042, r33037, r33041, MPFR_RNDN);
        mpfr_sub(r33043, r33040, r33037, MPFR_RNDN);
        mpfr_div(r33044, r33042, r33043, MPFR_RNDN);
        mpfr_acos(r33045, r33044, MPFR_RNDN);
        mpfr_sqrt(r33046, r33045, MPFR_RNDN);
        mpfr_sqrt(r33047, r33046, MPFR_RNDN);
        mpfr_mul(r33048, r33046, r33047, MPFR_RNDN);
        mpfr_cbrt(r33049, r33047, MPFR_RNDN);
        mpfr_mul(r33050, r33049, r33049, MPFR_RNDN);
        mpfr_mul(r33051, r33048, r33050, MPFR_RNDN);
        mpfr_mul(r33052, r33051, r33049, MPFR_RNDN);
        return mpfr_get_d(r33052, MPFR_RNDN);
}

static mpfr_t r33053, r33054, r33055, r33056, r33057, r33058, r33059, r33060, r33061, r33062, r33063, r33064, r33065, r33066, r33067, r33068;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33053, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33054, "5", 10, MPFR_RNDN);
        mpfr_init(r33055);
        mpfr_init(r33056);
        mpfr_init(r33057);
        mpfr_init(r33058);
        mpfr_init(r33059);
        mpfr_init(r33060);
        mpfr_init(r33061);
        mpfr_init(r33062);
        mpfr_init(r33063);
        mpfr_init(r33064);
        mpfr_init(r33065);
        mpfr_init(r33066);
        mpfr_init(r33067);
        mpfr_init(r33068);
}

double f_dm(double v) {
        ;
        ;
        mpfr_set_d(r33055, v, MPFR_RNDN);
        mpfr_mul(r33056, r33055, r33055, MPFR_RNDN);
        mpfr_mul(r33057, r33054, r33056, MPFR_RNDN);
        mpfr_sub(r33058, r33053, r33057, MPFR_RNDN);
        mpfr_sub(r33059, r33056, r33053, MPFR_RNDN);
        mpfr_div(r33060, r33058, r33059, MPFR_RNDN);
        mpfr_acos(r33061, r33060, MPFR_RNDN);
        mpfr_sqrt(r33062, r33061, MPFR_RNDN);
        mpfr_sqrt(r33063, r33062, MPFR_RNDN);
        mpfr_mul(r33064, r33062, r33063, MPFR_RNDN);
        mpfr_cbrt(r33065, r33063, MPFR_RNDN);
        mpfr_mul(r33066, r33065, r33065, MPFR_RNDN);
        mpfr_mul(r33067, r33064, r33066, MPFR_RNDN);
        mpfr_mul(r33068, r33067, r33065, MPFR_RNDN);
        return mpfr_get_d(r33068, MPFR_RNDN);
}

