#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 r25023 = 1;
        float r25024 = 5;
        float r25025 = v;
        float r25026 = r25025 * r25025;
        float r25027 = r25024 * r25026;
        float r25028 = r25023 - r25027;
        float r25029 = r25026 - r25023;
        float r25030 = r25028 / r25029;
        float r25031 = acos(r25030);
        return r25031;
}

double f_id(double v) {
        double r25032 = 1;
        double r25033 = 5;
        double r25034 = v;
        double r25035 = r25034 * r25034;
        double r25036 = r25033 * r25035;
        double r25037 = r25032 - r25036;
        double r25038 = r25035 - r25032;
        double r25039 = r25037 / r25038;
        double r25040 = acos(r25039);
        return r25040;
}


double f_of(float v) {
        float r25041 = 1;
        float r25042 = 5;
        float r25043 = v;
        float r25044 = r25043 * r25043;
        float r25045 = r25042 * r25044;
        float r25046 = r25041 - r25045;
        float r25047 = r25044 - r25041;
        float r25048 = r25046 / r25047;
        float r25049 = acos(r25048);
        float r25050 = log(r25049);
        float r25051 = exp(r25050);
        return r25051;
}

double f_od(double v) {
        double r25052 = 1;
        double r25053 = 5;
        double r25054 = v;
        double r25055 = r25054 * r25054;
        double r25056 = r25053 * r25055;
        double r25057 = r25052 - r25056;
        double r25058 = r25055 - r25052;
        double r25059 = r25057 / r25058;
        double r25060 = acos(r25059);
        double r25061 = log(r25060);
        double r25062 = exp(r25061);
        return r25062;
}

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 r25063, r25064, r25065, r25066, r25067, r25068, r25069, r25070, r25071;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25063, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25064, "5", 10, MPFR_RNDN);
        mpfr_init(r25065);
        mpfr_init(r25066);
        mpfr_init(r25067);
        mpfr_init(r25068);
        mpfr_init(r25069);
        mpfr_init(r25070);
        mpfr_init(r25071);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r25065, v, MPFR_RNDN);
        mpfr_mul(r25066, r25065, r25065, MPFR_RNDN);
        mpfr_mul(r25067, r25064, r25066, MPFR_RNDN);
        mpfr_sub(r25068, r25063, r25067, MPFR_RNDN);
        mpfr_sub(r25069, r25066, r25063, MPFR_RNDN);
        mpfr_div(r25070, r25068, r25069, MPFR_RNDN);
        mpfr_acos(r25071, r25070, MPFR_RNDN);
        return mpfr_get_d(r25071, MPFR_RNDN);
}

static mpfr_t r25072, r25073, r25074, r25075, r25076, r25077, r25078, r25079, r25080, r25081, r25082;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25072, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25073, "5", 10, MPFR_RNDN);
        mpfr_init(r25074);
        mpfr_init(r25075);
        mpfr_init(r25076);
        mpfr_init(r25077);
        mpfr_init(r25078);
        mpfr_init(r25079);
        mpfr_init(r25080);
        mpfr_init(r25081);
        mpfr_init(r25082);
}

double f_fm(double v) {
        ;
        ;
        mpfr_set_d(r25074, v, MPFR_RNDN);
        mpfr_mul(r25075, r25074, r25074, MPFR_RNDN);
        mpfr_mul(r25076, r25073, r25075, MPFR_RNDN);
        mpfr_sub(r25077, r25072, r25076, MPFR_RNDN);
        mpfr_sub(r25078, r25075, r25072, MPFR_RNDN);
        mpfr_div(r25079, r25077, r25078, MPFR_RNDN);
        mpfr_acos(r25080, r25079, MPFR_RNDN);
        mpfr_log(r25081, r25080, MPFR_RNDN);
        mpfr_exp(r25082, r25081, MPFR_RNDN);
        return mpfr_get_d(r25082, MPFR_RNDN);
}

static mpfr_t r25083, r25084, r25085, r25086, r25087, r25088, r25089, r25090, r25091, r25092, r25093;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25083, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r25084, "5", 10, MPFR_RNDN);
        mpfr_init(r25085);
        mpfr_init(r25086);
        mpfr_init(r25087);
        mpfr_init(r25088);
        mpfr_init(r25089);
        mpfr_init(r25090);
        mpfr_init(r25091);
        mpfr_init(r25092);
        mpfr_init(r25093);
}

double f_dm(double v) {
        ;
        ;
        mpfr_set_d(r25085, v, MPFR_RNDN);
        mpfr_mul(r25086, r25085, r25085, MPFR_RNDN);
        mpfr_mul(r25087, r25084, r25086, MPFR_RNDN);
        mpfr_sub(r25088, r25083, r25087, MPFR_RNDN);
        mpfr_sub(r25089, r25086, r25083, MPFR_RNDN);
        mpfr_div(r25090, r25088, r25089, MPFR_RNDN);
        mpfr_acos(r25091, r25090, MPFR_RNDN);
        mpfr_log(r25092, r25091, MPFR_RNDN);
        mpfr_exp(r25093, r25092, MPFR_RNDN);
        return mpfr_get_d(r25093, MPFR_RNDN);
}

