#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 r33467 = 1;
        float r33468 = 5;
        float r33469 = v;
        float r33470 = r33469 * r33469;
        float r33471 = r33468 * r33470;
        float r33472 = r33467 - r33471;
        float r33473 = r33470 - r33467;
        float r33474 = r33472 / r33473;
        float r33475 = acos(r33474);
        return r33475;
}

double f_id(double v) {
        double r33476 = 1;
        double r33477 = 5;
        double r33478 = v;
        double r33479 = r33478 * r33478;
        double r33480 = r33477 * r33479;
        double r33481 = r33476 - r33480;
        double r33482 = r33479 - r33476;
        double r33483 = r33481 / r33482;
        double r33484 = acos(r33483);
        return r33484;
}


double f_of(float v) {
        float r33485 = 1;
        float r33486 = 5;
        float r33487 = v;
        float r33488 = r33487 * r33487;
        float r33489 = r33486 * r33488;
        float r33490 = r33485 - r33489;
        float r33491 = r33488 - r33485;
        float r33492 = r33490 / r33491;
        float r33493 = acos(r33492);
        return r33493;
}

double f_od(double v) {
        double r33494 = 1;
        double r33495 = 5;
        double r33496 = v;
        double r33497 = r33496 * r33496;
        double r33498 = r33495 * r33497;
        double r33499 = r33494 - r33498;
        double r33500 = r33497 - r33494;
        double r33501 = r33499 / r33500;
        double r33502 = acos(r33501);
        return r33502;
}

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 r33503, r33504, r33505, r33506, r33507, r33508, r33509, r33510, r33511;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33503, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33504, "5", 10, MPFR_RNDN);
        mpfr_init(r33505);
        mpfr_init(r33506);
        mpfr_init(r33507);
        mpfr_init(r33508);
        mpfr_init(r33509);
        mpfr_init(r33510);
        mpfr_init(r33511);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r33505, v, MPFR_RNDN);
        mpfr_mul(r33506, r33505, r33505, MPFR_RNDN);
        mpfr_mul(r33507, r33504, r33506, MPFR_RNDN);
        mpfr_sub(r33508, r33503, r33507, MPFR_RNDN);
        mpfr_sub(r33509, r33506, r33503, MPFR_RNDN);
        mpfr_div(r33510, r33508, r33509, MPFR_RNDN);
        mpfr_acos(r33511, r33510, MPFR_RNDN);
        return mpfr_get_d(r33511, MPFR_RNDN);
}

static mpfr_t r33512, r33513, r33514, r33515, r33516, r33517, r33518, r33519, r33520;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33512, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33513, "5", 10, MPFR_RNDN);
        mpfr_init(r33514);
        mpfr_init(r33515);
        mpfr_init(r33516);
        mpfr_init(r33517);
        mpfr_init(r33518);
        mpfr_init(r33519);
        mpfr_init(r33520);
}

double f_fm(double v) {
        ;
        ;
        mpfr_set_d(r33514, v, MPFR_RNDN);
        mpfr_mul(r33515, r33514, r33514, MPFR_RNDN);
        mpfr_mul(r33516, r33513, r33515, MPFR_RNDN);
        mpfr_sub(r33517, r33512, r33516, MPFR_RNDN);
        mpfr_sub(r33518, r33515, r33512, MPFR_RNDN);
        mpfr_div(r33519, r33517, r33518, MPFR_RNDN);
        mpfr_acos(r33520, r33519, MPFR_RNDN);
        return mpfr_get_d(r33520, MPFR_RNDN);
}

static mpfr_t r33521, r33522, r33523, r33524, r33525, r33526, r33527, r33528, r33529;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33521, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r33522, "5", 10, MPFR_RNDN);
        mpfr_init(r33523);
        mpfr_init(r33524);
        mpfr_init(r33525);
        mpfr_init(r33526);
        mpfr_init(r33527);
        mpfr_init(r33528);
        mpfr_init(r33529);
}

double f_dm(double v) {
        ;
        ;
        mpfr_set_d(r33523, v, MPFR_RNDN);
        mpfr_mul(r33524, r33523, r33523, MPFR_RNDN);
        mpfr_mul(r33525, r33522, r33524, MPFR_RNDN);
        mpfr_sub(r33526, r33521, r33525, MPFR_RNDN);
        mpfr_sub(r33527, r33524, r33521, MPFR_RNDN);
        mpfr_div(r33528, r33526, r33527, MPFR_RNDN);
        mpfr_acos(r33529, r33528, MPFR_RNDN);
        return mpfr_get_d(r33529, MPFR_RNDN);
}

