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

char *name = "Falkner and Boettcher, Appendix B, 2";

double f_if(float v) {
        float r11215 = 2;
        float r11216 = sqrt(r11215);
        float r11217 = 4;
        float r11218 = r11216 / r11217;
        float r11219 = 1;
        float r11220 = 3;
        float r11221 = v;
        float r11222 = r11221 * r11221;
        float r11223 = r11220 * r11222;
        float r11224 = r11219 - r11223;
        float r11225 = sqrt(r11224);
        float r11226 = r11218 * r11225;
        float r11227 = r11219 - r11222;
        float r11228 = r11226 * r11227;
        return r11228;
}

double f_id(double v) {
        double r11229 = 2;
        double r11230 = sqrt(r11229);
        double r11231 = 4;
        double r11232 = r11230 / r11231;
        double r11233 = 1;
        double r11234 = 3;
        double r11235 = v;
        double r11236 = r11235 * r11235;
        double r11237 = r11234 * r11236;
        double r11238 = r11233 - r11237;
        double r11239 = sqrt(r11238);
        double r11240 = r11232 * r11239;
        double r11241 = r11233 - r11236;
        double r11242 = r11240 * r11241;
        return r11242;
}


double f_of(float v) {
        float r11243 = 2;
        float r11244 = sqrt(r11243);
        float r11245 = 4;
        float r11246 = r11244 / r11245;
        float r11247 = 1;
        float r11248 = 3;
        float r11249 = v;
        float r11250 = r11249 * r11249;
        float r11251 = r11248 * r11250;
        float r11252 = r11247 - r11251;
        float r11253 = sqrt(r11252);
        float r11254 = r11246 * r11253;
        float r11255 = r11247 - r11250;
        float r11256 = r11254 * r11255;
        return r11256;
}

double f_od(double v) {
        double r11257 = 2;
        double r11258 = sqrt(r11257);
        double r11259 = 4;
        double r11260 = r11258 / r11259;
        double r11261 = 1;
        double r11262 = 3;
        double r11263 = v;
        double r11264 = r11263 * r11263;
        double r11265 = r11262 * r11264;
        double r11266 = r11261 - r11265;
        double r11267 = sqrt(r11266);
        double r11268 = r11260 * r11267;
        double r11269 = r11261 - r11264;
        double r11270 = r11268 * r11269;
        return r11270;
}

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 r11271, r11272, r11273, r11274, r11275, r11276, r11277, r11278, r11279, r11280, r11281, r11282, r11283, r11284;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11271, "2", 10, MPFR_RNDN);
        mpfr_init(r11272);
        mpfr_init_set_str(r11273, "4", 10, MPFR_RNDN);
        mpfr_init(r11274);
        mpfr_init_set_str(r11275, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11276, "3", 10, MPFR_RNDN);
        mpfr_init(r11277);
        mpfr_init(r11278);
        mpfr_init(r11279);
        mpfr_init(r11280);
        mpfr_init(r11281);
        mpfr_init(r11282);
        mpfr_init(r11283);
        mpfr_init(r11284);
}

double f_im(double v) {
        ;
        mpfr_sqrt(r11272, r11271, MPFR_RNDN);
        ;
        mpfr_div(r11274, r11272, r11273, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r11277, v, MPFR_RNDN);
        mpfr_mul(r11278, r11277, r11277, MPFR_RNDN);
        mpfr_mul(r11279, r11276, r11278, MPFR_RNDN);
        mpfr_sub(r11280, r11275, r11279, MPFR_RNDN);
        mpfr_sqrt(r11281, r11280, MPFR_RNDN);
        mpfr_mul(r11282, r11274, r11281, MPFR_RNDN);
        mpfr_sub(r11283, r11275, r11278, MPFR_RNDN);
        mpfr_mul(r11284, r11282, r11283, MPFR_RNDN);
        return mpfr_get_d(r11284, MPFR_RNDN);
}

static mpfr_t r11285, r11286, r11287, r11288, r11289, r11290, r11291, r11292, r11293, r11294, r11295, r11296, r11297, r11298;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11285, "2", 10, MPFR_RNDN);
        mpfr_init(r11286);
        mpfr_init_set_str(r11287, "4", 10, MPFR_RNDN);
        mpfr_init(r11288);
        mpfr_init_set_str(r11289, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11290, "3", 10, MPFR_RNDN);
        mpfr_init(r11291);
        mpfr_init(r11292);
        mpfr_init(r11293);
        mpfr_init(r11294);
        mpfr_init(r11295);
        mpfr_init(r11296);
        mpfr_init(r11297);
        mpfr_init(r11298);
}

double f_fm(double v) {
        ;
        mpfr_sqrt(r11286, r11285, MPFR_RNDN);
        ;
        mpfr_div(r11288, r11286, r11287, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r11291, v, MPFR_RNDN);
        mpfr_mul(r11292, r11291, r11291, MPFR_RNDN);
        mpfr_mul(r11293, r11290, r11292, MPFR_RNDN);
        mpfr_sub(r11294, r11289, r11293, MPFR_RNDN);
        mpfr_sqrt(r11295, r11294, MPFR_RNDN);
        mpfr_mul(r11296, r11288, r11295, MPFR_RNDN);
        mpfr_sub(r11297, r11289, r11292, MPFR_RNDN);
        mpfr_mul(r11298, r11296, r11297, MPFR_RNDN);
        return mpfr_get_d(r11298, MPFR_RNDN);
}

static mpfr_t r11299, r11300, r11301, r11302, r11303, r11304, r11305, r11306, r11307, r11308, r11309, r11310, r11311, r11312;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r11299, "2", 10, MPFR_RNDN);
        mpfr_init(r11300);
        mpfr_init_set_str(r11301, "4", 10, MPFR_RNDN);
        mpfr_init(r11302);
        mpfr_init_set_str(r11303, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11304, "3", 10, MPFR_RNDN);
        mpfr_init(r11305);
        mpfr_init(r11306);
        mpfr_init(r11307);
        mpfr_init(r11308);
        mpfr_init(r11309);
        mpfr_init(r11310);
        mpfr_init(r11311);
        mpfr_init(r11312);
}

double f_dm(double v) {
        ;
        mpfr_sqrt(r11300, r11299, MPFR_RNDN);
        ;
        mpfr_div(r11302, r11300, r11301, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r11305, v, MPFR_RNDN);
        mpfr_mul(r11306, r11305, r11305, MPFR_RNDN);
        mpfr_mul(r11307, r11304, r11306, MPFR_RNDN);
        mpfr_sub(r11308, r11303, r11307, MPFR_RNDN);
        mpfr_sqrt(r11309, r11308, MPFR_RNDN);
        mpfr_mul(r11310, r11302, r11309, MPFR_RNDN);
        mpfr_sub(r11311, r11303, r11306, MPFR_RNDN);
        mpfr_mul(r11312, r11310, r11311, MPFR_RNDN);
        return mpfr_get_d(r11312, MPFR_RNDN);
}

