#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 r27126 = 1;
        float r27127 = 5;
        float r27128 = v;
        float r27129 = r27128 * r27128;
        float r27130 = r27127 * r27129;
        float r27131 = r27126 - r27130;
        float r27132 = r27129 - r27126;
        float r27133 = r27131 / r27132;
        float r27134 = acos(r27133);
        return r27134;
}

double f_id(double v) {
        double r27135 = 1;
        double r27136 = 5;
        double r27137 = v;
        double r27138 = r27137 * r27137;
        double r27139 = r27136 * r27138;
        double r27140 = r27135 - r27139;
        double r27141 = r27138 - r27135;
        double r27142 = r27140 / r27141;
        double r27143 = acos(r27142);
        return r27143;
}


double f_of(float v) {
        float r27144 = atan2(1.0, 0.0);
        float r27145 = 2;
        float r27146 = r27144 / r27145;
        float r27147 = 1;
        float r27148 = 5;
        float r27149 = v;
        float r27150 = r27149 * r27149;
        float r27151 = r27148 * r27150;
        float r27152 = r27147 - r27151;
        float r27153 = r27150 - r27147;
        float r27154 = r27152 / r27153;
        float r27155 = asin(r27154);
        float r27156 = r27146 - r27155;
        float r27157 = log1p(r27156);
        float r27158 = expm1(r27157);
        return r27158;
}

double f_od(double v) {
        double r27159 = atan2(1.0, 0.0);
        double r27160 = 2;
        double r27161 = r27159 / r27160;
        double r27162 = 1;
        double r27163 = 5;
        double r27164 = v;
        double r27165 = r27164 * r27164;
        double r27166 = r27163 * r27165;
        double r27167 = r27162 - r27166;
        double r27168 = r27165 - r27162;
        double r27169 = r27167 / r27168;
        double r27170 = asin(r27169);
        double r27171 = r27161 - r27170;
        double r27172 = log1p(r27171);
        double r27173 = expm1(r27172);
        return r27173;
}

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 r27174, r27175, r27176, r27177, r27178, r27179, r27180, r27181, r27182;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27174, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27175, "5", 10, MPFR_RNDN);
        mpfr_init(r27176);
        mpfr_init(r27177);
        mpfr_init(r27178);
        mpfr_init(r27179);
        mpfr_init(r27180);
        mpfr_init(r27181);
        mpfr_init(r27182);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r27176, v, MPFR_RNDN);
        mpfr_mul(r27177, r27176, r27176, MPFR_RNDN);
        mpfr_mul(r27178, r27175, r27177, MPFR_RNDN);
        mpfr_sub(r27179, r27174, r27178, MPFR_RNDN);
        mpfr_sub(r27180, r27177, r27174, MPFR_RNDN);
        mpfr_div(r27181, r27179, r27180, MPFR_RNDN);
        mpfr_acos(r27182, r27181, MPFR_RNDN);
        return mpfr_get_d(r27182, MPFR_RNDN);
}

static mpfr_t r27183, r27184, r27185, r27186, r27187, r27188, r27189, r27190, r27191, r27192, r27193, r27194, r27195, r27196, r27197;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27183);
        mpfr_init_set_str(r27184, "2", 10, MPFR_RNDN);
        mpfr_init(r27185);
        mpfr_init_set_str(r27186, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27187, "5", 10, MPFR_RNDN);
        mpfr_init(r27188);
        mpfr_init(r27189);
        mpfr_init(r27190);
        mpfr_init(r27191);
        mpfr_init(r27192);
        mpfr_init(r27193);
        mpfr_init(r27194);
        mpfr_init(r27195);
        mpfr_init(r27196);
        mpfr_init(r27197);
}

double f_fm(double v) {
        mpfr_const_pi(r27183, MPFR_RNDN);
        ;
        mpfr_div(r27185, r27183, r27184, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27188, v, MPFR_RNDN);
        mpfr_mul(r27189, r27188, r27188, MPFR_RNDN);
        mpfr_mul(r27190, r27187, r27189, MPFR_RNDN);
        mpfr_sub(r27191, r27186, r27190, MPFR_RNDN);
        mpfr_sub(r27192, r27189, r27186, MPFR_RNDN);
        mpfr_div(r27193, r27191, r27192, MPFR_RNDN);
        mpfr_asin(r27194, r27193, MPFR_RNDN);
        mpfr_sub(r27195, r27185, r27194, MPFR_RNDN);
        mpfr_log1p(r27196, r27195, MPFR_RNDN);
        mpfr_expm1(r27197, r27196, MPFR_RNDN);
        return mpfr_get_d(r27197, MPFR_RNDN);
}

static mpfr_t r27198, r27199, r27200, r27201, r27202, r27203, r27204, r27205, r27206, r27207, r27208, r27209, r27210, r27211, r27212;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27198);
        mpfr_init_set_str(r27199, "2", 10, MPFR_RNDN);
        mpfr_init(r27200);
        mpfr_init_set_str(r27201, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27202, "5", 10, MPFR_RNDN);
        mpfr_init(r27203);
        mpfr_init(r27204);
        mpfr_init(r27205);
        mpfr_init(r27206);
        mpfr_init(r27207);
        mpfr_init(r27208);
        mpfr_init(r27209);
        mpfr_init(r27210);
        mpfr_init(r27211);
        mpfr_init(r27212);
}

double f_dm(double v) {
        mpfr_const_pi(r27198, MPFR_RNDN);
        ;
        mpfr_div(r27200, r27198, r27199, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27203, v, MPFR_RNDN);
        mpfr_mul(r27204, r27203, r27203, MPFR_RNDN);
        mpfr_mul(r27205, r27202, r27204, MPFR_RNDN);
        mpfr_sub(r27206, r27201, r27205, MPFR_RNDN);
        mpfr_sub(r27207, r27204, r27201, MPFR_RNDN);
        mpfr_div(r27208, r27206, r27207, MPFR_RNDN);
        mpfr_asin(r27209, r27208, MPFR_RNDN);
        mpfr_sub(r27210, r27200, r27209, MPFR_RNDN);
        mpfr_log1p(r27211, r27210, MPFR_RNDN);
        mpfr_expm1(r27212, r27211, MPFR_RNDN);
        return mpfr_get_d(r27212, MPFR_RNDN);
}

