#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 r11380 = 1;
        float r11381 = 5;
        float r11382 = v;
        float r11383 = r11382 * r11382;
        float r11384 = r11381 * r11383;
        float r11385 = r11380 - r11384;
        float r11386 = r11383 - r11380;
        float r11387 = r11385 / r11386;
        float r11388 = acos(r11387);
        return r11388;
}

double f_id(double v) {
        double r11389 = 1;
        double r11390 = 5;
        double r11391 = v;
        double r11392 = r11391 * r11391;
        double r11393 = r11390 * r11392;
        double r11394 = r11389 - r11393;
        double r11395 = r11392 - r11389;
        double r11396 = r11394 / r11395;
        double r11397 = acos(r11396);
        return r11397;
}


double f_of(float v) {
        float r11398 = 1;
        float r11399 = 5;
        float r11400 = v;
        float r11401 = r11400 * r11400;
        float r11402 = r11399 * r11401;
        float r11403 = r11398 - r11402;
        float r11404 = r11401 - r11398;
        float r11405 = r11403 / r11404;
        float r11406 = acos(r11405);
        float r11407 = log1p(r11406);
        float r11408 = exp(r11407);
        float r11409 = r11408 - r11398;
        return r11409;
}

double f_od(double v) {
        double r11410 = 1;
        double r11411 = 5;
        double r11412 = v;
        double r11413 = r11412 * r11412;
        double r11414 = r11411 * r11413;
        double r11415 = r11410 - r11414;
        double r11416 = r11413 - r11410;
        double r11417 = r11415 / r11416;
        double r11418 = acos(r11417);
        double r11419 = log1p(r11418);
        double r11420 = exp(r11419);
        double r11421 = r11420 - r11410;
        return r11421;
}

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 r11422, r11423, r11424, r11425, r11426, r11427, r11428, r11429, r11430;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11422, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11423, "5", 10, MPFR_RNDN);
        mpfr_init(r11424);
        mpfr_init(r11425);
        mpfr_init(r11426);
        mpfr_init(r11427);
        mpfr_init(r11428);
        mpfr_init(r11429);
        mpfr_init(r11430);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r11424, v, MPFR_RNDN);
        mpfr_mul(r11425, r11424, r11424, MPFR_RNDN);
        mpfr_mul(r11426, r11423, r11425, MPFR_RNDN);
        mpfr_sub(r11427, r11422, r11426, MPFR_RNDN);
        mpfr_sub(r11428, r11425, r11422, MPFR_RNDN);
        mpfr_div(r11429, r11427, r11428, MPFR_RNDN);
        mpfr_acos(r11430, r11429, MPFR_RNDN);
        return mpfr_get_d(r11430, MPFR_RNDN);
}

static mpfr_t r11431, r11432, r11433, r11434, r11435, r11436, r11437, r11438, r11439, r11440, r11441, r11442;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11431, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11432, "5", 10, MPFR_RNDN);
        mpfr_init(r11433);
        mpfr_init(r11434);
        mpfr_init(r11435);
        mpfr_init(r11436);
        mpfr_init(r11437);
        mpfr_init(r11438);
        mpfr_init(r11439);
        mpfr_init(r11440);
        mpfr_init(r11441);
        mpfr_init(r11442);
}

double f_fm(double v) {
        ;
        ;
        mpfr_set_d(r11433, v, MPFR_RNDN);
        mpfr_mul(r11434, r11433, r11433, MPFR_RNDN);
        mpfr_mul(r11435, r11432, r11434, MPFR_RNDN);
        mpfr_sub(r11436, r11431, r11435, MPFR_RNDN);
        mpfr_sub(r11437, r11434, r11431, MPFR_RNDN);
        mpfr_div(r11438, r11436, r11437, MPFR_RNDN);
        mpfr_acos(r11439, r11438, MPFR_RNDN);
        mpfr_log1p(r11440, r11439, MPFR_RNDN);
        mpfr_exp(r11441, r11440, MPFR_RNDN);
        mpfr_sub(r11442, r11441, r11431, MPFR_RNDN);
        return mpfr_get_d(r11442, MPFR_RNDN);
}

static mpfr_t r11443, r11444, r11445, r11446, r11447, r11448, r11449, r11450, r11451, r11452, r11453, r11454;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11443, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11444, "5", 10, MPFR_RNDN);
        mpfr_init(r11445);
        mpfr_init(r11446);
        mpfr_init(r11447);
        mpfr_init(r11448);
        mpfr_init(r11449);
        mpfr_init(r11450);
        mpfr_init(r11451);
        mpfr_init(r11452);
        mpfr_init(r11453);
        mpfr_init(r11454);
}

double f_dm(double v) {
        ;
        ;
        mpfr_set_d(r11445, v, MPFR_RNDN);
        mpfr_mul(r11446, r11445, r11445, MPFR_RNDN);
        mpfr_mul(r11447, r11444, r11446, MPFR_RNDN);
        mpfr_sub(r11448, r11443, r11447, MPFR_RNDN);
        mpfr_sub(r11449, r11446, r11443, MPFR_RNDN);
        mpfr_div(r11450, r11448, r11449, MPFR_RNDN);
        mpfr_acos(r11451, r11450, MPFR_RNDN);
        mpfr_log1p(r11452, r11451, MPFR_RNDN);
        mpfr_exp(r11453, r11452, MPFR_RNDN);
        mpfr_sub(r11454, r11453, r11443, MPFR_RNDN);
        return mpfr_get_d(r11454, MPFR_RNDN);
}

