#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 r32924 = 1;
        float r32925 = 5;
        float r32926 = v;
        float r32927 = r32926 * r32926;
        float r32928 = r32925 * r32927;
        float r32929 = r32924 - r32928;
        float r32930 = r32927 - r32924;
        float r32931 = r32929 / r32930;
        float r32932 = acos(r32931);
        return r32932;
}

double f_id(double v) {
        double r32933 = 1;
        double r32934 = 5;
        double r32935 = v;
        double r32936 = r32935 * r32935;
        double r32937 = r32934 * r32936;
        double r32938 = r32933 - r32937;
        double r32939 = r32936 - r32933;
        double r32940 = r32938 / r32939;
        double r32941 = acos(r32940);
        return r32941;
}


double f_of(float v) {
        float r32942 = 1;
        float r32943 = 5;
        float r32944 = v;
        float r32945 = r32944 * r32944;
        float r32946 = r32943 * r32945;
        float r32947 = r32942 - r32946;
        float r32948 = r32945 - r32942;
        float r32949 = r32947 / r32948;
        float r32950 = acos(r32949);
        float r32951 = sqrt(r32950);
        float r32952 = sqrt(r32951);
        float r32953 = r32951 * r32952;
        float r32954 = cbrt(r32952);
        float r32955 = r32954 * r32954;
        float r32956 = r32953 * r32955;
        float r32957 = r32956 * r32954;
        return r32957;
}

double f_od(double v) {
        double r32958 = 1;
        double r32959 = 5;
        double r32960 = v;
        double r32961 = r32960 * r32960;
        double r32962 = r32959 * r32961;
        double r32963 = r32958 - r32962;
        double r32964 = r32961 - r32958;
        double r32965 = r32963 / r32964;
        double r32966 = acos(r32965);
        double r32967 = sqrt(r32966);
        double r32968 = sqrt(r32967);
        double r32969 = r32967 * r32968;
        double r32970 = cbrt(r32968);
        double r32971 = r32970 * r32970;
        double r32972 = r32969 * r32971;
        double r32973 = r32972 * r32970;
        return r32973;
}

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 r32974, r32975, r32976, r32977, r32978, r32979, r32980, r32981, r32982;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32974, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r32975, "5", 10, MPFR_RNDN);
        mpfr_init(r32976);
        mpfr_init(r32977);
        mpfr_init(r32978);
        mpfr_init(r32979);
        mpfr_init(r32980);
        mpfr_init(r32981);
        mpfr_init(r32982);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r32976, v, MPFR_RNDN);
        mpfr_mul(r32977, r32976, r32976, MPFR_RNDN);
        mpfr_mul(r32978, r32975, r32977, MPFR_RNDN);
        mpfr_sub(r32979, r32974, r32978, MPFR_RNDN);
        mpfr_sub(r32980, r32977, r32974, MPFR_RNDN);
        mpfr_div(r32981, r32979, r32980, MPFR_RNDN);
        mpfr_acos(r32982, r32981, MPFR_RNDN);
        return mpfr_get_d(r32982, MPFR_RNDN);
}

static mpfr_t r32983, r32984, r32985, r32986, r32987, r32988, r32989, r32990, r32991, r32992, r32993, r32994, r32995, r32996, r32997, r32998;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32983, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r32984, "5", 10, MPFR_RNDN);
        mpfr_init(r32985);
        mpfr_init(r32986);
        mpfr_init(r32987);
        mpfr_init(r32988);
        mpfr_init(r32989);
        mpfr_init(r32990);
        mpfr_init(r32991);
        mpfr_init(r32992);
        mpfr_init(r32993);
        mpfr_init(r32994);
        mpfr_init(r32995);
        mpfr_init(r32996);
        mpfr_init(r32997);
        mpfr_init(r32998);
}

double f_fm(double v) {
        ;
        ;
        mpfr_set_d(r32985, v, MPFR_RNDN);
        mpfr_mul(r32986, r32985, r32985, MPFR_RNDN);
        mpfr_mul(r32987, r32984, r32986, MPFR_RNDN);
        mpfr_sub(r32988, r32983, r32987, MPFR_RNDN);
        mpfr_sub(r32989, r32986, r32983, MPFR_RNDN);
        mpfr_div(r32990, r32988, r32989, MPFR_RNDN);
        mpfr_acos(r32991, r32990, MPFR_RNDN);
        mpfr_sqrt(r32992, r32991, MPFR_RNDN);
        mpfr_sqrt(r32993, r32992, MPFR_RNDN);
        mpfr_mul(r32994, r32992, r32993, MPFR_RNDN);
        mpfr_cbrt(r32995, r32993, MPFR_RNDN);
        mpfr_mul(r32996, r32995, r32995, MPFR_RNDN);
        mpfr_mul(r32997, r32994, r32996, MPFR_RNDN);
        mpfr_mul(r32998, r32997, r32995, MPFR_RNDN);
        return mpfr_get_d(r32998, MPFR_RNDN);
}

static mpfr_t r32999, r33000, r33001, r33002, r33003, r33004, r33005, r33006, r33007, r33008, r33009, r33010, r33011, r33012, r33013, r33014;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32999, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33000, "5", 10, MPFR_RNDN);
        mpfr_init(r33001);
        mpfr_init(r33002);
        mpfr_init(r33003);
        mpfr_init(r33004);
        mpfr_init(r33005);
        mpfr_init(r33006);
        mpfr_init(r33007);
        mpfr_init(r33008);
        mpfr_init(r33009);
        mpfr_init(r33010);
        mpfr_init(r33011);
        mpfr_init(r33012);
        mpfr_init(r33013);
        mpfr_init(r33014);
}

double f_dm(double v) {
        ;
        ;
        mpfr_set_d(r33001, v, MPFR_RNDN);
        mpfr_mul(r33002, r33001, r33001, MPFR_RNDN);
        mpfr_mul(r33003, r33000, r33002, MPFR_RNDN);
        mpfr_sub(r33004, r32999, r33003, MPFR_RNDN);
        mpfr_sub(r33005, r33002, r32999, MPFR_RNDN);
        mpfr_div(r33006, r33004, r33005, MPFR_RNDN);
        mpfr_acos(r33007, r33006, MPFR_RNDN);
        mpfr_sqrt(r33008, r33007, MPFR_RNDN);
        mpfr_sqrt(r33009, r33008, MPFR_RNDN);
        mpfr_mul(r33010, r33008, r33009, MPFR_RNDN);
        mpfr_cbrt(r33011, r33009, MPFR_RNDN);
        mpfr_mul(r33012, r33011, r33011, MPFR_RNDN);
        mpfr_mul(r33013, r33010, r33012, MPFR_RNDN);
        mpfr_mul(r33014, r33013, r33011, MPFR_RNDN);
        return mpfr_get_d(r33014, MPFR_RNDN);
}

