#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Falkner and Boettcher, Equation (22+)";

double f_if(float v) {
        float r30464345 = 4;
        float r30464346 = 3;
        float r30464347 = atan2(1.0, 0.0);
        float r30464348 = r30464346 * r30464347;
        float r30464349 = 1;
        float r30464350 = v;
        float r30464351 = r30464350 * r30464350;
        float r30464352 = r30464349 - r30464351;
        float r30464353 = r30464348 * r30464352;
        float r30464354 = 2;
        float r30464355 = 6;
        float r30464356 = r30464355 * r30464351;
        float r30464357 = r30464354 - r30464356;
        float r30464358 = sqrt(r30464357);
        float r30464359 = r30464353 * r30464358;
        float r30464360 = r30464345 / r30464359;
        return r30464360;
}

double f_id(double v) {
        double r30464361 = 4;
        double r30464362 = 3;
        double r30464363 = atan2(1.0, 0.0);
        double r30464364 = r30464362 * r30464363;
        double r30464365 = 1;
        double r30464366 = v;
        double r30464367 = r30464366 * r30464366;
        double r30464368 = r30464365 - r30464367;
        double r30464369 = r30464364 * r30464368;
        double r30464370 = 2;
        double r30464371 = 6;
        double r30464372 = r30464371 * r30464367;
        double r30464373 = r30464370 - r30464372;
        double r30464374 = sqrt(r30464373);
        double r30464375 = r30464369 * r30464374;
        double r30464376 = r30464361 / r30464375;
        return r30464376;
}


double f_of(float v) {
        float r30464377 = 4;
        float r30464378 = atan2(1.0, 0.0);
        float r30464379 = 3;
        float r30464380 = r30464378 * r30464379;
        float r30464381 = r30464377 / r30464380;
        float r30464382 = 1;
        float r30464383 = v;
        float r30464384 = r30464383 * r30464383;
        float r30464385 = r30464382 - r30464384;
        float r30464386 = r30464381 / r30464385;
        float r30464387 = 2;
        float r30464388 = 6;
        float r30464389 = r30464388 * r30464383;
        float r30464390 = r30464383 * r30464389;
        float r30464391 = r30464387 - r30464390;
        float r30464392 = r30464386 / r30464391;
        float r30464393 = r30464386 * r30464392;
        float r30464394 = sqrt(r30464391);
        float r30464395 = r30464394 / r30464386;
        float r30464396 = r30464393 / r30464395;
        float r30464397 = cbrt(r30464396);
        return r30464397;
}

double f_od(double v) {
        double r30464398 = 4;
        double r30464399 = atan2(1.0, 0.0);
        double r30464400 = 3;
        double r30464401 = r30464399 * r30464400;
        double r30464402 = r30464398 / r30464401;
        double r30464403 = 1;
        double r30464404 = v;
        double r30464405 = r30464404 * r30464404;
        double r30464406 = r30464403 - r30464405;
        double r30464407 = r30464402 / r30464406;
        double r30464408 = 2;
        double r30464409 = 6;
        double r30464410 = r30464409 * r30464404;
        double r30464411 = r30464404 * r30464410;
        double r30464412 = r30464408 - r30464411;
        double r30464413 = r30464407 / r30464412;
        double r30464414 = r30464407 * r30464413;
        double r30464415 = sqrt(r30464412);
        double r30464416 = r30464415 / r30464407;
        double r30464417 = r30464414 / r30464416;
        double r30464418 = cbrt(r30464417);
        return r30464418;
}

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 r30464419, r30464420, r30464421, r30464422, r30464423, r30464424, r30464425, r30464426, r30464427, r30464428, r30464429, r30464430, r30464431, r30464432, r30464433, r30464434;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30464419, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464420, "3", 10, MPFR_RNDN);
        mpfr_init(r30464421);
        mpfr_init(r30464422);
        mpfr_init_set_str(r30464423, "1", 10, MPFR_RNDN);
        mpfr_init(r30464424);
        mpfr_init(r30464425);
        mpfr_init(r30464426);
        mpfr_init(r30464427);
        mpfr_init_set_str(r30464428, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464429, "6", 10, MPFR_RNDN);
        mpfr_init(r30464430);
        mpfr_init(r30464431);
        mpfr_init(r30464432);
        mpfr_init(r30464433);
        mpfr_init(r30464434);
}

double f_im(double v) {
        ;
        ;
        mpfr_const_pi(r30464421, MPFR_RNDN);
        mpfr_mul(r30464422, r30464420, r30464421, MPFR_RNDN);
        ;
        mpfr_set_d(r30464424, v, MPFR_RNDN);
        mpfr_mul(r30464425, r30464424, r30464424, MPFR_RNDN);
        mpfr_sub(r30464426, r30464423, r30464425, MPFR_RNDN);
        mpfr_mul(r30464427, r30464422, r30464426, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r30464430, r30464429, r30464425, MPFR_RNDN);
        mpfr_sub(r30464431, r30464428, r30464430, MPFR_RNDN);
        mpfr_sqrt(r30464432, r30464431, MPFR_RNDN);
        mpfr_mul(r30464433, r30464427, r30464432, MPFR_RNDN);
        mpfr_div(r30464434, r30464419, r30464433, MPFR_RNDN);
        return mpfr_get_d(r30464434, MPFR_RNDN);
}

static mpfr_t r30464435, r30464436, r30464437, r30464438, r30464439, r30464440, r30464441, r30464442, r30464443, r30464444, r30464445, r30464446, r30464447, r30464448, r30464449, r30464450, r30464451, r30464452, r30464453, r30464454, r30464455;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30464435, "4", 10, MPFR_RNDN);
        mpfr_init(r30464436);
        mpfr_init_set_str(r30464437, "3", 10, MPFR_RNDN);
        mpfr_init(r30464438);
        mpfr_init(r30464439);
        mpfr_init_set_str(r30464440, "1", 10, MPFR_RNDN);
        mpfr_init(r30464441);
        mpfr_init(r30464442);
        mpfr_init(r30464443);
        mpfr_init(r30464444);
        mpfr_init_set_str(r30464445, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464446, "6", 10, MPFR_RNDN);
        mpfr_init(r30464447);
        mpfr_init(r30464448);
        mpfr_init(r30464449);
        mpfr_init(r30464450);
        mpfr_init(r30464451);
        mpfr_init(r30464452);
        mpfr_init(r30464453);
        mpfr_init(r30464454);
        mpfr_init(r30464455);
}

double f_fm(double v) {
        ;
        mpfr_const_pi(r30464436, MPFR_RNDN);
        ;
        mpfr_mul(r30464438, r30464436, r30464437, MPFR_RNDN);
        mpfr_div(r30464439, r30464435, r30464438, MPFR_RNDN);
        ;
        mpfr_set_d(r30464441, v, MPFR_RNDN);
        mpfr_mul(r30464442, r30464441, r30464441, MPFR_RNDN);
        mpfr_sub(r30464443, r30464440, r30464442, MPFR_RNDN);
        mpfr_div(r30464444, r30464439, r30464443, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r30464447, r30464446, r30464441, MPFR_RNDN);
        mpfr_mul(r30464448, r30464441, r30464447, MPFR_RNDN);
        mpfr_sub(r30464449, r30464445, r30464448, MPFR_RNDN);
        mpfr_div(r30464450, r30464444, r30464449, MPFR_RNDN);
        mpfr_mul(r30464451, r30464444, r30464450, MPFR_RNDN);
        mpfr_sqrt(r30464452, r30464449, MPFR_RNDN);
        mpfr_div(r30464453, r30464452, r30464444, MPFR_RNDN);
        mpfr_div(r30464454, r30464451, r30464453, MPFR_RNDN);
        mpfr_cbrt(r30464455, r30464454, MPFR_RNDN);
        return mpfr_get_d(r30464455, MPFR_RNDN);
}

static mpfr_t r30464456, r30464457, r30464458, r30464459, r30464460, r30464461, r30464462, r30464463, r30464464, r30464465, r30464466, r30464467, r30464468, r30464469, r30464470, r30464471, r30464472, r30464473, r30464474, r30464475, r30464476;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30464456, "4", 10, MPFR_RNDN);
        mpfr_init(r30464457);
        mpfr_init_set_str(r30464458, "3", 10, MPFR_RNDN);
        mpfr_init(r30464459);
        mpfr_init(r30464460);
        mpfr_init_set_str(r30464461, "1", 10, MPFR_RNDN);
        mpfr_init(r30464462);
        mpfr_init(r30464463);
        mpfr_init(r30464464);
        mpfr_init(r30464465);
        mpfr_init_set_str(r30464466, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464467, "6", 10, MPFR_RNDN);
        mpfr_init(r30464468);
        mpfr_init(r30464469);
        mpfr_init(r30464470);
        mpfr_init(r30464471);
        mpfr_init(r30464472);
        mpfr_init(r30464473);
        mpfr_init(r30464474);
        mpfr_init(r30464475);
        mpfr_init(r30464476);
}

double f_dm(double v) {
        ;
        mpfr_const_pi(r30464457, MPFR_RNDN);
        ;
        mpfr_mul(r30464459, r30464457, r30464458, MPFR_RNDN);
        mpfr_div(r30464460, r30464456, r30464459, MPFR_RNDN);
        ;
        mpfr_set_d(r30464462, v, MPFR_RNDN);
        mpfr_mul(r30464463, r30464462, r30464462, MPFR_RNDN);
        mpfr_sub(r30464464, r30464461, r30464463, MPFR_RNDN);
        mpfr_div(r30464465, r30464460, r30464464, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r30464468, r30464467, r30464462, MPFR_RNDN);
        mpfr_mul(r30464469, r30464462, r30464468, MPFR_RNDN);
        mpfr_sub(r30464470, r30464466, r30464469, MPFR_RNDN);
        mpfr_div(r30464471, r30464465, r30464470, MPFR_RNDN);
        mpfr_mul(r30464472, r30464465, r30464471, MPFR_RNDN);
        mpfr_sqrt(r30464473, r30464470, MPFR_RNDN);
        mpfr_div(r30464474, r30464473, r30464465, MPFR_RNDN);
        mpfr_div(r30464475, r30464472, r30464474, MPFR_RNDN);
        mpfr_cbrt(r30464476, r30464475, MPFR_RNDN);
        return mpfr_get_d(r30464476, MPFR_RNDN);
}

