#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 r27429 = 1;
        float r27430 = 5;
        float r27431 = v;
        float r27432 = r27431 * r27431;
        float r27433 = r27430 * r27432;
        float r27434 = r27429 - r27433;
        float r27435 = r27432 - r27429;
        float r27436 = r27434 / r27435;
        float r27437 = acos(r27436);
        return r27437;
}

double f_id(double v) {
        double r27438 = 1;
        double r27439 = 5;
        double r27440 = v;
        double r27441 = r27440 * r27440;
        double r27442 = r27439 * r27441;
        double r27443 = r27438 - r27442;
        double r27444 = r27441 - r27438;
        double r27445 = r27443 / r27444;
        double r27446 = acos(r27445);
        return r27446;
}


double f_of(float v) {
        float r27447 = atan2(1.0, 0.0);
        float r27448 = 2;
        float r27449 = r27447 / r27448;
        float r27450 = 1;
        float r27451 = 5;
        float r27452 = v;
        float r27453 = r27452 * r27452;
        float r27454 = r27451 * r27453;
        float r27455 = r27450 - r27454;
        float r27456 = r27453 - r27450;
        float r27457 = r27455 / r27456;
        float r27458 = asin(r27457);
        float r27459 = r27449 - r27458;
        return r27459;
}

double f_od(double v) {
        double r27460 = atan2(1.0, 0.0);
        double r27461 = 2;
        double r27462 = r27460 / r27461;
        double r27463 = 1;
        double r27464 = 5;
        double r27465 = v;
        double r27466 = r27465 * r27465;
        double r27467 = r27464 * r27466;
        double r27468 = r27463 - r27467;
        double r27469 = r27466 - r27463;
        double r27470 = r27468 / r27469;
        double r27471 = asin(r27470);
        double r27472 = r27462 - r27471;
        return r27472;
}

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 r27473, r27474, r27475, r27476, r27477, r27478, r27479, r27480, r27481;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27473, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27474, "5", 10, MPFR_RNDN);
        mpfr_init(r27475);
        mpfr_init(r27476);
        mpfr_init(r27477);
        mpfr_init(r27478);
        mpfr_init(r27479);
        mpfr_init(r27480);
        mpfr_init(r27481);
}

double f_im(double v) {
        ;
        ;
        mpfr_set_d(r27475, v, MPFR_RNDN);
        mpfr_mul(r27476, r27475, r27475, MPFR_RNDN);
        mpfr_mul(r27477, r27474, r27476, MPFR_RNDN);
        mpfr_sub(r27478, r27473, r27477, MPFR_RNDN);
        mpfr_sub(r27479, r27476, r27473, MPFR_RNDN);
        mpfr_div(r27480, r27478, r27479, MPFR_RNDN);
        mpfr_acos(r27481, r27480, MPFR_RNDN);
        return mpfr_get_d(r27481, MPFR_RNDN);
}

static mpfr_t r27482, r27483, r27484, r27485, r27486, r27487, r27488, r27489, r27490, r27491, r27492, r27493, r27494;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27482);
        mpfr_init_set_str(r27483, "2", 10, MPFR_RNDN);
        mpfr_init(r27484);
        mpfr_init_set_str(r27485, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27486, "5", 10, MPFR_RNDN);
        mpfr_init(r27487);
        mpfr_init(r27488);
        mpfr_init(r27489);
        mpfr_init(r27490);
        mpfr_init(r27491);
        mpfr_init(r27492);
        mpfr_init(r27493);
        mpfr_init(r27494);
}

double f_fm(double v) {
        mpfr_const_pi(r27482, MPFR_RNDN);
        ;
        mpfr_div(r27484, r27482, r27483, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27487, v, MPFR_RNDN);
        mpfr_mul(r27488, r27487, r27487, MPFR_RNDN);
        mpfr_mul(r27489, r27486, r27488, MPFR_RNDN);
        mpfr_sub(r27490, r27485, r27489, MPFR_RNDN);
        mpfr_sub(r27491, r27488, r27485, MPFR_RNDN);
        mpfr_div(r27492, r27490, r27491, MPFR_RNDN);
        mpfr_asin(r27493, r27492, MPFR_RNDN);
        mpfr_sub(r27494, r27484, r27493, MPFR_RNDN);
        return mpfr_get_d(r27494, MPFR_RNDN);
}

static mpfr_t r27495, r27496, r27497, r27498, r27499, r27500, r27501, r27502, r27503, r27504, r27505, r27506, r27507;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27495);
        mpfr_init_set_str(r27496, "2", 10, MPFR_RNDN);
        mpfr_init(r27497);
        mpfr_init_set_str(r27498, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27499, "5", 10, MPFR_RNDN);
        mpfr_init(r27500);
        mpfr_init(r27501);
        mpfr_init(r27502);
        mpfr_init(r27503);
        mpfr_init(r27504);
        mpfr_init(r27505);
        mpfr_init(r27506);
        mpfr_init(r27507);
}

double f_dm(double v) {
        mpfr_const_pi(r27495, MPFR_RNDN);
        ;
        mpfr_div(r27497, r27495, r27496, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r27500, v, MPFR_RNDN);
        mpfr_mul(r27501, r27500, r27500, MPFR_RNDN);
        mpfr_mul(r27502, r27499, r27501, MPFR_RNDN);
        mpfr_sub(r27503, r27498, r27502, MPFR_RNDN);
        mpfr_sub(r27504, r27501, r27498, MPFR_RNDN);
        mpfr_div(r27505, r27503, r27504, MPFR_RNDN);
        mpfr_asin(r27506, r27505, MPFR_RNDN);
        mpfr_sub(r27507, r27497, r27506, MPFR_RNDN);
        return mpfr_get_d(r27507, MPFR_RNDN);
}

