#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 r10951 = 1;
        float r10952 = 5;
        float r10953 = v;
        float r10954 = r10953 * r10953;
        float r10955 = r10952 * r10954;
        float r10956 = r10951 - r10955;
        float r10957 = r10954 - r10951;
        float r10958 = r10956 / r10957;
        float r10959 = acos(r10958);
        return r10959;
}

double f_id(double v) {
        double r10960 = 1;
        double r10961 = 5;
        double r10962 = v;
        double r10963 = r10962 * r10962;
        double r10964 = r10961 * r10963;
        double r10965 = r10960 - r10964;
        double r10966 = r10963 - r10960;
        double r10967 = r10965 / r10966;
        double r10968 = acos(r10967);
        return r10968;
}


double f_of(float v) {
        float r10969 = 1;
        float r10970 = 5;
        float r10971 = v;
        float r10972 = r10971 * r10971;
        float r10973 = r10970 * r10972;
        float r10974 = exp(r10973);
        float r10975 = log(r10974);
        float r10976 = r10969 - r10975;
        float r10977 = r10972 - r10969;
        float r10978 = r10976 / r10977;
        float r10979 = acos(r10978);
        return r10979;
}

double f_od(double v) {
        double r10980 = 1;
        double r10981 = 5;
        double r10982 = v;
        double r10983 = r10982 * r10982;
        double r10984 = r10981 * r10983;
        double r10985 = exp(r10984);
        double r10986 = log(r10985);
        double r10987 = r10980 - r10986;
        double r10988 = r10983 - r10980;
        double r10989 = r10987 / r10988;
        double r10990 = acos(r10989);
        return r10990;
}

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 r10991, r10992, r10993, r10994, r10995, r10996, r10997, r10998, r10999;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10991, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10992, "5", 10, MPFR_RNDN);
        mpfr_init(r10993);
        mpfr_init(r10994);
        mpfr_init(r10995);
        mpfr_init(r10996);
        mpfr_init(r10997);
        mpfr_init(r10998);
        mpfr_init(r10999);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r10993, v, MPFR_RNDN);
        mpfr_mul(r10994, r10993, r10993, MPFR_RNDN);
        mpfr_mul(r10995, r10992, r10994, MPFR_RNDN);
        mpfr_sub(r10996, r10991, r10995, MPFR_RNDN);
        mpfr_sub(r10997, r10994, r10991, MPFR_RNDN);
        mpfr_div(r10998, r10996, r10997, MPFR_RNDN);
        mpfr_acos(r10999, r10998, MPFR_RNDN);
        return mpfr_get_d(r10999, MPFR_RNDN);
}

static mpfr_t r11000, r11001, r11002, r11003, r11004, r11005, r11006, r11007, r11008, r11009, r11010;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11000, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11001, "5", 10, MPFR_RNDN);
        mpfr_init(r11002);
        mpfr_init(r11003);
        mpfr_init(r11004);
        mpfr_init(r11005);
        mpfr_init(r11006);
        mpfr_init(r11007);
        mpfr_init(r11008);
        mpfr_init(r11009);
        mpfr_init(r11010);
}

double f_fm(double v) {
        ;
        ;
        mpfr_set_d(r11002, v, MPFR_RNDN);
        mpfr_mul(r11003, r11002, r11002, MPFR_RNDN);
        mpfr_mul(r11004, r11001, r11003, MPFR_RNDN);
        mpfr_exp(r11005, r11004, MPFR_RNDN);
        mpfr_log(r11006, r11005, MPFR_RNDN);
        mpfr_sub(r11007, r11000, r11006, MPFR_RNDN);
        mpfr_sub(r11008, r11003, r11000, MPFR_RNDN);
        mpfr_div(r11009, r11007, r11008, MPFR_RNDN);
        mpfr_acos(r11010, r11009, MPFR_RNDN);
        return mpfr_get_d(r11010, MPFR_RNDN);
}

static mpfr_t r11011, r11012, r11013, r11014, r11015, r11016, r11017, r11018, r11019, r11020, r11021;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11011, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11012, "5", 10, MPFR_RNDN);
        mpfr_init(r11013);
        mpfr_init(r11014);
        mpfr_init(r11015);
        mpfr_init(r11016);
        mpfr_init(r11017);
        mpfr_init(r11018);
        mpfr_init(r11019);
        mpfr_init(r11020);
        mpfr_init(r11021);
}

double f_dm(double v) {
        ;
        ;
        mpfr_set_d(r11013, v, MPFR_RNDN);
        mpfr_mul(r11014, r11013, r11013, MPFR_RNDN);
        mpfr_mul(r11015, r11012, r11014, MPFR_RNDN);
        mpfr_exp(r11016, r11015, MPFR_RNDN);
        mpfr_log(r11017, r11016, MPFR_RNDN);
        mpfr_sub(r11018, r11011, r11017, MPFR_RNDN);
        mpfr_sub(r11019, r11014, r11011, MPFR_RNDN);
        mpfr_div(r11020, r11018, r11019, MPFR_RNDN);
        mpfr_acos(r11021, r11020, MPFR_RNDN);
        return mpfr_get_d(r11021, MPFR_RNDN);
}

