#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 r10993 = 4;
        float r10994 = 3;
        float r10995 = atan2(1.0, 0.0);
        float r10996 = r10994 * r10995;
        float r10997 = 1;
        float r10998 = v;
        float r10999 = r10998 * r10998;
        float r11000 = r10997 - r10999;
        float r11001 = r10996 * r11000;
        float r11002 = 2;
        float r11003 = 6;
        float r11004 = r11003 * r10999;
        float r11005 = r11002 - r11004;
        float r11006 = sqrt(r11005);
        float r11007 = r11001 * r11006;
        float r11008 = r10993 / r11007;
        return r11008;
}

double f_id(double v) {
        double r11009 = 4;
        double r11010 = 3;
        double r11011 = atan2(1.0, 0.0);
        double r11012 = r11010 * r11011;
        double r11013 = 1;
        double r11014 = v;
        double r11015 = r11014 * r11014;
        double r11016 = r11013 - r11015;
        double r11017 = r11012 * r11016;
        double r11018 = 2;
        double r11019 = 6;
        double r11020 = r11019 * r11015;
        double r11021 = r11018 - r11020;
        double r11022 = sqrt(r11021);
        double r11023 = r11017 * r11022;
        double r11024 = r11009 / r11023;
        return r11024;
}


double f_of(float v) {
        float r11025 = 4;
        float r11026 = atan2(1.0, 0.0);
        float r11027 = 3;
        float r11028 = r11026 * r11027;
        float r11029 = r11025 / r11028;
        float r11030 = 1;
        float r11031 = v;
        float r11032 = r11031 * r11031;
        float r11033 = r11030 - r11032;
        float r11034 = r11029 / r11033;
        float r11035 = 6;
        float r11036 = -r11035;
        float r11037 = 2;
        float r11038 = fma(r11036, r11032, r11037);
        float r11039 = sqrt(r11038);
        float r11040 = r11034 / r11039;
        float r11041 = pow(r11040, r11027);
        float r11042 = cbrt(r11041);
        return r11042;
}

double f_od(double v) {
        double r11043 = 4;
        double r11044 = atan2(1.0, 0.0);
        double r11045 = 3;
        double r11046 = r11044 * r11045;
        double r11047 = r11043 / r11046;
        double r11048 = 1;
        double r11049 = v;
        double r11050 = r11049 * r11049;
        double r11051 = r11048 - r11050;
        double r11052 = r11047 / r11051;
        double r11053 = 6;
        double r11054 = -r11053;
        double r11055 = 2;
        double r11056 = fma(r11054, r11050, r11055);
        double r11057 = sqrt(r11056);
        double r11058 = r11052 / r11057;
        double r11059 = pow(r11058, r11045);
        double r11060 = cbrt(r11059);
        return r11060;
}

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 r11061, r11062, r11063, r11064, r11065, r11066, r11067, r11068, r11069, r11070, r11071, r11072, r11073, r11074, r11075, r11076;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11061, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r11062, "3", 10, MPFR_RNDN);
        mpfr_init(r11063);
        mpfr_init(r11064);
        mpfr_init_set_str(r11065, "1", 10, MPFR_RNDN);
        mpfr_init(r11066);
        mpfr_init(r11067);
        mpfr_init(r11068);
        mpfr_init(r11069);
        mpfr_init_set_str(r11070, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r11071, "6", 10, MPFR_RNDN);
        mpfr_init(r11072);
        mpfr_init(r11073);
        mpfr_init(r11074);
        mpfr_init(r11075);
        mpfr_init(r11076);
}

double f_im(double v) {
        ;
        ;
        mpfr_const_pi(r11063, MPFR_RNDN);
        mpfr_mul(r11064, r11062, r11063, MPFR_RNDN);
        ;
        mpfr_set_d(r11066, v, MPFR_RNDN);
        mpfr_mul(r11067, r11066, r11066, MPFR_RNDN);
        mpfr_sub(r11068, r11065, r11067, MPFR_RNDN);
        mpfr_mul(r11069, r11064, r11068, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r11072, r11071, r11067, MPFR_RNDN);
        mpfr_sub(r11073, r11070, r11072, MPFR_RNDN);
        mpfr_sqrt(r11074, r11073, MPFR_RNDN);
        mpfr_mul(r11075, r11069, r11074, MPFR_RNDN);
        mpfr_div(r11076, r11061, r11075, MPFR_RNDN);
        return mpfr_get_d(r11076, MPFR_RNDN);
}

static mpfr_t r11077, r11078, r11079, r11080, r11081, r11082, r11083, r11084, r11085, r11086, r11087, r11088, r11089, r11090, r11091, r11092, r11093, r11094;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11077, "4", 10, MPFR_RNDN);
        mpfr_init(r11078);
        mpfr_init_set_str(r11079, "3", 10, MPFR_RNDN);
        mpfr_init(r11080);
        mpfr_init(r11081);
        mpfr_init_set_str(r11082, "1", 10, MPFR_RNDN);
        mpfr_init(r11083);
        mpfr_init(r11084);
        mpfr_init(r11085);
        mpfr_init(r11086);
        mpfr_init_set_str(r11087, "6", 10, MPFR_RNDN);
        mpfr_init(r11088);
        mpfr_init_set_str(r11089, "2", 10, MPFR_RNDN);
        mpfr_init(r11090);
        mpfr_init(r11091);
        mpfr_init(r11092);
        mpfr_init(r11093);
        mpfr_init(r11094);
}

double f_fm(double v) {
        ;
        mpfr_const_pi(r11078, MPFR_RNDN);
        ;
        mpfr_mul(r11080, r11078, r11079, MPFR_RNDN);
        mpfr_div(r11081, r11077, r11080, MPFR_RNDN);
        ;
        mpfr_set_d(r11083, v, MPFR_RNDN);
        mpfr_mul(r11084, r11083, r11083, MPFR_RNDN);
        mpfr_sub(r11085, r11082, r11084, MPFR_RNDN);
        mpfr_div(r11086, r11081, r11085, MPFR_RNDN);
        ;
        mpfr_neg(r11088, r11087, MPFR_RNDN);
        ;
        mpfr_fma(r11090, r11088, r11084, r11089, MPFR_RNDN);
        mpfr_sqrt(r11091, r11090, MPFR_RNDN);
        mpfr_div(r11092, r11086, r11091, MPFR_RNDN);
        mpfr_pow(r11093, r11092, r11079, MPFR_RNDN);
        mpfr_cbrt(r11094, r11093, MPFR_RNDN);
        return mpfr_get_d(r11094, MPFR_RNDN);
}

static mpfr_t r11095, r11096, r11097, r11098, r11099, r11100, r11101, r11102, r11103, r11104, r11105, r11106, r11107, r11108, r11109, r11110, r11111, r11112;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11095, "4", 10, MPFR_RNDN);
        mpfr_init(r11096);
        mpfr_init_set_str(r11097, "3", 10, MPFR_RNDN);
        mpfr_init(r11098);
        mpfr_init(r11099);
        mpfr_init_set_str(r11100, "1", 10, MPFR_RNDN);
        mpfr_init(r11101);
        mpfr_init(r11102);
        mpfr_init(r11103);
        mpfr_init(r11104);
        mpfr_init_set_str(r11105, "6", 10, MPFR_RNDN);
        mpfr_init(r11106);
        mpfr_init_set_str(r11107, "2", 10, MPFR_RNDN);
        mpfr_init(r11108);
        mpfr_init(r11109);
        mpfr_init(r11110);
        mpfr_init(r11111);
        mpfr_init(r11112);
}

double f_dm(double v) {
        ;
        mpfr_const_pi(r11096, MPFR_RNDN);
        ;
        mpfr_mul(r11098, r11096, r11097, MPFR_RNDN);
        mpfr_div(r11099, r11095, r11098, MPFR_RNDN);
        ;
        mpfr_set_d(r11101, v, MPFR_RNDN);
        mpfr_mul(r11102, r11101, r11101, MPFR_RNDN);
        mpfr_sub(r11103, r11100, r11102, MPFR_RNDN);
        mpfr_div(r11104, r11099, r11103, MPFR_RNDN);
        ;
        mpfr_neg(r11106, r11105, MPFR_RNDN);
        ;
        mpfr_fma(r11108, r11106, r11102, r11107, MPFR_RNDN);
        mpfr_sqrt(r11109, r11108, MPFR_RNDN);
        mpfr_div(r11110, r11104, r11109, MPFR_RNDN);
        mpfr_pow(r11111, r11110, r11097, MPFR_RNDN);
        mpfr_cbrt(r11112, r11111, MPFR_RNDN);
        return mpfr_get_d(r11112, MPFR_RNDN);
}

